//+------------------------------------------------------------------+ //| Three in One.mq4 | //| Alex-W- | //| Alex-W-@bk.ru | //+------------------------------------------------------------------+ #property copyright "Alex-W-" #property link "Alex-W-@bk.ru" #property indicator_chart_window //--- input parameters extern int Period_1 = PERIOD_H1; // Периоды для отображения в текущем окне, если 0 то данный период будет пропущен. extern int Period_2 = PERIOD_H4; extern int Period_3 = PERIOD_D1; //--- Style Period 1 --- extern color P1_ClrLine = Black; extern color P1_ClrDivider = Black; extern color P1_ClrShHigh = YellowGreen; extern color P1_ClrShLow = YellowGreen; extern color P1_ClrBarUp = Gold; extern color P1_ClrBarDown = C'237,147,247'; extern int P1_WidthLine = 1; extern int P1_StyleLine = 0; extern int P1_StyleDivider = 2; extern int P1_WidthDivider = 1; //--- Style Period 2 --- extern color P2_ClrLine = Red; extern color P2_ClrDivider = Red; extern color P2_ClrShHigh = Moccasin; extern color P2_ClrShLow = Moccasin; extern color P2_ClrBarUp = Moccasin; extern color P2_ClrBarDown = Moccasin; extern int P2_WidthLine = 1; extern int P2_StyleLine = 0; extern int P2_StyleDivider = 2; extern int P2_WidthDivider = 1; //--- Style Period 3 --- extern color P3_ClrLine = Blue; // Прямоугольник из линий бар High->Low extern color P3_ClrDivider = Blue; // Линия разделитель между телом бара и High,Low. extern color P3_ClrShHigh = Lavender; // Цвет прямоугольника (Тени) High extern color P3_ClrShLow = Lavender; // Цвет прямоугольника (Тени) Low extern color P3_ClrBarUp = Lavender; extern color P3_ClrBarDown = Lavender; extern int P3_WidthLine = 3; extern int P3_StyleLine = 0; extern int P3_StyleDivider = 2; extern int P3_WidthDivider = 1; extern int HistoryBars = 200; // На сколько дней по истории размечать, этот параметр старшего бара, то есть если самы старший период выбран день то будет размечено данное кол во дней. //+------------------------------------------------------------------+ //| #############- indicator initialization function -############# | //+------------------------------------------------------------------+ int init() { //---- Comment(GetPeriod(Period_1)+":"+GetPeriod(Period_2)+":"+GetPeriod(Period_3)); //---- return(0); } //+------------------------------------------------------------------+ //| ###########- indicator deinitialization function -############# | //+------------------------------------------------------------------+ int deinit(){ //---- ObjectsDeleteAll(); Comment(""); //---- return(0); } //+------------------------------------------------------------------+ //| ##############-- indicator start function --#################### | //+------------------------------------------------------------------+ int start() { //---- int iCounted, i, iCxP1, iCxP2, iP1, iP2, iWindowPeriod; static int iCx=0; string sOp_1, sOp_2, sOp_3, sPeriod_1, sPeriod_2, sPeriod_3; static bool bCheck=true, Blocking=false; //---- iWindowPeriod=Period(); if(iWindowPeriod>=Period_1 || iWindowPeriod>=Period_2 || iWindowPeriod>=Period_3){ Alert("Ошибка ! - один из выбранных периодов меньше или равен текущему."); Blocking=true; } if(Period_1 >= Period_2 || Period_2 >= Period_3){ Alert("Ошибка ! - Period_1 должен быть ниже чем Period_2 и Period_2 ниже чем Period_3."); Blocking=true; } if(!Blocking){ sPeriod_1 = GetPeriod(Period_1); sPeriod_2 = GetPeriod(Period_2); sPeriod_3 = GetPeriod(Period_3); if(bCheck)iCounted=HistoryBars; else iCounted=1; for(i=0; iClose if(ObjectFind(id+"_Bar_")<0){ ObjectCreate(id+"_Bar_", OBJ_RECTANGLE, 0, tmOpen, prOpen, tmClose, prClose); ObjectSet(id+"_Bar_", OBJPROP_COLOR, clr); }else{ ObjectSet(id+"_Bar_", OBJPROP_COLOR, clr); ObjectSet(id+"_Bar_", OBJPROP_TIME1, tmOpen); ObjectSet(id+"_Bar_", OBJPROP_PRICE1, prOpen); ObjectSet(id+"_Bar_", OBJPROP_TIME2, tmClose); ObjectSet(id+"_Bar_", OBJPROP_PRICE2, prClose); } //--- Бычий бар if(prOpenprClose){ //--- Рисуем тень бара High. if(ObjectFind(id+"_ShHigh_")<0){ ObjectCreate(id+"_ShHigh_", OBJ_RECTANGLE, 0, tmOpen, prHigh, tmClose, prOpen); ObjectSet(id+"_ShHigh_", OBJPROP_COLOR, shHigh); }else{ ObjectSet(id+"_ShHigh_", OBJPROP_TIME1, tmOpen); ObjectSet(id+"_ShHigh_", OBJPROP_PRICE1, prHigh); ObjectSet(id+"_ShHigh_", OBJPROP_TIME2, tmClose); ObjectSet(id+"_ShHigh_", OBJPROP_PRICE2, prOpen); } //--- Рисуем тень бара Low. if(ObjectFind(id+"_ShLow_")<0){ ObjectCreate(id+"_ShLow_", OBJ_RECTANGLE, 0, tmOpen, prLow, tmClose, prClose); ObjectSet(id+"_ShLow_", OBJPROP_COLOR, shLow); }else{ ObjectSet(id+"_ShLow_", OBJPROP_TIME1, tmOpen); ObjectSet(id+"_ShLow_", OBJPROP_PRICE1, prLow); ObjectSet(id+"_ShLow_", OBJPROP_TIME2, tmClose); ObjectSet(id+"_ShLow_", OBJPROP_PRICE2, prClose); } } } //+------------------------------------------------------------------+