prior_day_open_close_line

Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
prior_day_open_close_line
//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_style1 4
#property indicator_width1 1

double TodayOpenBuffer[];
extern double TimeZoneOfData=0;
extern double  Horizontaloffset=20;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,TodayOpenBuffer);
   SetIndexLabel(0,"Open");
   SetIndexEmptyValue(0,0.0);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   if(counted_bars < 0)  return(-1);
   if(counted_bars>0) counted_bars--;
   int lastbar=Bars-counted_bars;
   if(counted_bars==0) lastbar-=1+1;

   DailyOpen(1,lastbar);
   return (0);
  }
//+------------------------------------------------------------------+
//| DailyOpen                                                        |
//+------------------------------------------------------------------+
int DailyOpen(int offset,int lastbar)
  {
   int shift;
   int tzdiffsec=TimeZoneOfData*3600;
   double barsper30=1.0*PERIOD_M30/Period();
   bool ShowDailyOpenLevel=True;
// lastbar+= barsperday+2;  // make sure we catch the daily open		 
   //lastbar=MathMin(Bars-20*barsper30-1,lastbar);

   for(shift=lastbar;shift>=offset;shift--)
     {
      TodayOpenBuffer[shift]=0;
      if(ShowDailyOpenLevel)
        {
         if(TimeDay(Time[shift]-tzdiffsec)!=TimeDay(Time[shift-1]-tzdiffsec))
           {      // day change
            TodayOpenBuffer[shift]=Open[shift];
            TodayOpenBuffer[shift+1]=0;                                                           // avoid stairs in the line
           }
         else
           {
            TodayOpenBuffer[shift]=TodayOpenBuffer[shift+1];
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+

Comments