// Ticker.mq4 // Индикатор #property copyright "mandorr@gmail.com" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Gray #property indicator_width1 1 #property indicator_style1 0 #property indicator_color2 Red #property indicator_width2 1 #property indicator_style2 2 extern int PeriodSMA=10; // Период сигнальной линии extern int CountBars=1000; // Количество отображаемых баров int count; int price; int price_prev; double period; double ticker[100]; // буфер тиков double signal[100]; // буфер сигнальной линии double buffer0[]; double buffer1[]; void init() { SetIndexBuffer(0,buffer0); SetIndexLabel(0,"Value"); SetIndexDrawBegin(0,0); SetIndexBuffer(1,buffer1); SetIndexLabel(1,"Signal"); SetIndexDrawBegin(1,0); count=ArrayResize(ticker,CountBars); count=ArrayResize(signal,CountBars); count=0; ArrayInitialize(signal,EMPTY_VALUE); // EMPTY_VALUE=+2147483647 price_prev=0; period=MathMax(1,PeriodSMA); } void start() { int i; double sum; price=MathRound(Bid/Point); if (price_prev==0) { count=0; price_prev=price; ticker[0]=price*Point; buffer0[0]=ticker[0]; IndicatorShortName("Ticker ("+count+") SMA ("+DoubleToStr(period,0)+")"); return; } if (price==price_prev) return; price_prev=price; for (i=count; i>=0; i--) { ticker[i+1]=ticker[i]; signal[i+1]=signal[i]; } ticker[0]=price*Point; if (count=period-1) { sum=0; for (i=0; i<=period-1; i++) sum+=ticker[i]; signal[0]=sum/period; } for (i=0; i<=count; i++) { buffer0[i]=ticker[i]; buffer1[i]=signal[i]; } IndicatorShortName("Ticker ("+count+") SMA ("+DoubleToStr(period,0)+")"); }