//+------------------------------------------------------------------+ //| Áîëüøàÿ Êîëëåêöèÿ Ñåìàôîðîâ.mq4 | //+------------------------------------------------------------------+ #property copyright "Ñåðãååâ Àëåêñåé (ñ) 2007" #property indicator_separate_window #property indicator_minimum -110 #property indicator_maximum 110 #property indicator_buffers 4 #property indicator_color1 Crimson #property indicator_color2 LimeGreen #property indicator_color3 Red #property indicator_color4 Red #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 1 #property indicator_width4 2 #property indicator_style1 STYLE_SOLID #property indicator_style2 STYLE_SOLID #property indicator_style3 STYLE_DOT #property indicator_style4 STYLE_SOLID extern int PeriodStep=10; // Øàã ïåðèîäà ñêîëüçÿùèõ extern int Slowing=3; // Çàìåäëåíèå îñíîâíîé ëèíèè (ñèãíàëüíàÿ ëèíèÿ) extern int CountBar=5000; //ñêîëüêî áàðîâ ñ÷èòàòü extern int Mode=MODE_SMA; //0-sma, 1-ema, 2-smma, 3-lwma extern int Price=PRICE_CLOSE; //0-close, 1-open, 2-high, 3-low, 4-median, 5-typic, 6-wieight //---- buffers double Buy[]; double Sell[]; double buffer[]; double Signal[]; void init() { SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,Sell); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,Buy); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,buffer); SetIndexLabel(2,"Value"); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,Signal); SetIndexLabel(3,"Signal"); IndicatorShortName("Ñèëà òðåíäà ("+PeriodStep +","+Slowing+")"); return(0); } void start() { int value, i; int step=1; if (PeriodStep>1) step=PeriodStep; double x0, x1, x2, x3, x4, x5, x6; for (i=0; i<=CountBar; i++) { x0=Close[i]; x1=iMA(NULL,0,1*step,0,Mode,Price,i); x2=iMA(NULL,0,2*step,0,Mode,Price,i); x3=iMA(NULL,0,3*step,0,Mode,Price,i); x4=iMA(NULL,0,4*step,0,Mode,Price,i); x5=iMA(NULL,0,5*step,0,Mode,Price,i); x6=iMA(NULL,0,6*step,0,Mode,Price,i); value=0; if (x1<x0) value++; if (x2<x0) value++; if (x3<x0) value++; if (x4<x0) value++; if (x5<x0) value++; if (x6<x0) value++; if (x1>x0) value--; if (x2>x0) value--; if (x3>x0) value--; if (x4>x0) value--; if (x5>x0) value--; if (x6>x0) value--; buffer[i]=100*value/6; } for (i=0; i<=CountBar; i++) Signal[i]=iMAOnArray(buffer,0,Slowing,0,Mode,i); bool b=false, s=false; for (i=CountBar-1; i>=0; i--) { Buy[i]=0.0; Sell[i]=0.0; if (Signal[i]>buffer[i]) { Sell[i] = Signal[i]; b=false; s=true; } //ïðîäàåì else if (Signal[i]<buffer[i]) { Buy[i] = Signal[i]; b=true; s=false;}//ïîêóïàåì else { if (b) Buy[i]=Signal[i]; if (s) Sell[i]=Signal[i]; } } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Implements a curve of type DRAW_LINE
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: