//+------------------------------------------------------------------+ //| MacdACSignals.mq4.mq4 | //| Tonkonog G.S., 2009 | //| hurricane79@yandex.ru | //+------------------------------------------------------------------+ #property copyright "Tonkonog G.S., 2009" #property link "hurricane79@yandex.ru" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Gold #property indicator_color2 Red //---- input parameters extern int barsToProcess=500; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,236); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,238); SetIndexBuffer(1,ExtMapBuffer2); SetIndexEmptyValue(1,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(), limit; //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if(limit>barsToProcess) limit=barsToProcess; //---- for(int i=0;i<limit;i++) { double MacdCurrent, MacdPrevious, SignalCurrent, SignalPrevious, AC1,AC2,AC3,AC4,AC5, AC1_1,AC2_1,AC3_1,AC4_1,AC5_1, AC1_2,AC2_2,AC3_2,AC4_2,AC5_2, AC1_3,AC2_3,AC3_3,AC4_3,AC5_3, AC1_4,AC2_4,AC3_4,AC4_4,AC5_4; MacdCurrent=iMACD(NULL,0,5,34,5,PRICE_CLOSE,MODE_MAIN,i); MacdPrevious=iMACD(NULL,0,5,34,5,PRICE_CLOSE,MODE_MAIN,i+1); SignalCurrent=iMACD(NULL,0,5,34,5,PRICE_CLOSE,MODE_SIGNAL,i); SignalPrevious=iMACD(NULL,0,5,34,5,PRICE_CLOSE,MODE_SIGNAL,i+1); AC1=iAC(NULL,0,i); AC1_1=iAC(NULL,0,i+1); AC1_2=iAC(NULL,0,i+2); AC2=iAC(NULL,0,i+1); AC2_1=iAC(NULL,0,i+2); AC2_2=iAC(NULL,0,i+3); AC3=iAC(NULL,0,i+2); AC3_1=iAC(NULL,0,i+3); AC3_2=iAC(NULL,0,i+4); AC4=iAC(NULL,0,i+3); AC4_1=iAC(NULL,0,i+4); AC4_2=iAC(NULL,0,i+5); AC5=iAC(NULL,0,i+4); AC5_1=iAC(NULL,0,i+5); AC5_2=iAC(NULL,0,i+6); AC1_3=iAC(NULL,0,i+3); AC1_4=iAC(NULL,0,i+4); AC2_3=iAC(NULL,0,i+4); AC2_4=iAC(NULL,0,i+5); AC3_3=iAC(NULL,0,i+5); AC3_4=iAC(NULL,0,i+6); AC4_3=iAC(NULL,0,i+6); AC4_4=iAC(NULL,0,i+7); AC5_3=iAC(NULL,0,i+7); AC5_4=iAC(NULL,0,i+8); //--Ïðîâåðêà íàëè÷èÿ ñèãíàëà íà ïîêóïêó--------------------------------------------------------------------------------------+ if((MacdCurrent>0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious) && (((AC4>0 && AC3>0 && AC2>0 && AC1>0) && (AC4>AC3 && AC2>AC3 && AC1>AC2)) || //... íà íóëåâîì áàðå + ((AC4<0 && AC3<0 && AC2<0 && AC1>0) && (AC4>AC3 && AC2>AC3 && AC1>AC2)) || // åñòü îäèí èç òð¸õ + ((AC5<0 && AC4<0 && AC3<0 && AC2<0 && AC1<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5>AC4 && AC4<AC3 && AC3<AC2 && AC2<AC1)))) // + ExtMapBuffer1[i]=High[i]+15*Point; if((MacdCurrent>0 && MacdPrevious<0) && // Åñëè MACD-ãèñòîãðàììà ïåðåøëà ÷åðåç íîëü è ... + (((AC4>0 && AC3>0 && AC2>0 && AC1>0) && (AC4>AC3 && AC2>AC3 && AC1>AC2)) || //... íà íóëåâîì áàðå + ((AC4<0 && AC3<0 && AC2<0 && AC1>0) && (AC4>AC3 && AC2>AC3 && AC1>AC2)) || // åñòü îäèí èç òð¸õ + ((AC5<0 && AC4<0 && AC3<0 && AC2<0 && AC1<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5>AC4 && AC4<AC3 && AC3<AC2 && AC2<AC1)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious) && (((AC4_1>0 && AC3_1>0 && AC2_1>0 && AC1_1>0) && (AC4_1>AC3_1 && AC2_1>AC3_1 && AC1_1>AC2_1)) || // ... íà ïåðâîì áàðå + ((AC4_1<0 && AC3_1<0 && AC2_1<0 && AC1_1>0) && (AC4_1>AC3_1 && AC2_1>AC3_1 && AC1_1>AC2_1)) || // åñòü îäèí èç òð¸õ + ((AC5_1<0 && AC4_1<0 && AC3_1<0 && AC2_1<0 && AC1_1<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_1>AC4_1 && AC4_1<AC3_1 && AC3_1<AC2_1 && AC2_1<AC1_1)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdPrevious<0) && // Åñëè MACD-ãèñòîãðàììà ïåðåøëà ÷åðåç íîëü è ... + (((AC4_1>0 && AC3_1>0 && AC2_1>0 && AC1_1>0) && (AC4_1>AC3_1 && AC2_1>AC3_1 && AC1_1>AC2_1)) || // ... íà ïåðâîì áàðå + ((AC4_1<0 && AC3_1<0 && AC2_1<0 && AC1_1>0) && (AC4_1>AC3_1 && AC2_1>AC3_1 && AC1_1>AC2_1)) || // åñòü îäèí èç òð¸õ + ((AC5_1<0 && AC4_1<0 && AC3_1<0 && AC2_1<0 && AC1_1<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_1>AC4_1 && AC4_1<AC3_1 && AC3_1<AC2_1 && AC2_1<AC1_1)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious) && (((AC4_2>0 && AC3_2>0 && AC2_2>0 && AC1_2>0) && (AC4_2>AC3_2 && AC2_2>AC3_2 && AC1_2>AC2_2)) || // ... íà âòîðîì áàðå + ((AC4_2<0 && AC3_2<0 && AC2_2<0 && AC1_2>0) && (AC4_2>AC3_2 && AC2_2>AC3_2 && AC1_2>AC2_2)) || // åñòü îäèí èç òð¸õ + ((AC5_2<0 && AC4_2<0 && AC3_2<0 && AC2_2<0 && AC1_2<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_2>AC4_2 && AC4_2<AC3_2 && AC3_2<AC2_2 && AC2_2<AC1_2)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdPrevious<0) && // Åñëè MACD-ãèñòîãðàììà ïåðåøëà ÷åðåç íîëü è ... + (((AC4_2>0 && AC3_2>0 && AC2_2>0 && AC1_2>0) && (AC4_2>AC3_2 && AC2_2>AC3_2 && AC1_2>AC2_2)) || // ... íà âòîðîì áàðå + ((AC4_2<0 && AC3_2<0 && AC2_2<0 && AC1_2>0) && (AC4_2>AC3_2 && AC2_2>AC3_2 && AC1_2>AC2_2)) || // åñòü îäèí èç òð¸õ + ((AC5_2<0 && AC4_2<0 && AC3_2<0 && AC2_2<0 && AC1_2<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_2>AC4_2 && AC4_2<AC3_2 && AC3_2<AC2_2 && AC2_2<AC1_2)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious) && (((AC4_3>0 && AC3_3>0 && AC2_3>0 && AC1_3>0) && (AC4_3>AC3_3 && AC2_3>AC3_3 && AC1_3>AC2_3)) || // ... íà òðåòüåì áàðå + ((AC4_3<0 && AC3_3<0 && AC2_3<0 && AC1_3>0) && (AC4_3>AC3_3 && AC2_3>AC3_3 && AC1_3>AC2_3)) || // åñòü îäèí èç òð¸õ + ((AC5_3<0 && AC4_3<0 && AC3_3<0 && AC2_3<0 && AC1_3<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_3>AC4_3 && AC4_3<AC3_3 && AC3_3<AC2_3 && AC2_3<AC1_3)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdPrevious<0) && // Åñëè MACD-ãèñòîãðàììà ïåðåøëà ÷åðåç íîëü è ... + (((AC4_3>0 && AC3_3>0 && AC2_3>0 && AC1_3>0) && (AC4_3>AC3_3 && AC2_3>AC3_3 && AC1_3>AC2_3)) || // ... íà òðåòüåì áàðå + ((AC4_3<0 && AC3_3<0 && AC2_3<0 && AC1_3>0) && (AC4_3>AC3_3 && AC2_3>AC3_3 && AC1_3>AC2_3)) || // åñòü îäèí èç òð¸õ + ((AC5_3<0 && AC4_3<0 && AC3_3<0 && AC2_3<0 && AC1_3<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_3>AC4_3 && AC4_3<AC3_3 && AC3_3<AC2_3 && AC2_3<AC1_3)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious) && (((AC4_4>0 && AC3_4>0 && AC2_4>0 && AC1_4>0) && (AC4_4>AC3_4 && AC2_4>AC3_4 && AC1_4>AC2_4)) ||//... íà ÷åòâ¸ðòîì áàðå + ((AC4_4<0 && AC3_4<0 && AC2_4<0 && AC1_4>0) && (AC4_4>AC3_4 && AC2_4>AC3_4 && AC1_4>AC2_4)) || // åñòü îäèí èç òð¸õ + ((AC5_4<0 && AC4_4<0 && AC3_4<0 && AC2_4<0 && AC1_4<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_4>AC4_4 && AC4_4<AC3_4 && AC3_4<AC2_4 && AC2_4<AC1_4)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + if((MacdCurrent>0 && MacdPrevious<0) && // Åñëè MACD-ãèñòîãðàììà ïåðåøëà ÷åðåç íîëü è ... + (((AC4_4>0 && AC3_4>0 && AC2_4>0 && AC1_4>0) && (AC4_4>AC3_4 && AC2_4>AC3_4 && AC1_4>AC2_4)) ||//... íà ÷åòâ¸ðòîì áàðå + ((AC4_4<0 && AC3_4<0 && AC2_4<0 && AC1_4>0) && (AC4_4>AC3_4 && AC2_4>AC3_4 && AC1_4>AC2_4)) || // åñòü îäèí èç òð¸õ + ((AC5_4<0 && AC4_4<0 && AC3_4<0 && AC2_4<0 && AC1_4<0) && // ñèãíàëîâ îò ÀÑ òî ... + (AC5_4>AC4_4 && AC4_4<AC3_4 && AC3_4<AC2_4 && AC2_4<AC1_4)))) // + ExtMapBuffer1[i]=High[i]+15*Point; // ... ðèñóåì ñòðåëêó + //--Ïðîâåðêà íàëè÷èÿ ñèãíàëà íà ïðîäàæó--------------------------------------------------------------------------------------+ if((MacdCurrent<0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious) && (((AC4<0 && AC3<0 && AC2<0 && AC1<0) && (AC4<AC3 && AC2<AC3 && AC1<AC2)) || ((AC4>0 && AC3>0 && AC2>0 && AC1<0) && (AC4<AC3 && AC2<AC3 && AC1<AC2)) || ((AC5>0 && AC4>0 && AC3>0 && AC2>0 && AC1>0) && (AC5<AC4 && AC4>AC3 && AC3>AC2 && AC2>AC1)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdPrevious>0) && (((AC4<0 && AC3<0 && AC2<0 && AC1<0) && (AC4<AC3 && AC2<AC3 && AC1<AC2)) || ((AC4>0 && AC3>0 && AC2>0 && AC1<0) && (AC4<AC3 && AC2<AC3 && AC1<AC2)) || ((AC5>0 && AC4>0 && AC3>0 && AC2>0 && AC1>0) && (AC5<AC4 && AC4>AC3 && AC3>AC2 && AC2>AC1)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious) && (((AC4_1<0 && AC3_1<0 && AC2_1<0 && AC1_1<0) && (AC4_1<AC3_1 && AC2_1<AC3_1 && AC1_1<AC2_1)) || ((AC4_1>0 && AC3_1>0 && AC2_1>0 && AC1_1<0) && (AC4_1<AC3_1 && AC2_1<AC3_1 && AC1_1<AC2_1)) || ((AC5_1>0 && AC4_1>0 && AC3_1>0 && AC2_1>0 && AC1_1>0) && (AC5_1<AC4_1 && AC4_1>AC3_1 && AC3_1>AC2_1 && AC2_1>AC1_1)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdPrevious>0) && (((AC4_1<0 && AC3_1<0 && AC2_1<0 && AC1_1<0) && (AC4_1<AC3_1 && AC2_1<AC3_1 && AC1_1<AC2_1)) || ((AC4_1>0 && AC3_1>0 && AC2_1>0 && AC1_1<0) && (AC4_1<AC3_1 && AC2_1<AC3_1 && AC1_1<AC2_1)) || ((AC5_1>0 && AC4_1>0 && AC3_1>0 && AC2_1>0 && AC1_1>0) && (AC5_1<AC4_1 && AC4_1>AC3_1 && AC3_1>AC2_1 && AC2_1>AC1_1)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious) && (((AC4_2<0 && AC3_2<0 && AC2_2<0 && AC1_2<0) && (AC4_2<AC3_2 && AC2_2<AC3_2 && AC1_2<AC2_2)) || ((AC4_2>0 && AC3_2>0 && AC2_2>0 && AC1_2<0) && (AC4_2<AC3_2 && AC2_2<AC3_2 && AC1_2<AC2_2)) || ((AC5_2>0 && AC4_2>0 && AC3_2>0 && AC2_2>0 && AC1_2>0) && (AC5_2<AC4_2 && AC4_2>AC3_2 && AC3_2>AC2_2 && AC2_2>AC1_2)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdPrevious>0) && (((AC4_2<0 && AC3_2<0 && AC2_2<0 && AC1_2<0) && (AC4_2<AC3_2 && AC2_2<AC3_2 && AC1_2<AC2_2)) || ((AC4_2>0 && AC3_2>0 && AC2_2>0 && AC1_2<0) && (AC4_2<AC3_2 && AC2_2<AC3_2 && AC1_2<AC2_2)) || ((AC5_2>0 && AC4_2>0 && AC3_2>0 && AC2_2>0 && AC1_2>0) && (AC5_2<AC4_2 && AC4_2>AC3_2 && AC3_2>AC2_2 && AC2_2>AC1_2)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious) && (((AC4_3<0 && AC3_3<0 && AC2_3<0 && AC1_3<0) && (AC4_3<AC3_3 && AC2_3<AC3_3 && AC1_3<AC2_3)) || ((AC4_3>0 && AC3_3>0 && AC2_3>0 && AC1_3<0) && (AC4_3<AC3_3 && AC2_3<AC3_3 && AC1_3<AC2_3)) || ((AC5_3>0 && AC4_3>0 && AC3_3>0 && AC2_3>0 && AC1_3>0) && (AC5_3<AC4_3 && AC4_3>AC3_3 && AC3_3>AC2_3 && AC2_3>AC1_3)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdPrevious>0) && (((AC4_3<0 && AC3_3<0 && AC2_3<0 && AC1_3<0) && (AC4_3<AC3_3 && AC2_3<AC3_3 && AC1_3<AC2_3)) || ((AC4_3>0 && AC3_3>0 && AC2_3>0 && AC1_3<0) && (AC4_3<AC3_3 && AC2_3<AC3_3 && AC1_3<AC2_3)) || ((AC5_3>0 && AC4_3>0 && AC3_3>0 && AC2_3>0 && AC1_3>0) && (AC5_3<AC4_3 && AC4_3>AC3_3 && AC3_3>AC2_3 && AC2_3>AC1_3)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious) && (((AC4_4<0 && AC3_4<0 && AC2_4<0 && AC1_4<0) && (AC4_4<AC3_4 && AC2_4<AC3_4 && AC1_4<AC2_4)) || ((AC4_4>0 && AC3_4>0 && AC2_4>0 && AC1_4<0) && (AC4_4<AC3_4 && AC2_4<AC3_4 && AC1_4<AC2_4)) || ((AC5_4>0 && AC4_4>0 && AC3_4>0 && AC2_4>0 && AC1_4>0) && (AC5_4<AC4_4 && AC4_4>AC3_4 && AC3_4>AC2_4 && AC2_4>AC1_4)))) ExtMapBuffer2[i]=Low[i]-15*Point; if((MacdCurrent<0 && MacdPrevious>0) && (((AC4_4<0 && AC3_4<0 && AC2_4<0 && AC1_4<0) && (AC4_4<AC3_4 && AC2_4<AC3_4 && AC1_4<AC2_4)) || ((AC4_4>0 && AC3_4>0 && AC2_4>0 && AC1_4<0) && (AC4_4<AC3_4 && AC2_4<AC3_4 && AC1_4<AC2_4)) || ((AC5_4>0 && AC4_4>0 && AC3_4>0 && AC2_4>0 && AC1_4>0) && (AC5_4<AC4_4 && AC4_4>AC3_4 && AC3_4>AC2_4 && AC2_4>AC1_4)))) ExtMapBuffer2[i]=Low[i]-15*Point; } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Bill Williams Accelerator/Decelerator oscillator
MACD Histogram
Custom Indicators Used:
Order Management characteristics:
Other Features: