//+------------------------------------------------------------------+ //| RS_DWM_v01.mq4 | //+------------------------------------------------------------------+ #property copyright "Inkov Evgeni ew123@mail.ru" #property link "+7-918-600-11-33" //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 3 //+------------------------------------------------------------------+ extern int Day_Hist = 3; extern int Week_Hist = 3; extern int Month_Hist = 3; extern color color_Day = Magenta; extern color color_Week = Green; extern color color_Month = Blue; //+------------------------------------------------------------------+ double ExtBufferD0[]; // цена линии дня double ExtBufferD1[]; // время начала линии дня double ExtBufferW0[]; // цена линии недели double ExtBufferW1[]; // время начала линии недели double ExtBufferM0[]; // цена линии месяца double ExtBufferM1[]; // время начала линии месяца //+------------------------------------------------------------------+ int init() { IndicatorBuffers(6); SetIndexBuffer(0,ExtBufferD0); SetIndexBuffer(1,ExtBufferW0); SetIndexBuffer(2,ExtBufferM0); SetIndexBuffer(3,ExtBufferD1); SetIndexBuffer(4,ExtBufferW1); SetIndexBuffer(5,ExtBufferM1); SetIndexStyle(0,DRAW_NONE); SetIndexStyle(1,DRAW_NONE); SetIndexStyle(2,DRAW_NONE); SetIndexStyle(3,DRAW_NONE); SetIndexStyle(4,DRAW_NONE); SetIndexStyle(5,DRAW_NONE); ArrayResize(ExtBufferD0,Day_Hist*2+1); ArrayResize(ExtBufferD1,Day_Hist*2+1); ArrayResize(ExtBufferW0,Week_Hist*2+1); ArrayResize(ExtBufferW1,Week_Hist*2+1); ArrayResize(ExtBufferM0,Month_Hist*2+1); ArrayResize(ExtBufferM1,Month_Hist*2+1); ArrayInitialize(ExtBufferD0,0); ArrayInitialize(ExtBufferD1,0); ArrayInitialize(ExtBufferW0,0); ArrayInitialize(ExtBufferW1,0); ArrayInitialize(ExtBufferM0,0); ArrayInitialize(ExtBufferM1,0); IndicatorDigits(Digits); return(0); } //+------------------------------------------------------------------+ int deinit() { for (int i=0;i=0)ObjectDelete("D"+i); if (ObjectFind("W"+i)>=0)ObjectDelete("W"+i); if (ObjectFind("M"+i)>=0)ObjectDelete("M"+i); } return(0); } //+------------------------------------------------------------------+ int start() { // найти линии find_High_Low(Day_Hist, PERIOD_D1, ExtBufferD0,ExtBufferD1); find_High_Low(Week_Hist, PERIOD_W1, ExtBufferW0,ExtBufferW1); find_High_Low(Month_Hist,PERIOD_MN1,ExtBufferM0,ExtBufferM1); // вывести линии int delta=NormalizeDouble((WindowBarsPerChart()-WindowFirstVisibleBar())/4.0,0); out_line("D",PERIOD_D1, Day_Hist, color_Day, delta*60, ExtBufferD0, ExtBufferD1); out_line("W",PERIOD_W1, Week_Hist, color_Week, delta*120,ExtBufferW0, ExtBufferW1); out_line("M",PERIOD_MN1,Month_Hist, color_Month, delta*180,ExtBufferM0, ExtBufferM1); return(0); } //+------------------------------------------------------------------+ void find_High_Low(int max, int per, double& mas_ext0[],double& mas_ext1[]) { int n0,n1,k1,k2; for (int i=0;i<=max;i++) { if (Period()==per) { k1=i; k2=i; } else { n0=0; if (i>0)n0=iBarShift(Symbol(), Period(),iTime(Symbol(),per,i-1)); n1=iBarShift(Symbol(), Period(),iTime(Symbol(),per,i)); k1=iHighest(Symbol(), Period(), MODE_HIGH, n1-n0, n0); k2=iLowest (Symbol(), Period(), MODE_LOW, n1-n0, n0); } mas_ext0[2*i]=iHigh(Symbol(),Period(),k1); mas_ext1[2*i]=iTime(Symbol(),Period(),k1); mas_ext0[2*i+1]=iLow (Symbol(),Period(),k2); mas_ext1[2*i+1]=iTime(Symbol(),Period(),k2); } } //---------------------------------- void out_line(string name,int per, int max, color col, int d, double& ExtBuffer0[], double& ExtBuffer1[]) { for (int i=2*max+1;i>=0;i--) if (Period()<=per) out_TL(name+i, ExtBuffer0[i], ExtBuffer0[i], ExtBuffer1[i], iTime(Symbol(),Period(),0)+Period()*d, col, 1, i); else if (ObjectFind(name+i)>=0)ObjectDelete(name+i); } //--------------------------------- void out_TL(string name, double pr1, double pr2, datetime t1, datetime t2, color col, int width, int nom_Style) { int style=STYLE_DASH; if (nom_Style<2)style=STYLE_SOLID; if (ObjectFind(name)<0)ObjectCreate(name, OBJ_TREND, 0, t1, pr1, t2, pr2); ObjectSet(name,OBJPROP_COLOR, col); ObjectSet(name,OBJPROP_RAY, false); ObjectSet(name,OBJPROP_WIDTH, width); ObjectSet(name,OBJPROP_STYLE, style); ObjectSet(name,OBJPROP_TIME1, t1); ObjectSet(name,OBJPROP_TIME2, t2); ObjectSet(name,OBJPROP_PRICE1,pr1); ObjectSet(name,OBJPROP_PRICE2,pr2); } //--------------------------------------