//+------------------------------------------------------------------+ //| i-Ma_of_Day.mq4 | //| Copyright © 2010, MetaQuotes Software Corp. | //| http://www.mql4.com/ru/users/costy_ | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #property copyright "Copyright © 2010, MetaQuotes Software Corp." #property link "http://www.mql4.com/ru/users/costy_" #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Red #property indicator_color2 RoyalBlue #property indicator_color3 Blue #property indicator_color4 ForestGreen #property indicator_color5 RoyalBlue #property indicator_color6 Blue #property indicator_color7 Magenta #property indicator_color8 Red extern string xxxxxxxxxxxxxxxxxxxхxxxxxxxxxx = "---------------------------------------------------------"; extern bool Ограничить_кол_во_баров=true; //текущим открытием дня extern bool Day_ =true; extern bool Day2_ =true; extern bool Day3_ =true; extern bool Day4_ =false; extern bool Day5_ =false; extern bool Day6_ =false; extern bool Day7_ =false; extern bool Day8_ =false; extern string xxxxxxxxxxxxxxxxxxxxxxxxxxxxxх = "---------------------------------------------------------"; extern string Метод_вычисления_МА = "0 Прост 1 Экс 2 Сгл 3 Лин-взвешенное"; extern int Метод_усреднения_МА=0; extern int Используемая_цена_МА=4; //---- double ma1_buffer [], ma2_buffer [], ma3_buffer [], ma4_buffer [], ma5_buffer [], ma6_buffer [], ma7_buffer [], ma8_buffer [], buffers_all [8]; string lab_days[8]={"Day 1","Day 2","Day 3","Day 4","Day 5","Day 6","Day 7","Day 8"}; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void init() { for (int p = 0; p <= 7; p++) SetIndexStyle(p,DRAW_LINE,STYLE_DASHDOT); SetIndexBuffer(0, ma1_buffer); SetIndexBuffer(1, ma2_buffer); SetIndexBuffer(2, ma3_buffer); SetIndexBuffer(3, ma4_buffer); SetIndexBuffer(4, ma5_buffer); SetIndexBuffer(5, ma6_buffer); SetIndexBuffer(6, ma7_buffer); SetIndexBuffer(7, ma8_buffer); } //+------------------------------------------------------------------+ void deinit() { for ( int p = 0; p <= 7; p++)ObjectDelete(lab_days[p]); } //+------------------------------------------------------------------+ void start() { //+------------------------------------------------------------------+ int Ограничение_сегодняшним_днем = iBarShift(Symbol(), 0, iTime(Symbol(), PERIOD_D1, iBarShift(Symbol(), PERIOD_D1, Time[0]))); if(Ограничение_сегодняшним_днем<1)Ограничение_сегодняшним_днем=1; //+------------------------------------------------------------------+ int limit = Bars - IndicatorCounted() - 1; //+------------------------------------------------------------------+ for (int i=limit; i>=0; i--) { if(Ограничить_кол_во_баров) if(i>Ограничение_сегодняшним_днем) continue; //+------------------------------------------------------------------+ if(Day_) { datetime BeginDay = iTime(Symbol(), PERIOD_D1, // Расчет времени начала суток iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay = iBarShift(Symbol(), 0, BeginDay)-i; if(StartBarDay<1)StartBarDay=1; ma1_buffer[i] = iMA(Symbol(), 0 , StartBarDay, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ if(Day2_) { datetime BeginDay2 = iTime(Symbol(), PERIOD_D1,1+ // Расчет времени начала 2 суток iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay2 = iBarShift(Symbol(), 0, BeginDay2)-i+1; if(StartBarDay2<1)StartBarDay2=1; ma2_buffer[i] = iMA(Symbol(), 0 , StartBarDay2, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ if(Day3_) { datetime BeginDay3 = iTime(Symbol(), PERIOD_D1,2+ iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay3 = iBarShift(Symbol(), 0, BeginDay3)-i+1; if(StartBarDay3<1)StartBarDay3=1; ma3_buffer[i] = iMA(Symbol(), 0 , StartBarDay3, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ if(Day4_) { datetime BeginDay4 = iTime(Symbol(), PERIOD_D1,3+ iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay4 = iBarShift(Symbol(), 0, BeginDay4)-i+1; if(StartBarDay4<1)StartBarDay4=1; ma4_buffer[i] = iMA(Symbol(), 0 , StartBarDay4, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ if(Day5_) { datetime BeginDay5 = iTime(Symbol(), PERIOD_D1,4+ iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay5 = iBarShift(Symbol(), 0, BeginDay5)-i+1; if(StartBarDay5<1)StartBarDay5=1; ma5_buffer[i] = iMA(Symbol(), 0 , StartBarDay5, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ if(Day6_) { datetime BeginDay6 = iTime(Symbol(), PERIOD_D1,5+ iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay6 = iBarShift(Symbol(), 0, BeginDay6)-i+1; if(StartBarDay6<1)StartBarDay6=1; ma6_buffer[i] = iMA(Symbol(), 0 , StartBarDay6, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ if(Day7_) { datetime BeginDay7 = iTime(Symbol(), PERIOD_D1,6+ iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay7 = iBarShift(Symbol(), 0, BeginDay7)-i+1; if(StartBarDay7<1)StartBarDay7=1; ma7_buffer[i] = iMA(Symbol(), 0 , StartBarDay7, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ if(Day8_) { datetime BeginDay8 = iTime(Symbol(), PERIOD_D1,7+ iBarShift(Symbol(), PERIOD_D1, Time[i])); int StartBarDay8 = iBarShift(Symbol(), 0, BeginDay8)-i+1; if(StartBarDay8<1)StartBarDay8=1; ma8_buffer[i] = iMA(Symbol(), 0 , StartBarDay8, 0, Метод_усреднения_МА, Используемая_цена_МА, i); } //+------------------------------------------------------------------+ } buffers_all [0] = ma1_buffer[0]; buffers_all [1] = ma2_buffer[0]; buffers_all [2] = ma3_buffer[0]; buffers_all [3] = ma4_buffer[0]; buffers_all [4] = ma5_buffer[0]; buffers_all [5] = ma6_buffer[0]; buffers_all [6] = ma7_buffer[0]; buffers_all [7] = ma8_buffer[0]; for ( int p = 0; p <= 7; p++) { if (ObjectFind(lab_days[p])==-1) ObjectCreate(lab_days[p],OBJ_TEXT,0,0,0); ObjectMove(lab_days[p],0,Time[0], buffers_all[p]+4*Point); ObjectSetText(lab_days[p]," <-<"+lab_days[p], 8, "Verdana", Gold); } } //+------------------------------------------------------------------+