//+------------------------------------------------------------------+ //| ExchangeWork.mq4 | //| Alexes | //| vvalkoko@gmail.com | //+------------------------------------------------------------------+ #property copyright "Alexes" #property link "vvalkoko@gmail.com" #property indicator_chart_window int PerevodChasow[10]; int Sortirovka[100][2]; int BarsOperate; int BarsVpered; int Novisible=0; int x; datetime TimeBar; datetime WorldBourseWork[100][2]; string WorldBourse[100][10]; string BourseRegionWork[100][10]; string CommTemp; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { for(int i=0;i<=99;i++) {WorldBourse[i][0]="==="; WorldBourseWork[i][0]=0; BourseRegionWork[i][0]="-"; BourseRegionWork[i][4]="-";} //======================================================================= //Начальные данные. Изменять от сих и ниже до "Конец Начальные данные." //----------------------------------------------------------------------- //Время торгового сервера выставляется в массиве WorldBourse [i][7]. Установлено время торгового сервера по Лондону //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ // Сведения взяты с http://www.stocktime.ru/info.htm //--------------------------+---------------------------------------------------------+-----------------------------+-----------------------------+--------------------------+--------------------------+-------------------------+-------------------------+ // РЕГИОН | НАМЕНОВАНИЕ | Начало торгов (UTC) | Окончание торгов (UTC) | Отклонение от UTC зима | Отклонение от UTC лето | Режим перевода часов | Время торгового сервера | //--------------------------+---------------------------------------------------------+-----------------------------+-----------------------------+--------------------------+--------------------------+-------------------------+-------------------------+ WorldBourse[1][0] = "PAS"; WorldBourse[1][1] = "(NZD) ВЕЛЛИНГТОН (Новая Зеландия)"; WorldBourse[1][2] = "10:00"; WorldBourse[1][3] = "16:45"; WorldBourse[1][4] = "12"; WorldBourse[1][5] = "13"; WorldBourse[1][6] = "1"; WorldBourse[1][7] = "0"; WorldBourse[2][0] = "PAS"; WorldBourse[2][1] = "(AUD) СИДНЕЙ (Австралия)"; WorldBourse[2][2] = "10:00"; WorldBourse[2][3] = "16:00"; WorldBourse[2][4] = "10"; WorldBourse[2][5] = "11"; WorldBourse[2][6] = "2"; WorldBourse[2][7] = "0"; WorldBourse[3][0] = "ASI"; WorldBourse[3][1] = "(JPY) ТОКИО (Япония)"; WorldBourse[3][2] = "09:00"; WorldBourse[3][3] = "15:00"; WorldBourse[3][4] = "9"; WorldBourse[3][5] = "9"; WorldBourse[3][6] = "0"; WorldBourse[3][7] = "0"; WorldBourse[4][0] = "ASI"; WorldBourse[4][1] = "(SGD) СИНГАПУР (Сингапур)"; WorldBourse[4][2] = "09:00"; WorldBourse[4][3] = "17:00"; WorldBourse[4][4] = "8"; WorldBourse[4][5] = "8"; WorldBourse[4][6] = "0"; WorldBourse[4][7] = "0"; WorldBourse[5][0] = "ASI"; WorldBourse[5][1] = "(CNY) ШАНХАЙ (Китай)"; WorldBourse[5][2] = "09:30"; WorldBourse[5][3] = "15:00"; WorldBourse[5][4] = "8"; WorldBourse[5][5] = "8"; WorldBourse[5][6] = "0"; WorldBourse[5][7] = "0"; WorldBourse[6][0] = "ASI"; WorldBourse[6][1] = "(HKD) ГОНКОНГ (Китай)"; WorldBourse[6][2] = "09:30"; WorldBourse[6][3] = "15:00"; WorldBourse[6][4] = "8"; WorldBourse[6][5] = "8"; WorldBourse[6][6] = "0"; WorldBourse[6][7] = "0"; WorldBourse[7][0] = "---"; WorldBourse[7][1] = "(AED) ДУБАЙ (ОАЭ)"; WorldBourse[7][2] = "11:45"; WorldBourse[7][3] = "17:00"; WorldBourse[7][4] = "4"; WorldBourse[7][5] = "4"; WorldBourse[7][6] = "0"; WorldBourse[7][7] = "0"; WorldBourse[8][0] = "---"; WorldBourse[8][1] = "(ZAR) ЙОХАННЕСБУРГ (ЮАР)"; WorldBourse[8][2] = "09:00"; WorldBourse[8][3] = "17:00"; WorldBourse[8][4] = "2"; WorldBourse[8][5] = "2"; WorldBourse[8][6] = "0"; WorldBourse[8][7] = "0"; WorldBourse[9][0] = "---"; WorldBourse[9][1] = "(RUB) МОСКВА (Россия)"; WorldBourse[9][2] = "10:00"; WorldBourse[9][3] = "15:00"; WorldBourse[9][4] = "4"; WorldBourse[9][5] = "4"; WorldBourse[9][6] = "0"; WorldBourse[9][7] = "0"; WorldBourse[10][0] = "EUR"; WorldBourse[10][1] = "(EUR) ФРАНКФУРТ (Германия)"; WorldBourse[10][2] = "09:00"; WorldBourse[10][3] = "17:30"; WorldBourse[10][4] = "1"; WorldBourse[10][5] = "2"; WorldBourse[10][6] = "3"; WorldBourse[10][7] = "0"; WorldBourse[11][0] = "EUR"; WorldBourse[11][1] = "(CHF) ЦЮРИХ (Швейцария)"; WorldBourse[11][2] = "09:00"; WorldBourse[11][3] = "17:30"; WorldBourse[11][4] = "1"; WorldBourse[11][5] = "2"; WorldBourse[11][6] = "3"; WorldBourse[11][7] = "0"; WorldBourse[12][0] = "EUR"; WorldBourse[12][1] = "(GBP) ЛОНДОН (Великобритания)"; WorldBourse[12][2] = "08:00"; WorldBourse[12][3] = "16:30"; WorldBourse[12][4] = "0"; WorldBourse[12][5] = "1"; WorldBourse[12][6] = "3"; WorldBourse[12][7] = "1"; WorldBourse[13][0] = "AME"; WorldBourse[13][1] = "(USD) НЬЮ-ЙОРК (США)"; WorldBourse[13][2] = "09:30"; WorldBourse[13][3] = "16:00"; WorldBourse[13][4] = "-5"; WorldBourse[13][5] = "-4"; WorldBourse[13][6] = "4"; WorldBourse[13][7] = "0"; WorldBourse[14][0] = "AME"; WorldBourse[14][1] = "(CAD) ТОРОНТО (Канада)"; WorldBourse[14][2] = "09:30"; WorldBourse[14][3] = "16:00"; WorldBourse[14][4] = "-5"; WorldBourse[14][5] = "-4"; WorldBourse[14][6] = "4"; WorldBourse[14][7] = "0"; WorldBourse[15][0] = "AME"; WorldBourse[15][1] = "(USD) ЧИКОГО (США)"; WorldBourse[15][2] = "08:30"; WorldBourse[15][3] = "15:00"; WorldBourse[15][4] = "-6"; WorldBourse[15][5] = "-5"; WorldBourse[15][6] = "4"; WorldBourse[15][7] = "0"; //--------------------------+---------------------------------------------------------+-----------------------------+-----------------------------+--------------------------+--------------------------+-------------------------+-------------------------+ //Цвета зон торговли PAS ASI EUR AME BourseRegionWork[1][3] = "9234160"; //Khaki BourseRegionWork[2][3] = "10025880"; //PaleGreen BourseRegionWork[3][3] = "13353215"; //Pink BourseRegionWork[4][3] = "15128749"; //LightBlue BourseRegionWork[5][3] = "16443110"; //Lavender BourseRegionWork[6][3] = "16119285"; //WhiteSmoke if(Period()>=240) Novisible=1; // Если время графика больше чем H1 Зоны торговли не отображаютя только Comment //BarsOperate - Количество баров из истории по которым отбражаются зоны торгов //BarsVpered - Количество баров в будущем по которым отбражаются зоны торгов if(Period()==60) // Для периода H1 { BarsOperate= 48; BarsVpered = 10; } if(Period()==30) // Для периода M30 { BarsOperate= 96; BarsVpered = 10; } if(Period()==15) // Для периода M15 { BarsOperate= 192; BarsVpered = 15; } if(Period()==5) // Для периода M5 { BarsOperate= 576; BarsVpered = 20; } if(Period()==1) // Для периода M1 { BarsOperate= 2000; BarsVpered = 30; } //----------------------------------------------------------------------- // Конец Начальные данные. Ниже лучше ничего не менять //======================================================================= int k,n; x=1; string NameLabel; for(i=1; i<=99; i++) { if(WorldBourse[i][0]=="---" || WorldBourse[i][0]=="===") { continue; } n=0; for(k=1;k<=99;k++) { if(BourseRegionWork[k][0]==WorldBourse[i][0]) { n=1; break; } } if(n==0) { BourseRegionWork[x][0] = WorldBourse[i][0]; BourseRegionWork[x][1] = "2037.12.31 23:59"; BourseRegionWork[x][2] = "1970.01.01 00:00"; if(x==1) { BourseRegionWork[x][5]="-"; } else { BourseRegionWork[x][5]="+"; if(BourseRegionWork[x-1][5]=="+")BourseRegionWork[x][5]="-"; } x++; } } x--; k=1; for(i=x;i>=1;i--) { NameLabel=BourseRegionWork[i][0]+"Color"; ObjectCreate(NameLabel,OBJ_LABEL,0,0,0); ObjectSet(NameLabel,OBJPROP_CORNER,1); ObjectSet(NameLabel,OBJPROP_YDISTANCE,0); ObjectSet(NameLabel,OBJPROP_XDISTANCE,k*35); ObjectSetText(NameLabel,BourseRegionWork[i][0],8,"Courier New",StrToInteger(BourseRegionWork[i][3])); k++; } TimeBar=Time[BarsOperate]; //---- indicators IndicatorShortName("BourseWork"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(EMPTY,OBJ_RECTANGLE); ObjectsDeleteAll(EMPTY,OBJ_LABEL); Comment(""); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double MaxHigh= 0; double MinLow = 1000000000; double MaxHigh1; double MinLow1; datetime TimeTempBarPred; datetime TimeTempBar; datetime TimeTempOpen; datetime TimeTempClose; datetime TimeTemp; string NameTemp; int k,i; int iName=1; WorldBourseWorkFun(); if(TimeBar==Time[0] || Novisible==1) return; ObjectsDeleteAll(EMPTY,OBJ_RECTANGLE); int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; if(counted_bars==0) limit-=1+1; if (limitMaxHigh) MaxHigh=High[i]; if(Low[i]=-BarsVpered;i--) { if(i>=0) {TimeTempBarPred = Time[i+1];TimeTempBar =Time[i];} if(i< 0) {TimeTempBarPred = Time[0]+MathAbs(i)*Period()*60-Period()*60; TimeTempBar = Time[0]+MathAbs(i)*Period()*60;} for(k=1;k<=x;k++) { TimeTempOpen=StrToTime(BourseRegionWork[k][1]); TimeTempClose= StrToTime(BourseRegionWork[k][2]); TimeTempOpen = StrToTime(TimeToStr(TimeTempBarPred,TIME_DATE)+" "+TimeToStr(TimeTempOpen,TIME_SECONDS)); TimeTempClose= StrToTime(TimeToStr(TimeTempBarPred,TIME_DATE)+" "+TimeToStr(TimeTempClose,TIME_SECONDS)); if(BourseRegionWork[k][4]=="-") { if((TimeTempBarPred==TimeTempOpen)) BourseRegionWork[k][4]=TimeToStr((TimeTempBarPred),TIME_DATE|TIME_SECONDS); if((TimeTempBar==TimeTempOpen)) BourseRegionWork[k][4]=TimeToStr((TimeTempBar),TIME_DATE|TIME_SECONDS); if((TimeTempOpen>TimeTempBarPred) && (TimeTempOpenTimeTempBarPred) && (TimeTempClose=1;i--) { if(TimeDayOfWeek(LetoN) == 0) break; LetoN = LetoN - 86400;} for(i=1;i<=30;i++) { if(TimeDayOfWeek(LetoK) == 0) break; LetoK = LetoK + 86400;} PerevodChasow[1]=1; if(TimeTemp>LetoK && TimeTempLetoK && TimeTemp=1;i--) { if(TimeDayOfWeek(LetoN) == 0) break; LetoN = LetoN - 86400;} for(i=31;i>=1;i--) { if(TimeDayOfWeek(LetoK) == 0) break; LetoK = LetoK - 86400;} PerevodChasow[3]=0; if(TimeTemp>LetoN && TimeTempLetoN && TimeTempWorldBourseWork[k][0]) BourseRegionWork[i][1] = TimeToStr(WorldBourseWork[k][0]); if(StrToTime(BourseRegionWork[i][2])=WorldBourseWork[k][0]) && (TimeCurrent()<=WorldBourseWork[k][1])) { CommStrTemp=CommStrTemp+" - "+WorldBourse[k][1]+" ("+TimeToStr(WorldBourseWork[k][0],TIME_MINUTES)+" - "+TimeToStr(WorldBourseWork[k][1],TIME_MINUTES)+" | "+TimeToStr(WorldBourseWork[k][1]-TimeCurrent(),TIME_MINUTES)+")\n"; } } if(CommStrTemp!="") CommStr=CommStr+BourseRegionWork[i][0]+":\n"+CommStrTemp+"\n"; } Comment(CommStr+CommStr1); } //+------------------------------------------------------------------+