//+------------------------------------------------------------------+ //| DayColorSquare.mq4 | //| Alex-W- | //| Alex-W-@bk.ru | //+------------------------------------------------------------------+ #property copyright "Alex-W-" #property link "Alex-W-@bk.ru" #property indicator_chart_window //--- input parameters extern bool Period_5M = false; // Выбор старшего периода формирование цен которого хотим отследить на более низком таймфрейме. extern bool Period_15M = false; extern bool Period_30M = false; extern bool Period_1H = false; extern bool Period_4H = false; extern bool Period_D = false; extern bool Period_W = false; extern bool Period_M = false; extern color Color_1 = PeachPuff; // Цвета квадратов extern color Color_2 = Gainsboro; extern int HistoryDay = 100; // На сколько дней по истории размечать. //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectsDeleteAll(0, OBJ_RECTANGLE); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int DayBars, dx, OpenBarTime, CloseBarTime, ToDay, ToMonth, ToYear, per=0, numDay, pt, cx=0; double HightPrice, LowPrice; color c; string nameDay[7]; bool interrupt = true; //---- nameDay[0] = "Вс"; nameDay[1] = "Пн"; nameDay[2] = "Вт"; nameDay[3] = "Ср"; nameDay[4] = "Чт"; nameDay[5] = "Пт"; nameDay[6] = "Сб"; dx = 0; if(Period_5M) {per = PERIOD_M5; cx++;} if(Period_15M) {per = PERIOD_M15; cx++;} if(Period_30M) {per = PERIOD_M30; cx++;} if(Period_1H) {per = PERIOD_H1; cx++;} if(Period_4H) {per = PERIOD_H4; cx++;} if(Period_D) {per = PERIOD_D1; cx++;} if(Period_W) {per = PERIOD_W1; cx++;} if(Period_M) {per = PERIOD_MN1; cx++;} if(per == 0){ Print("*** Не выбран исследуемый период. ***"); interrupt = false; } else { if(cx > 1){ Print("*** Ошибка, выбрано более 1 периода. ***"); interrupt = false; } else { if(Period() >= per) { Print("*** Период текущего графика должен быть меньше исследуемого. ***"); interrupt = false; } } } if(interrupt){ while (dx <= HistoryDay) { OpenBarTime = iTime(NULL, per, dx); // Возвращает время открытия бара. CloseBarTime = OpenBarTime +(per * 60); // Получаем время закрытия бара. HightPrice = iHigh(NULL, per, dx); // Возвращает максимальную цену бара LowPrice = iLow(NULL, per, dx); // Возвращает минимальную цену бара if ((dx % 2) == 0) c = Color_1; else c = Color_2; ToDay = TimeDay (OpenBarTime); // возвращает день месяца ToMonth = TimeMonth(OpenBarTime); // номер месяца в году ToYear = TimeYear(OpenBarTime); // год numDay = TimeDayOfWeek(OpenBarTime); // Возвращает номер дня недели pt = (HightPrice - LowPrice) / Point; // Движение цены ObjectCreate ("Squard_"+dx, OBJ_RECTANGLE, 0, OpenBarTime, HightPrice, CloseBarTime, LowPrice); ObjectSet ("Squard_"+dx, OBJPROP_COLOR, c); ObjectSetText ("Squard_"+dx, ToDay + "." + ToMonth + "." + ToYear + " " + nameDay[numDay]+" "+ pt+" п", 8, "Times New Roman", Green); dx++; } } //---- return(0); } //+------------------------------------------------------------------+