//+------------------------------------------------------------------+ //| Hans_Indicator_x62_Cloud_System_Tail_ZZ_Alert.mq5 | //| Copyright © 2014, Shimodax | //| http://www.strategybuilderfx.com/forums/showthread.php?t=15439 | //+------------------------------------------------------------------+ /* Introduction: Draw ranges for "Simple Combined Breakout System for EUR/USD and GBP/USD" thread (see http://www.strategybuilderfx.com/forums/showthread.php?t=15439) LocalTimeZone: TimeZone for which MT5 shows your local time, e.g. 1 or 2 for Europe (GMT+1 or GMT+2 (daylight savings time). Use zero for no adjustment. The MetaQuotes demo server uses GMT +2. Enjoy :-) Markus */ #property copyright "Copyright © 2014, Shimodax" #property link "http://www.strategybuilderfx.com/forums/showthread.php?t=15439" #property description "Индикатор расширяющихся коридоров временных зон с тридцатью одним коридором, с фоновым цветовым заполнением, средней линией коридора," #property description "с окрашиванием свечек при выходе из сформированного четырёхчасового коридора." #property description "Сформированный коридор равен четырём часам, расширения коридора - шестнадцать часов." //---- номер версии индикатора #property version "1.02" //---- отрисовка индикатора в главном окне #property indicator_chart_window //---- количество индикаторных буферов 76 #property indicator_buffers 76 //---- использовано шестьдесят девять графических построений #property indicator_plots 69 //+----------------------------------------------+ //| объявление констант | //+----------------------------------------------+ #define LINES_TOTAL 32 // Константа для количества пар линий индикатора для уровней #define RESET NULL // Константа для возврата терминалу команды на пересчёт индикатора //+----------------------------------------------+ //| Параметры отрисовки верхнего облака | //+----------------------------------------------+ //---- отрисовка индикатора в виде облака #property indicator_type1 DRAW_FILLING //---- в качестве цвета линии индикатора использован цвет C'202,255,237' #property indicator_color1 C'202,255,237' //---- отображение метки индикатора #property indicator_label1 "Upper Hans_Indicator_x62 cloud" //+----------------------------------------------+ //| Параметры отрисовки нижнего облака | //+----------------------------------------------+ //---- отрисовка индикатора в виде облака #property indicator_type2 DRAW_FILLING //---- в качестве цвета линии индикатора использован цвет C'255,225,255' #property indicator_color2 C'255,225,255' //---- отображение метки индикатора #property indicator_label2 "Lower Hans_Indicator_x62 cloud" //+----------------------------------------------+ //| Параметры отрисовки индикатора 3 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type3 DRAW_LINE //---- в качестве цвета линии индикатора использован Blue цвет #property indicator_color3 clrBlue //---- линия индикатора - сплошная #property indicator_style3 STYLE_SOLID //---- толщина линии индикатора равна 1 #property indicator_width3 1 //---- отображение метки индикатора #property indicator_label3 "Upper Hans_Indicator 1" //+----------------------------------------------+ //| Параметры отрисовки индикатора 4 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type4 DRAW_LINE //---- в качестве цвета линии индикатора использован Magenta цвет #property indicator_color4 clrMagenta //---- линия индикатора - сплошная #property indicator_style4 STYLE_SOLID //---- толщина линии индикатора равна 1 #property indicator_width4 1 //---- отображение метки индикатора #property indicator_label4 "Lower Hans_Indicator 1" //+----------------------------------------------+ //| Параметры отрисовки индикатора 5 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type5 DRAW_LINE //---- в качестве цвета линии индикатора использован Lime цвет #property indicator_color5 clrLime //---- линия индикатора - сплошная #property indicator_style5 STYLE_SOLID //---- толщина линии индикатора равна 3 #property indicator_width5 3 //---- отображение метки индикатора #property indicator_label5 "Upper Hans_Indicator 2" //+----------------------------------------------+ //| Параметры отрисовки индикатора 6 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type6 DRAW_LINE //---- в качестве цвета линии индикатора использован Red цвет #property indicator_color6 clrRed //---- линия индикатора - сплошная #property indicator_style6 STYLE_SOLID //---- толщина линии индикатора равна 3 #property indicator_width6 3 //---- отображение метки индикатора #property indicator_label6 "Lower Hans_Indicator 2" //+----------------------------------------------+ //| Параметры отрисовки индикатора 7 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type7 DRAW_LINE //---- в качестве цвета линии индикатора использован Green цвет #property indicator_color7 clrGreen //---- линия индикатора - сплошная #property indicator_style7 STYLE_SOLID //---- толщина линии индикатора равна 3 #property indicator_width7 3 //---- отображение метки индикатора #property indicator_label7 "Upper Hans_Indicator 3" //+----------------------------------------------+ //| Параметры отрисовки индикатора 8 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type8 DRAW_LINE //---- в качестве цвета линии индикатора использован Indigo цвет #property indicator_color8 clrIndigo //---- линия индикатора - сплошная #property indicator_style8 STYLE_SOLID //---- толщина линии индикатора равна 3 #property indicator_width8 3 //---- отображение метки индикатора #property indicator_label8 "Lower Hans_Indicator 3" //+----------------------------------------------+ //| Параметры отрисовки индикатора 9 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type9 DRAW_LINE //---- в качестве цвета линии индикатора использован Green цвет #property indicator_color9 clrGreen //---- линия индикатора - пунктир #property indicator_style9 STYLE_DASH //---- толщина линии индикатора равна 1 #property indicator_width9 1 //---- отображение метки индикатора #property indicator_label9 "Upper Hans_Indicator 4" //+----------------------------------------------+ //| Параметры отрисовки индикатора 10 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type10 DRAW_LINE //---- в качестве цвета линии индикатора использован Indigo цвет #property indicator_color10 clrIndigo //---- линия индикатора - пунктир #property indicator_style10 STYLE_DASH //---- толщина линии индикатора равна 1 #property indicator_width10 1 //---- отображение метки индикатора #property indicator_label10 "Lower Hans_Indicator 4" //+----------------------------------------------+ //| Параметры отрисовки индикатора 11 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type11 DRAW_LINE //---- в качестве цвета линии индикатора использован Green цвет #property indicator_color11 clrGreen //---- линия индикатора - штрих-пунктир #property indicator_style11 STYLE_DASHDOTDOT //---- толщина линии индикатора равна 1 #property indicator_width11 1 //---- отображение метки индикатора #property indicator_label11 "Upper Hans_Indicator 5" //+----------------------------------------------+ //| Параметры отрисовки индикатора 12 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type12 DRAW_LINE //---- в качестве цвета линии индикатора использован Indigo цвет #property indicator_color12 clrIndigo //---- линия индикатора - штрих-пунктир #property indicator_style12 STYLE_DASHDOTDOT //---- толщина линии индикатора равна 1 #property indicator_width12 1 //---- отображение метки индикатора #property indicator_label12 "Lower Hans_Indicator 5" //+----------------------------------------------+ //| Параметры отрисовки индикатора 13 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type13 DRAW_LINE //---- в качестве цвета линии индикатора использован Green цвет #property indicator_color13 clrGreen //---- линия индикатора - сплошная #property indicator_style13 STYLE_SOLID //---- толщина линии индикатора равна 1 #property indicator_width13 1 //---- отображение метки индикатора #property indicator_label13 "Upper Hans_Indicator 6" //+----------------------------------------------+ //| Параметры отрисовки индикатора 14 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type14 DRAW_LINE //---- в качестве цвета линии индикатора использован Indigo цвет #property indicator_color14 clrIndigo //---- линия индикатора - сплошная #property indicator_style14 STYLE_SOLID //---- толщина линии индикатора равна 1 #property indicator_width14 1 //---- отображение метки индикатора #property indicator_label14 "Lower Hans_Indicator 6" //+----------------------------------------------+ //| Параметры отрисовки индикатора 67 | //+----------------------------------------------+ //---- отрисовка индикатора в виде линии #property indicator_type67 DRAW_LINE //---- в качестве цвета линии индикатора использован SlateGray цвет #property indicator_color67 clrSlateGray //---- линия индикатора - сплошная #property indicator_style67 STYLE_SOLID //---- толщина линии индикатора равна 2 #property indicator_width67 2 //---- отображение метки индикатора #property indicator_label67 "Middle Hans_Indicator" //+----------------------------------------------+ //| Параметры отрисовки индикатора свеч | //+----------------------------------------------+ //---- в качестве индикатора использованы цветные свечи #property indicator_type68 DRAW_COLOR_CANDLES #property indicator_color68 clrDeepSkyBlue,clrBlue,clrGray,clrPurple,clrMagenta //---- отображение метки индикатора #property indicator_label68 "Hans_Indicator Open;Hans_Indicator High;Hans_Indicator Low;Hans_Indicator Close" //+----------------------------------------------+ //| Параметры отрисовки индикатора | //+----------------------------------------------+ //---- в качестве индикатора использован ZIGZAG #property indicator_type69 DRAW_ZIGZAG //---- отображение метки индикатора #property indicator_label69 "ZigZag_NK" //---- в качестве цвета линии индикатора использован сине-фиолетовый цвет #property indicator_color69 clrBlueViolet //---- линия индикатора - сплошная #property indicator_style69 STYLE_SOLID //---- толщина линии индикатора равна 2 #property indicator_width69 2 //+----------------------------------------------+ //| ВХОДНЫЕ ПАРАМЕТРЫ Hans ИНДИКАТОРА | //+----------------------------------------------+ input uint LocalTimeZone=0; // час начала отсчёта исходного коридора input uint DestTimeZone=4; // сдвиг коридора влево в барах input uint PipsForEntryStep=50; // шаг расширения границ каждого сформированного коридора в пунктах input int Shift=0; // Сдвиг индикатора по горизонтали в барах input bool Draw_Tail=true; // Разрешение дорисовки уровней до конца ссесии input uint NumberofBar=1; // Номер бара для подачи сигнала input bool SoundON=true; // Разрешение алерта input uint NumberofAlerts=2; // Количество алертов input bool EMailON=false; // Разрешение почтовой отправки сигнала input bool PushON=false; // Разрешение отправки сигнала на мобильный input uint Slip=0; // Смещение координатной сетки по вертикали на PipsForEntryStep от середины //+----------------------------------------------+ //| Входные параметры зигзага | //+----------------------------------------------+ input uint ExtDepth=12; input uint ExtDeviation=5; input uint ExtBackstep =3; //+----------------------------------------------+ //---- объявление динамических массивов, которые будут в дальнейшем использованы в качестве индикаторных буферов double UpUpBuffer[],UpDnBuffer[],DnUpBuffer[],DnDnBuffer[],MiddleBuffer[]; double ExtOpenBuffer[],ExtHighBuffer[],ExtLowBuffer[],ExtCloseBuffer[],ExtColorBuffer[]; double HighestBuffer[],LowestBuffer[]; //---- Объявление целых переменных начала отсчёта данных int min_rates_total1,min_rates_total2; //---- Объявление переменных памяти для пересчёта индикатора только на непосчитанных барах int LASTlowpos,LASThighpos; double LASTlow0,LASTlow1,LASThigh0,LASThigh1,dExtDeviation; //+------------------------------------------------------------------+ //| Массивы переменных для создания индикаторных буферов | //+------------------------------------------------------------------+ class CIndicatorsBuffers { public: double ZoneUpper[]; public: double ZoneLower[]; }; //+------------------------------------------------------------------+ //| Создание индикаторных буферов | //+------------------------------------------------------------------+ CIndicatorsBuffers Ind[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //---- Инициализация переменных начала отсчёта данных min_rates_total1=100; min_rates_total2=int(ExtDepth+ExtBackstep); dExtDeviation=ExtDeviation*_Point; //---- объявление массивов для стилей индикаторных линий ENUM_LINE_STYLE line_style[]; color line_color[]; int line_width[]; ENUM_DRAW_TYPE plot_type[]; //---- Распределение памяти под массивы переменных int size=10; ArrayResize(line_style,size); ArrayResize(line_color,size); ArrayResize(line_width,size); ArrayResize(plot_type,size); ArrayResize(Ind,LINES_TOTAL); //---- получение свойств индикаторных линий for(int plot=4; plot<14; plot++) { plot_type[plot-4]=ENUM_DRAW_TYPE(PlotIndexGetInteger(plot,PLOT_DRAW_TYPE)); line_style[plot-4]=ENUM_LINE_STYLE(PlotIndexGetInteger(plot,PLOT_LINE_STYLE)); line_width[plot-4]=PlotIndexGetInteger(plot,PLOT_LINE_WIDTH); line_color[plot-4]=color(PlotIndexGetInteger(plot,PLOT_LINE_COLOR)); } //---- инициализация свойств индикаторных линий for(int step=0; step<5; step++) for(int count=0; count<10; count++) { int number=14+10*step+count; PlotIndexSetInteger(number,PLOT_DRAW_TYPE,plot_type[count]); PlotIndexSetInteger(number,PLOT_LINE_STYLE,line_style[count]); PlotIndexSetInteger(number,PLOT_LINE_WIDTH,line_width[count]); PlotIndexSetInteger(number,PLOT_LINE_COLOR,line_color[count]); } for(int count=0; count<2; count++) { int number=64+count; PlotIndexSetInteger(number,PLOT_DRAW_TYPE,plot_type[count]); PlotIndexSetInteger(number,PLOT_LINE_STYLE,line_style[count]); PlotIndexSetInteger(number,PLOT_LINE_WIDTH,line_width[count]); PlotIndexSetInteger(number,PLOT_LINE_COLOR,line_color[count]); } for(int count=0; countrates_total || prev_calculated<=0)// проверка на первый старт расчета индикатора { limit=limit1=rates_total-min_rates_total1-1; // стартовый номер для расчета всех баров } else limit=limit1=rates_total-prev_calculated; // стартовый номер для расчета новых баров //---- индексация элементов в массивах как в таймсериях ArraySetAsSeries(Time,true); ArraySetAsSeries(Open,true); ArraySetAsSeries(High,true); ArraySetAsSeries(Low,true); ArraySetAsSeries(Close,true); //---- основной цикл расчёта индикатора BreakoutRanges(0,limit,LocalTimeZone,DestTimeZone,rates_total,Time,Open,High,Low,Close); if(Draw_Tail) { int last_tail=FindLastTail(rates_total,Open,High,Low,Close,limit1); if(last_tail>0) limit1=last_tail; //---- цикл дорисовки уровней и окраски свечек до конца ссесии for(int bar=limit1; bar>=0 && !IsStopped(); bar--) { if(!Ind[0].ZoneUpper[bar]) { for(int numb=1; numbInd[1].ZoneUpper[bar]) { ExtOpenBuffer[bar]=Open[bar]; ExtHighBuffer[bar]=High[bar]; ExtLowBuffer[bar]=Low[bar]; ExtCloseBuffer[bar]=Close[bar]; if(Close[bar]>=Open[bar]) ExtColorBuffer[bar]=0; else ExtColorBuffer[bar]=1; } if(Close[bar]rates_total || prev_calculated<=0)// проверка на первый старт расчёта индикатора { limit2=rates_total-min_rates_total2; // стартовый номер для расчёта всех баров lastlow1=-1; lasthigh1=-1; lastlowpos=-1; lasthighpos=-1; lastlow0=Low[limit2]; lasthigh0=High[limit2]; } else { limit2=rates_total-prev_calculated; // стартовый номер для расчёта новых баров //---- восстанавливаем значения переменных lastlow0=LASTlow0; lasthigh0=LASThigh0; lastlow1=LASTlow1; lasthigh1=LASThigh1; lastlowpos=LASTlowpos+limit; lasthighpos=LASThighpos+limit; } //---- Первый большой цикл расчёта индикатора for(bar=limit2; bar>=0 && !IsStopped(); bar--) { //---- запоминаем значения переменных перед прогонами на текущем баре if(rates_total!=prev_calculated && bar==0) { LASTlow0=lastlow0; LASThigh0=lasthigh0; } //--- low val=Low[ArrayMinimum(Low,bar,ExtDepth)]; if(val==lastlow0) val=NULL; else { lastlow0=val; if(Low[bar]-val>ExtDeviation*_Point) val=NULL; else { for(back=1; back<=int(ExtBackstep); back++) { res=LowestBuffer[bar+back]; if(res && res>val ) LowestBuffer[bar+back]=NULL; } } } LowestBuffer[bar]=val; //--- high val=High[ArrayMaximum(High,bar,ExtDepth)]; if(val==lasthigh0) val=NULL; else { lasthigh0=val; if(val-High[bar]>ExtDeviation*_Point) val=NULL; else { for(back=1; back<=int(ExtBackstep); back++) { res=HighestBuffer[bar+back]; if(res && res=0; bar--) { //---- запоминаем значения переменных перед прогонами на текущем баре if(rates_total!=prev_calculated && !bar) { LASTlow1=lastlow1; LASThigh1=lasthigh1; LASTlowpos=lastlowpos; LASThighpos=lasthighpos; } curlow=LowestBuffer[bar]; curhigh=HighestBuffer[bar]; //--- if(!curlow && !curhigh) continue; //--- if(curhigh) { if(lasthigh1>0) { if(lasthigh10) { if(lastlow1>curlow) LowestBuffer[lastlowpos]=NULL; else LowestBuffer[bar]=NULL; } //--- if(curlow1) BuySignal=true; if(BuySignal && counter<=NumberofAlerts) { counter++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); SeriesTest=ArrayGetAsSeries(Close); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; double Ask=Close[index]; double Bid=Close[index]; SeriesTest=ArrayGetAsSeries(Spread); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; Bid+=Spread[index]*_Point; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPeriod=GetStringTimeframe(ChartPeriod()); if(SoundON) Alert("BUY signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod); if(EMailON) SendMail(SignalSirname+": BUY signal alert","BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod); if(PushON) SendNotification(SignalSirname+": BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod); } //--- } //+------------------------------------------------------------------+ //| Sell signal function | //+------------------------------------------------------------------+ void SellSignal(string SignalSirname, // текст имени индикатора для почтовых и пуш-сигналов double &ColorArrow[], // цветовой индикаторный буфер с сигналами для продажи const int Rates_total, // текущее количество баров const int Prev_calculated, // количество баров на предыдущем тике const double &Close[], // цена закрытия const int &Spread[]) // спред { //--- static uint counter=0; if(Rates_total!=Prev_calculated) counter=0; bool SellSignal=false; bool SeriesTest=ArrayGetAsSeries(ColorArrow); int index,index1; if(SeriesTest) { index=int(NumberofBar); index1=index+1; } else { index=Rates_total-int(NumberofBar)-1; index1=index-1; } if(ColorArrow[index]>2 && ColorArrow[index1]<3) SellSignal=true; if(SellSignal && counter<=NumberofAlerts) { counter++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); SeriesTest=ArrayGetAsSeries(Close); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; double Ask=Close[index]; double Bid=Close[index]; SeriesTest=ArrayGetAsSeries(Spread); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; Bid+=Spread[index]*_Point; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPeriod=GetStringTimeframe(ChartPeriod()); if(SoundON) Alert("SELL signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod); if(EMailON) SendMail(SignalSirname+": SELL signal alert","SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod); if(PushON) SendNotification(SignalSirname+": SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod); } //--- } //+------------------------------------------------------------------+ //| Получение таймфрейма в виде строки | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- } //+------------------------------------------------------------------+ //| Compute index of first/last bar of yesterday and today | //+------------------------------------------------------------------+ int BreakoutRanges(int offset,int &lastbar,int tzlocal,int tzdest,const int rates_total_,const datetime &Time_[], const double &Open_[],const double &High_[],const double &Low_[],const double &Close_[]) { //---- int i,j,k, tzdiff=tzlocal-tzdest, tzdiffsec=tzdiff*3600, tidxstart[2]={ 0,0}, tidxend[2]={ 0,0 }; double thigh[2]={ 0.0,0.0 }, tlow[2]={ DBL_MAX }; string tfrom[3]={ "04:00","08:00",/*rest of day: */ "12:00"}, tto[3]={ "08:00","12:00",/*rest of day: */ "24:00" }, tday; bool inperiod=-1; datetime timet; // // search back for the beginning of the day // tday=TimeToString(Time_[lastbar]-tzdiffsec,TIME_DATE); for(; lastbar=offset; i--) { timet=Time_[i]-tzdiffsec; // time of this bar string timestr=TimeToString(timet,TIME_MINUTES),// current time HH:MM thisday=TimeToString(timet,TIME_DATE); // current date // // for all three periods (first period, second period, rest of day) // for(j=0; j<2; j++) { if(tfrom[j]<=timestr && timestr0) { // now draw high/low back over the recently completed period for(k=tidxstart[j-1]; k>=tidxend[j-1]; k--) { ExtOpenBuffer[k]=ExtHighBuffer[k]=ExtLowBuffer[k]=ExtCloseBuffer[k]=NULL; ExtColorBuffer[k]=2; if(j-1==0) { Ind[0].ZoneUpper[k]= thigh[j-1]; Ind[0].ZoneLower[k]= tlow[j-1]; MiddleBuffer[k]=(Ind[0].ZoneUpper[k]+Ind[0].ZoneLower[k])/2; if(Close_[k]>Ind[0].ZoneUpper[k]) { ExtOpenBuffer[k]=Open_[k]; ExtHighBuffer[k]=High_[k]; ExtLowBuffer[k]=Low_[k]; ExtCloseBuffer[k]=Close_[k]; if(Close_[k]>=Open_[k]) ExtColorBuffer[k]=0; else ExtColorBuffer[k]=1; } if(Close_[k]Ind[1].ZoneUpper[k]) { ExtOpenBuffer[k]=Open_[k]; ExtHighBuffer[k]=High_[k]; ExtLowBuffer[k]=Low_[k]; ExtCloseBuffer[k]=Close_[k]; if(Close_[k]>=Open_[k]) ExtColorBuffer[k]=0; else ExtColorBuffer[k]=1; } if(Close_[k]=1 && tday==thisday) { // first time period completed for(int numb=1; numbInd[0].ZoneUpper[i]) { ExtOpenBuffer[i]=Open_[i]; ExtHighBuffer[i]=High_[i]; ExtLowBuffer[i]=Low_[i]; ExtCloseBuffer[i]=Close_[i]; if(Close_[i]>=Open_[i]) ExtColorBuffer[i]=0; else ExtColorBuffer[i]=1; } if(Close_[i]