//+------------------------------------------------------------------+
//| Val_Bars.mq4 |
//| Fateev |
//| fateevvv@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Fateev"
#property link "fateevvv@yandex.ru"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Tomato
//---- input parameters
extern int n=25; // Êîëè÷åñòâî äíåé äëÿ âû÷èñëåíèÿ ñðåäíåé âîëàòèëüíîñòè
extern int History=5000; // Êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà
//---- buffers
double ExtMapBuffer1[]; // Ñðåäíÿÿ âîëàòèëüíîñòü
double ExtMapBuffer2[]; // Òåêóùàÿ âîëàòèëüíîñòü
bool Work=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,ExtMapBuffer2);
//---- name for DataWindow
SetIndexLabel(0,"Ñðåäíÿÿ âîëàòèëüíîñòü");
SetIndexLabel(1,"Òåêóùàÿ âîëàòèëüíîñòü");
switch(Period())
{
case 1: break;
case 5: break;
case 15: break;
case 30: break;
case 60: break;
case 240: break;
default: Alert("Èíäèêàòîð ðàáîòàåò òîëüêî íà âíóòðåäíåâíûõ áàðàõ"); Work=false;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if(Work==false) return;
double val_shift, av_val;
datetime current_Hour, current_Minute;
bool F=false;
int i,j,jj;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit = Bars - counted_bars;
if(counted_bars==0) limit-=1+n;
i=limit;
// if (i>History-1) // Åñëè ìíîãî áàðîâ òî ..
// i=History-1; // ..ðàññ÷èòûâàòü çàäàííîå êîëè÷.
while(i>=0)
{
current_Hour =TimeHour(Time[i]); //Çàïîìèíàåì òåêóùèé ÷àñ
current_Minute=TimeMinute(Time[i]); //Çàïîìèíàåì òåêóùóþ ìèíóòó
val_shift=0;
av_val=0;
j=0; //êîëè÷åñòâî ïîñ÷èòàííûõ ÷àñîâûõ áàðîâ
jj=i+1;
F=false; //Ôëàã íàõîäêè âñåõ n áàðîâ
while(F==false && jj<limit)
{
// if (jj>limit) break;
if(TimeMinute(Time[jj])==current_Minute && TimeHour(Time[jj])==current_Hour)
{
val_shift=val_shift+(High[jj]-Low[jj]);
j++;
}
if(j==n)
{
F=true; //Âñå n áàðîâ íàéäåíû
av_val=NormalizeDouble(val_shift/n,Digits);
}
jj++;
}
ExtMapBuffer1[i]=av_val;
ExtMapBuffer2[i]=High[i]-Low[i];
i--;
}
return(0);
}
//+------------------------------------------------------------------+
Comments