rvmGann_sv2_v1





/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                  rvmGann_sv2.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                      rvm_fam íà fromru òî÷êà êîì |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "rvm_fam íà fromru òî÷êà êîì"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 DodgerBlue
//---- input parameters
extern int       GSv_tend=2;
//---- buffers
double GSv_sl[];
double GSv_Up[];
bool initfl,draw_up,draw_dn;
bool curH,curL;
int sH,sL,lb,lhi,lli,fpoint,spoint;
int idFile;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION,STYLE_DOT);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID);
   SetIndexBuffer(0,GSv_sl);
   SetIndexBuffer(1,GSv_Up);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexLabel(0,"Dawn trend");
   SetIndexLabel(1,"Up trend");

   //FileDelete("GSv.txt");
   //idFile=FileOpen("GSv.txt",FILE_WRITE);
//----
   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int cb,ai,i,limit,index;
//---- 
   if( initfl!=1 )
   {
      myInit();
      if( initfl!=1 )
      {
         Alert("Ñáîé èíèöèàëèçàöèè èíäèêàòîðà!");
         return(-1);
      }
   }
   index=Bars-1;
   if( counted_bars>=0 )
   {
      if( index-counted_bars<=0 )
      {
         limit=0;
      }
      else
      {
         limit=index-counted_bars;
         if( limit>index-GSv_tend )
         {
            limit=index-GSv_tend;
         }
      }
   }
   else
   {
      Alert("Ñáîé ðàñ÷åòà èíäèêàòîðà!");
      return(-1);
   }
