// 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<CountBars-1) count++;
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)+")");
}
Comments