Author: Fateev
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
Val_Bars
//+------------------------------------------------------------------+
//|                                                     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