//+------------------------------------------------------------------+ //| AbsentBars.mq5 | //| Copyright 2009, Vladimir Gomonov | //| MetaDriver@rambler.ru | //+------------------------------------------------------------------+ #property copyright "(c) 2009, Vladimir Gomonov; MetaDriver@rambler.ru" #property link "MetaDriver@rambler.ru" #property version "1.00" #property indicator_separate_window #property indicator_minimum -9.1 #property indicator_maximum 9.1 #property indicator_buffers 3 #property indicator_plots 1 //---- plot OmitBars #property indicator_label1 "Пропущенные бары;OmitBars" #property indicator_type1 DRAW_COLOR_HISTOGRAM2 #property indicator_color1 DarkSlateGray,LightCoral,PaleVioletRed,Orchid,MediumOrchid,Purple,IndianRed,Black #property indicator_style1 STYLE_SOLID #property indicator_width1 8 #define MaxColor 7 //--- indicator buffers double OmitBarsBuffer1[], OmitBarsBuffer2[]; double OmitBarsColors[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,OmitBarsBuffer1,INDICATOR_DATA); SetIndexBuffer(1,OmitBarsBuffer2,INDICATOR_DATA); SetIndexBuffer(2,OmitBarsColors,INDICATOR_COLOR_INDEX); IndicatorSetInteger(INDICATOR_DIGITS,0); ArraySetAsSeries(OmitBarsBuffer1,true); ArraySetAsSeries(OmitBarsBuffer2,true); ArraySetAsSeries(OmitBarsColors,true); //--- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, 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[]) { //--- ArraySetAsSeries(time, true); int limit; if(prev_calculated>rates_total || prev_calculated<0) limit=rates_total; else { limit = rates_total - prev_calculated; if(prev_calculated>0) limit++; } for (int i=0; i