//+----------------------------------------------------------------------------+ //| i-Sessions.mq4 | //| | //| Ким Игорь В. aka KimIV | //| http://www.kimiv.ru | //| | //+----------------------------------------------------------------------------+ #property copyright "Ким Игорь В. aka KimIV" #property link "http://www.kimiv.ru" #property indicator_chart_window //------- Внешние параметры индикатора ----------------------------------------+ extern int NumberOfDays = 5; // Количество дней extern string AsiaBegin = "01:00"; // Открытие азиатской сессии extern string AsiaEnd = "10:00"; // Закрытие азиатской сессии extern color AsiaColor = Goldenrod; // Цвет азиатской сессии extern string EurBegin = "07:00"; // Открытие европейской сессии extern string EurEnd = "16:00"; // Закрытие европейской сессии extern color EurColor = Tan; // Цвет европейской сессии extern string USABegin = "14:00"; // Открытие американской сессии extern string USAEnd = "23:00"; // Закрытие американской сессии extern color USAColor = Pink; // Цвет американской сессии extern int Style = 2; // Стиль линий объектов extern bool FillBack = True; // Заливать объекты extern bool ShowPrice = True; // Показывать ценовые уровни extern color clFont = Blue; // Цвет шрифта extern int SizeFont = 8; // Размер шрифта extern int OffSet = 10; // Смещение //+----------------------------------------------------------------------------+ //| Custom indicator initialization function | //+----------------------------------------------------------------------------+ void init() { DeleteObjects(); for(int i=0; i5) dt-=24*60*60; } } //+----------------------------------------------------------------------------+ //| Прорисовка объектов на графике | //| Параметры: | //| dt - дата торгового дня | //| no - наименование объекта | //| tb - время начала сессии | //| te - время окончания сессии | //+----------------------------------------------------------------------------+ void DrawObjects(datetime dt,string no,string tb,string te) { datetime t1,t2; double p1,p2; int b1,b2; t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb); t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te); b1=iBarShift(NULL, 0, t1); b2=iBarShift(NULL, 0, t2); p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2+1, b2)]; p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2+1, b2)]; ObjectSet(no,OBJPROP_TIME1,t1); ObjectSet(no,OBJPROP_PRICE1,p1); ObjectSet(no,OBJPROP_TIME2,t2); ObjectSet(no,OBJPROP_PRICE2,p2); } //+----------------------------------------------------------------------------+ //| Прорисовка ценовых меток на графике | //| Параметры: | //| dt - дата торгового дня | //| no - наименование объекта | //| tb - время начала сессии | //| te - время окончания сессии | //+----------------------------------------------------------------------------+ void DrawPrices(datetime dt,string no,string tb,string te) { datetime t1,t2; double p1,p2; int b1,b2; t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb); t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te); b1=iBarShift(NULL, 0, t1); b2=iBarShift(NULL, 0, t2); p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)]; p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)]; if(ObjectFind(no+"up")<0) ObjectCreate(no+"up",OBJ_TEXT,0,0,0); ObjectSet(no+"up",OBJPROP_TIME1,t2); ObjectSet(no+"up",OBJPROP_PRICE1,p1+(OffSet+SizeFont)*Point); ObjectSet(no+"up",OBJPROP_COLOR,clFont); ObjectSet(no+"up",OBJPROP_FONTSIZE,SizeFont); ObjectSetText(no+"up",DoubleToStr(p1+Ask-Bid,Digits)); if(ObjectFind(no+"dn")<0) ObjectCreate(no+"dn",OBJ_TEXT,0,0,0); ObjectSet(no+"dn",OBJPROP_TIME1,t2); ObjectSet(no+"dn",OBJPROP_PRICE1,p2-OffSet*Point); ObjectSet(no+"dn",OBJPROP_COLOR,clFont); ObjectSet(no+"dn",OBJPROP_FONTSIZE,SizeFont); ObjectSetText(no+"dn",DoubleToStr(p2,Digits)); } //+----------------------------------------------------------------------------+