//FileWrite(idFile,"  Bars="+Bars+" index="+index+" limit="+limit+" counted_bars="+counted_bars);
//-------------------->> íà÷àëî öèêëà ïî áàðàì -------------------------------
for( cb=limit;cb>=0;cb-- )
{
   ai=index-cb;
//-------------------->> äåéñòâèÿ ïðèçâîäèìûå åñëè ïîÿâèëñÿ íîâûé áàð --------
if( lb!=ai )
{
   //FileWrite(idFile,"**Íîâûé áàð, ai="+ai+" "+TimeToStr(Time[cb]));
   lb=ai;
   //åñëè ïðåäûäóùèé áàð âíóòðåíèèé - îáíóëÿåì ñ÷åò÷èêè
   if( High[cb+1]<=High[cb+2] && Low[cb+1]>=Low[cb+2] )
   {
      sH=0;
      sL=0;
      //FileWrite(idFile,"  Ïðåäûäóùèé áàð âíóòðåííèé, ñ÷åò÷èêè îáíóëåíû "+sH+"  "+sL);
   }
   else
   {
      //åñëè ïðåäûäóùèé òîëüêî ìàêñèìóì
      if( High[cb+1]>High[cb+2] && Low[cb+1]>=Low[cb+2] )
      {
         sL=0;
         //FileWrite(idFile,"  Ïðåäûäóùèé-òîëüêî ìàêñèìóì, ñ÷åò÷èê ìèíèìóìîâ îáíóëåí "+sL);
      }
      else
      {
         //åñëè ïðåäûäóùèé òîëüêî ìèíèìóì
         if( High[cb+1]<=High[cb+2] && Low[cb+1]<Low[cb+2] )
         {
            sH=0;
            //FileWrite(idFile,"  Ïðåäûäóùèé-òîëüêî ìèíèìóì, ñ÷åò÷èê ìàêñèìóìîâ îáíóëåí "+sH);
         }
      }
   }
   //åñëè èíäèêàòîð ðèñîâàëñÿ ââåðõ
   if( draw_up==1 )
   {
      //FileWrite(idFile,"  èíäèêàòîð ðèñîâàëñÿ ââåðõ");
      //åñëè ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ
      if( sL==GSv_tend )
      {
         //FileWrite(idFile,"  ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ");
         // è ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ
         if( curL==1 || sH!=GSv_tend )
         {
            draw_up=0;
            draw_dn=1;
            fpoint=spoint;
            spoint=ai-1;
            //FileWrite(idFile,"  ïîñëåäíèì áûë ìèíèìóì, draw_up="+draw_up+" draw_dn="+draw_dn+" fpoint="+fpoint+" spoint="+spoint+" èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ");
         }
      }
      else
      {
         //èíà÷å åñëè ñ÷åò÷èê ìèíèìóìîâ íå äîñòèã íóæíîãî çíà÷åíèÿ
         //åñëè íà ïðåäûäóùåé ñâå÷êå áûë ìàêñèìóì è îí âûøå ïðåäûäóùåãî îòðèñîâàííîãî
         if( High[cb+1]>High[cb+2] && High[cb+1]>High[index-spoint] )
         {
            spoint=ai-1;
            //FileWrite(idFile,"  ìàêñèìóì íà ïðåä.ñâå÷êå âûøå ïðåäûäóùåãî îòðèñîâàííîãî, ìåíÿåì spoint="+spoint);
         }
      }
   }
   else
   {
      //èíà÷å åñëè èíäèêàòîð ðèñîâàëñÿ âíèç
      if( draw_dn==1 )
      {
         //FileWrite(idFile,"  èíäèêàòîð ðèñîâàëñÿ âíèç");
         //åñëè ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ
         if( sH==GSv_tend )
         {
            //FileWrite(idFile,"  ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ");
            //è ïîñëåäíèé - ìàêñèìóì èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ
            if( curH==1 || sL!=GSv_tend )
            {
               draw_up=1;
               draw_dn=0;
               fpoint=spoint;
               spoint=ai-1;
               //FileWrite(idFile,"  ïîñëåäíèì áûë ìàêñèìóì, draw_up="+draw_up+" draw_dn="+draw_dn+" fpoint="+fpoint+" spoint="+spoint+" èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ");
            }
         }
         else
         {
            //èíà÷å åñëè ñ÷åò÷èê ìàêñèìóìîâ íå äîñòèã íóæíîãî çíà÷åíèÿ
            //åñëè íà ïðåäûäóùåé ñâå÷êå áûë ìèíèìóì è îí íèæå ïðåäûäóùåãî îòðèñîâàííîãî
            if( Low[cb+1]<Low[cb+2] && Low[cb+1]<Low[index-spoint] )
            {
               spoint=ai-1;
               //FileWrite(idFile,"  ìèíèìóì íà ïðåä.ñâå÷êå íèæå ïðåäûäóùåãî îòðèñîâàííîãî, ìåíÿåì spoint="+spoint);
            }
         }
      }
   }
   //FileWrite(idFile,"  íîâàÿ ñâå÷à, îáíóëÿåì íàëè÷èå ìàêñèìóìà, ìèíèìóìà");
   curH=0;
   curL=0;
}
//--------------------<< êîíåö äåéñòâèé ïðèçâîäèìûå åñëè ïîÿâèëñÿ íîâûé áàð --
//åñëè òåêóùèé áàð "âíóòðåííèé" ïåðåõîäèì ê ñëåäóþùåìó öèêëó
if( High[cb]<=High[cb+1] && Low[cb]>=Low[cb+1] )
{
   //FileWrite(idFile,"  áàð âíóòðåííèé, ïåðåõîäèì ê ñëåäóþùåé ñâå÷å");
   continue;
}
//-------------------->> âûÿñíåíèå òåêóùåãî ñîñòîÿíèÿ áàðà -------------------
//åñëè ýòî èñòîðèÿ
if( cb!=0 || counted_bars==0 )
{
   //FileWrite(idFile,"  ïî èñòîðèè...");
   if( High[cb]>High[cb+1] )
   {
      if( sH<GSv_tend ) sH++;
      curH=1;
      //FileWrite(idFile,"  ñ÷åò÷èê ìàêñèìóìîâ óâåëè÷åí, ïîñëåäíèé ìàêñèìóì "+sH);
   }
   if( Low[cb]<Low[cb+1] )
   {
      if( sH<GSv_tend ) sL++;
      curL=1;
      //FileWrite(idFile,"  ñ÷åò÷èê ìèíèìóìîâ óâåëè÷åí, ïîñëåäíèé ìèíèìóì "+sL);
   }
   if( curH==curL && curH==1 )
   {
      if( Close[cb]>=(High[cb]+Low[cb])/2 )
      {
         curL=0;
         //FileWrite(idFile,"  âíåøíèé áàð, óòî÷íåíèå, ïîñëåäíèé ìàêñèìóì");
      }
      else
      {
         curH=0;
         //FileWrite(idFile,"  âíåøíèé áàð, óòî÷íåíèå, ïîñëåäíèé ìèíèìóì");
      }
   }
}
else
{
   //FileWrite(idFile,"  ðåàë-òàéì...");
   if( Close[cb]==High[cb] )
   {
      if( sH<GSv_tend && lhi!=ai )
      {
         lhi=ai;
         sH++;
      }
      curH=1;
      curL=0;
      //FileWrite(idFile,"  ïîñëåäíèé ìàêñèìóì");
   }
   else
   {
      if( Close[cb]==Low[cb] )
      {
         if( sL<GSv_tend && lli!=ai )
         {
            lli=ai;
            sL++;
         }
         curH=0;
         curL=1;
         //FileWrite(idFile,"  ïîñëåäíèé ìèíèìóì");
      }
   }
}
//--------------------<< êîíåö âûÿñíåíèÿ òåêóùåãî ñîñòîÿíèÿ áàðà -------------
//FileWrite(idFile,"  îòðèñîâêà èíäèêàòîðà...");
//åñëè èíäèêàòîð óæå ðèñóåòñÿ
if( draw_up!=draw_dn )
{
   //FileWrite(idFile,"  èíäèêàòîð óæå ðèñóåòñÿ "+draw_up+"  "+draw_dn);
   //åñëè èíäèêàòîð îòðèñîâûâàåòñÿ ââåðõ
   if( draw_dn!=1 )
   {
      //åñëè ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ
      if( (sL==GSv_tend && curL==1) || (sL==GSv_tend && sH!=GSv_tend) )
      {
         //FileWrite(idFile,"  ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ");
         GSv_sl[cb]=Low[cb];
      }
      else
      {
         //åñëè ïîñëåäíèé ìàêñèìóì âûøå ïîñëåäíåãî îòðèñîâàííîãî
         if( High[cb]>High[index-spoint] )
         {
            GSv_sl[cb]=High[cb];
            for( i=cb+1;i<index-fpoint;i++ )
            {
               GSv_sl[i]=0;
            }
         }
      }
   }
   else
   {
      //èíà÷å åñëè îòðèñîâûâàåòñÿ âíèç
      //åñëè ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ìàêñèìóì ïîñëåäíèé èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ
      if( (sH==GSv_tend && curH==1) || (sH==GSv_tend && sL!=GSv_tend) )
      {
         //FileWrite(idFile,"  ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ïîñëåäíèé ìàêñèìóì èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ");
         GSv_sl[cb]=High[cb];
      }
      else
      {
         //åñëè ïîñëåäíèé ìèíèìóì íèæå ïîñëåäíåãî îòðèñîâàííîãî
         if( Low[cb]<Low[index-spoint] )
         {
            GSv_sl[cb]=Low[cb];
            for( i=cb+1;i<index-fpoint;i++ )
            {
               GSv_sl[i]=0;
            }
         }
      }
   }
}
else
{
   //FileWrite(idFile,"  èíäèêàòîð ïîêà íå îòðèñîâûâàëñÿ "+draw_up+"  "+draw_dn);
   //èíà÷å åñëè èíäèêàòîð åùå íå ðèñóåòñÿ
   //åñëè ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ
   if( sH==GSv_tend )
   {
      //FileWrite(idFile,"  ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ");
      if( sL!=GSv_tend || curH==1 )
      {
         //FileWrite(idFile,"  ïîñëåäíèé ìàêñèìóì èëè ñ÷åò÷èê ìèíèìóìîâ ìåíüøå íóæíîãî");
         GSv_sl[index-fpoint]=Low[index-fpoint];
         GSv_sl[cb]=High[cb];
         draw_up=1;
         draw_dn=0;
         //FileWrite(idFile,"  íà÷àëüíàÿ òî÷êà "+fpoint+" "+GSv_sl[index-fpoint]+" êîíå÷íàÿ òî÷êà "+ai+" "+GSv_sl[cb]);
      }
   }
   //åñëè ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ
   if( sL==GSv_tend )
   {
      //FileWrite(idFile,"  ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ");
      if( sH!=GSv_tend || curL==1 )
      {
         //FileWrite(idFile,"  ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ ìåíüøå íóæíîãî");
         GSv_sl[index-fpoint]=High[index-fpoint];
         GSv_sl[cb]=Low[cb];
         draw_up=0;
         draw_dn=1;
         //FileWrite(idFile,"  íà÷àëüíàÿ òî÷êà "+fpoint+" "+GSv_sl[index-fpoint]+" êîíå÷íàÿ òî÷êà "+ai+" "+GSv_sl[cb]);
      }
   }
}
//--------------------<< êîíåö öèêëà ïî áàðàì --------------------------------
}
   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   //FileClose(idFile);
