//+------------------------------------------------------------------+ //| Daily Open.mq4 | //| Copyright © 2011, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." //* #property copyright "Midnite" #property link "me@home.net" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 White #property indicator_style1 2 #property indicator_width1 1 extern int DrawEndTime = 1300; double TodayOpenBuffer[]; extern int TimeZoneOfData= 0; //+------------------------------------------------------------------+ //| 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 lastbar; int counted_bars= IndicatorCounted(); if (counted_bars>0) counted_bars--; lastbar = Bars-counted_bars; DailyOpen(0,lastbar); return (0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int DailyOpen(int offset, int lastbar) { int shift; int tzdiffsec= TimeZoneOfData * 3600; double barsper30= 1.0*PERIOD_M30/Period(); bool ShowDailyOpenLevel= True; int barTime=0, ct; // added by Robert // lastbar+= barsperday+2; // make sure we catch the daily open lastbar= MathMin(Bars-20*barsper30-1, lastbar); for(shift=lastbar;shift>=offset;shift--){ // Added by Robert //---------------------- ct = Time[shift]; barTime = TimeHour(ct) * 100 + TimeMinute(ct); //---------------------- 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{ // Modified by Robert if (barTime < DrawEndTime) TodayOpenBuffer[shift]= TodayOpenBuffer[shift+1]; } } } return(0); }