//+------------------------------------------------------------------+ //| ATR Levels.mq4 | //| Mike Ischenko | //| mishanya_fx@yahoo.com | //+------------------------------------------------------------------+ #property copyright "Mike Ischenko" #property link "mishanya_fx@yahoo.com" #property indicator_chart_window //---- extern int ATRPeriod = 10; //---- double rates_d1[][6]; double H1, H2, H3, H4, H4t, H5, L5, L4, L4t, L3, L2, L1, halfatr, fullatr; int timeshift = 0, timeshifts = 0, beginner = 0; int periods; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("H4atr line"); ObjectDelete("L4atr line"); ObjectDelete("L4atr label"); ObjectDelete("H4atr label"); ObjectDelete("H4tatr line"); ObjectDelete("L4tatr line"); ObjectDelete("L4tatr label"); ObjectDelete("H4tatr label"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars = IndicatorCounted(); //if (counted_bars<1) return(0); switch(Period()) { case PERIOD_M1: timeshifts = 60; beginner = Hour()*60; break; case PERIOD_M5: timeshifts = 300; beginner = Hour()*12; break; case PERIOD_M15: timeshifts = 900; beginner = Hour()*4; break; case PERIOD_M30: timeshifts = 1800; beginner = Hour()*2; break; case PERIOD_H1: timeshifts = 3600; beginner = Hour()*1; break; case PERIOD_H4: timeshifts = 14400; beginner = Hour()*0.25; break; case PERIOD_D1: timeshifts = 86400; beginner = Hour()*0; break; } timeshift = -timeshifts*24; //---- if(Period() > 86400) { Print("Error - Chart period is greater than 1 day."); return(-1); // then exit } ArrayCopyRates(rates_d1, Symbol(), PERIOD_D1); //beginner=Hour(); fullatr = iATR(Symbol(), PERIOD_D1, ATRPeriod, 1); L4 = rates_d1[1][3] - fullatr; H4 = rates_d1[1][2] + fullatr; L4t = rates_d1[0][3] - fullatr; H4t = rates_d1[0][2] + fullatr; halfatr = fullatr * 0.5; H1 = H4 + 1.5*fullatr; H2 = H4 + fullatr; H3 = H4 + halfatr; L3 = L4 - halfatr; L2 = L4 - fullatr; L1 = L4 - 1.5*fullatr; //---- if(ObjectFind("H4atr Line") != 0) { ObjectCreate("H4atr line", OBJ_HLINE, 0, Time[0], H4); ObjectSet("H4atr line", OBJPROP_COLOR, Red); ObjectSet("H4atr line", OBJPROP_WIDTH, 1); } else { ObjectMove("H4atr line", 0, Time[0], H4); } //---- if(ObjectFind("L4atr Line") != 0) { ObjectCreate("L4atr line", OBJ_HLINE, 0, Time[0], L4); ObjectSet("L4atr line", OBJPROP_COLOR, Red); ObjectSet("L4atr line", OBJPROP_WIDTH, 1); } else { ObjectMove("L4atr line", 0, Time[0], L4); } //---- if(ObjectFind("H4tatr Line") != 0) { ObjectCreate("H4tatr line", OBJ_HLINE, 0, Time[0], H4t); ObjectSet("H4tatr line", OBJPROP_COLOR, Red); ObjectSet("H4tatr line", OBJPROP_WIDTH, 1); } else { ObjectMove("H4tatr line", 0, Time[0], H4t); } //---- if(ObjectFind("L4tatr Line") != 0) { ObjectCreate("L4tatr line", OBJ_HLINE, 0, Time[0], L4t); ObjectSet("L4tatr line", OBJPROP_COLOR, Red); ObjectSet("L4tatr line", OBJPROP_WIDTH, 1); } else { ObjectMove("L4tatr line", 0,Time[0], L4t); } //---- if(ObjectFind("H4atr label") != 0) { ObjectCreate("H4atr label", OBJ_TEXT, 0, Time[0] + timeshift, H4); ObjectSetText("H4atr label", "ATR(y) res: " + DoubleToStr(H4,4), 8, "Verdana", Brown); } else { ObjectMove("H4atr label", 0, Time[0] + timeshift, H4); } //---- if(ObjectFind("L4atr label") != 0) { ObjectCreate("L4atr label", OBJ_TEXT, 0, Time[0] + timeshift, L4); ObjectSetText("L4atr label", "ATR(y) sup: " + DoubleToStr(L4,4), 8, "Verdana", Brown); } else { ObjectMove("L4atr label", 0, Time[0] + timeshift, L4); } //---- if(ObjectFind("H4tatr label") != 0) { ObjectCreate("H4tatr label", OBJ_TEXT, 0, Time[0] + timeshift, H4t); ObjectSetText("H4tatr label", "ATR(t) res: " + DoubleToStr(H4t,4), 8, "Verdana", Brown); } else { ObjectMove("H4tatr label", 0, Time[0] + timeshift, H4t); } //---- if(ObjectFind("L4tatr label") != 0) { ObjectCreate("L4tatr label", OBJ_TEXT, 0, Time[0] + timeshift, L4t); ObjectSetText("L4tatr label", "ATR(t) sup: " + DoubleToStr(L4t,4), 8, "Verdana", Brown); } else { ObjectMove("L4tatr label", 0, Time[0] + timeshift, L4t); } //---- return(0); } //+------------------------------------------------------------------+