//----
   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Ôóíêöèÿ íà÷àëüíîé èíèöèàëèçàöèè èíäèêàòîðà                       |
//+------------------------------------------------------------------+
int myInit()
  {
//---- 
   //åñëè íåäîñòàòî÷íî äàííûõ
   if( Bars<GSv_tend+1 )
   {
      Alert("Íåäîñòàòî÷íî äàííûõ íà ãðàôèêå!");
      return(-1);
   }
   if( GSv_tend<1 )
   {
      Alert("Íåâåðíûé ïàðàìåòð èíäèêàòîðà!");
      return(-1);
   }
   if( High[Bars-2]>High[Bars-1] ) sH++;
   if( Low[Bars-2]<Low[Bars-1] ) sL++;
   initfl=1;
   //FileWrite(idFile,TimeToStr(CurTime())+" èíäèêàòîð èíèöèàëèçèðîâàí");
   //FileWrite(idFile,"  áàðîâ íà ãðàôèêå = "+Bars+", âðåìÿ ïåðâîãî áàðà = "+TimeToStr(Time[Bars-1]));
   //FileWrite(idFile,"  ñ÷åò÷èê ìàêñèìóìîâ = "+sH+", ñ÷åò÷èê ìèíèìóìîâ = "+sL);
//----
   return(0);
  }
//+------------------------------------------------------------------+






Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar


Indicator Curves created:

Implements a curve of type DRAW_SECTION
Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen