cm_ind_candle_Signal

Author: Copyright 2017, cmillion@narod.ru
Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
cm_ind_candle_Signal
ÿþ//+------------------------------------------------------------------+

#property copyright "Copyright 2017, cmillion@narod.ru"

#property link      "http://cmillion.ru"

#property version   "1.00"

#property strict

#property indicator_chart_window

#property indicator_buffers 2

#property  indicator_color1  clrBlue

#property  indicator_color2  clrRed

#property description "=48:0B>@ 2K405B A83=0; ?@8 A>2?045=88 A25G59 A =5A:>;L:8E "$"

//+------------------------------------------------------------------+



double     SignalBufferRed[];

double     SignalBufferBlue[];

datetime TimeAlert=0;

int tf0,tf1,tf2,tf3,tf4,tf5;

int S=0;

//+------------------------------------------------------------------+

int OnInit()

  {

   IndicatorBuffers(2);

   SetIndexStyle(0,DRAW_ARROW,0,1);

   SetIndexArrow(0,233);

   SetIndexStyle(1,DRAW_ARROW,0,1);

   SetIndexArrow(1,234);



   SetIndexBuffer(0,SignalBufferBlue);

   SetIndexBuffer(1,SignalBufferRed);



   tf0=Period();

   tf1=next_period(tf0+1);

   tf2=next_period(tf1+1);

   tf3=next_period(tf2+1);

   tf4=next_period(tf3+1);

   tf5=next_period(tf4+1);

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,// >1@01>B0=> 10@>2 =0 ?@54K4CI5< 2K7>25 

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

   int i,limit;



   limit=rates_total-prev_calculated-1;

   if(rates_total<1) return(0);

   double d=(high[1]-low[1]+high[2]-low[2])/2;

   for(i=limit; i>=0; i--)

     {

      if(S<1 && open[i]<close[i] && 

         iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))<iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)) && 

         iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))<iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)) && 

         iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))<iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)) && 

         iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))<iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)) && 

         iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))<iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)))

        {

         SignalBufferBlue[i]=low[i]-d;

         if(i==1 && TimeAlert!=time[i]) Alert(Symbol()," A83=0; =0 ?>:C?:C");

         TimeAlert=time[i];

         S=1;

        }

      if(S>-1 && open[i]>close[i] && 

         iOpen(NULL,tf1,iBarShift(NULL,tf1,time[i],false))>iClose(NULL,tf1,iBarShift(NULL,tf1,time[i],false)) && 

         iOpen(NULL,tf2,iBarShift(NULL,tf2,time[i],false))>iClose(NULL,tf2,iBarShift(NULL,tf2,time[i],false)) && 

         iOpen(NULL,tf3,iBarShift(NULL,tf3,time[i],false))>iClose(NULL,tf3,iBarShift(NULL,tf3,time[i],false)) && 

         iOpen(NULL,tf4,iBarShift(NULL,tf4,time[i],false))>iClose(NULL,tf4,iBarShift(NULL,tf4,time[i],false)) && 

         iOpen(NULL,tf5,iBarShift(NULL,tf5,time[i],false))>iClose(NULL,tf5,iBarShift(NULL,tf5,time[i],false)))

        {

         SignalBufferRed[i]=high[i]+d;

         if(i==1 && TimeAlert!=time[i]) Alert(Symbol()," A83=0; =0 ?@>406C");

         TimeAlert=time[i];

         S=-1;

        }

     }



   return(rates_total);

  }

//+------------------------------------------------------------------+

int next_period(int per)

  {

   if(per > 10080)  return(43200);

   if(per > 1440)   return(10080);

   if(per > 240)    return(1440);

   if(per > 60)     return(240);

   if(per > 30)     return(60);

   if(per > 15)     return(30);

   if(per >  5)     return(15);

   if(per >  1)     return(5);

   if(per == 1)     return(1);

   return(Period());

  }

//+------------------------------------------------------------------+

Comments