//+------------------------------------------------------------------+ //| i-DRProjections.mq4 | //| Ким Игорь В. aka KimIV | //| http://www.kimiv.ru | //| 27.08.2005 v.0.0 по просьбе $anto$'а | //| Индикатор Daily Range Projections | //| Прогнозирование дневных диапазонов цен | //| Автор идеи Томас Демарк | //| 29.08.2005 v.0.1 Доработка Aleks78 | //+------------------------------------------------------------------+ #property copyright "Ким Игорь В. aka KimIV" #property link "http://www.kimiv.ru" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 LightBlue #property indicator_color2 LightSalmon //------- Внешние параметры ------------------------------------------ extern int NumberOfDay = 10; // Количество дней extern bool ShowTomorrow = True; // Показывать завтра //------- Буферы индикатора ------------------------------------------ double MaxDay[]; double MinDay[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void init() { if (ShowTomorrow) { ObjectCreate("LineHi", OBJ_TREND, 0, 0,0, 0,0); ObjectCreate("LineLo", OBJ_TREND, 0, 0,0, 0,0); } SetIndexBuffer(0, MaxDay); SetIndexStyle (0, DRAW_LINE, STYLE_SOLID, 1); SetIndexBuffer(1, MinDay); SetIndexStyle (1, DRAW_LINE, STYLE_SOLID, 1); Comment(""); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ void deinit() { ObjectDelete("LineHi"); ObjectDelete("LineLo"); Comment(""); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double po, ph, pl, pc, x; double MaxDay1, MinDay1, OpenDay1, CloseDay1; //+++ int currDay, i=0, j=0; if (Period()>240) { Comment("Индикатор i-DRProjections не поддерживает ТФ более Н4 !"); return; } while (i<=NumberOfDay) { if (currDay!=TimeDay(Time[j])) { po = iOpen (NULL, 1440, i+1); ph = iHigh (NULL, 1440, i+1); pl = iLow (NULL, 1440, i+1); pc = iClose(NULL, 1440, i+1); if (pcpo) x = (ph + pl + pc + ph) / 2; if (pc==po) x = (ph + pl + pc + pc) / 2; i++; } currDay = TimeDay(Time[j]); MaxDay[j] = x - pl; MinDay[j] = x - ph; j++; } //++++++++++++++++++++++++++++++++++++++++++++++++ if (ShowTomorrow) { MaxDay1 = MarketInfo(Symbol(),MODE_HIGH); MinDay1 = MarketInfo(Symbol(),MODE_LOW); OpenDay1 = iOpen (NULL, 1440, 0); CloseDay1 = Bid; if (CloseDay1OpenDay1) x = (MaxDay1 + MinDay1 + CloseDay1 + MaxDay1) / 2; if (CloseDay1==OpenDay1) x = (MaxDay1 + MinDay1 + CloseDay1 + CloseDay1) / 2; ObjectSet("LineHi",OBJPROP_TIME1, Time[1]); ObjectSet("LineLo",OBJPROP_TIME1, Time[1]); ObjectSet("LineHi",OBJPROP_PRICE1, x - MinDay1); ObjectSet("LineLo",OBJPROP_PRICE1, x - MaxDay1); ObjectSet("LineHi",OBJPROP_TIME2, CurTime()); ObjectSet("LineLo",OBJPROP_TIME2, CurTime()); ObjectSet("LineHi",OBJPROP_PRICE2, x - MinDay1); ObjectSet("LineLo",OBJPROP_PRICE2, x - MaxDay1); ObjectSet("LineHi",OBJPROP_COLOR, indicator_color1); ObjectSet("LineLo",OBJPROP_COLOR, indicator_color2); ObjectSet("LineHi",OBJPROP_RAY, True); ObjectSet("LineLo",OBJPROP_RAY, True); ObjectSet("LineHi",OBJPROP_STYLE, STYLE_DOT); ObjectSet("LineLo",OBJPROP_STYLE, STYLE_DOT); } //++++++++++++++++++++++++++++++++++++++++++++++++ } //+------------------------------------------------------------------+