//+------------------------------------------------------------------+ //| ATR Value Indicator.mq4 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Hossein Nouri." #property link "https://www.mql5.com/en/users/hsnnouri" #property version "1.00" #property description "Displaying ATR(Average True Range) value in pips or points." #property strict #property indicator_chart_window //--- input parameters enum valueType { Points=0, // Points Pips=1, // Pips }; input int ATRPeriod=14; // ATR Period input double Multiplier=2.0; input valueType display=0; // Select: Points or Pips input color labelColor= clrLime; // Color input int fontSize=12; // Size input bool FB = false; // Font Bold input int LR = 20; // Left-Right input int UD = 150; // Up-Down input ENUM_BASE_CORNER EBC = 1; // Corner #define OBJ_NAME "ATRIndicatorObj" string Font; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping switch(FB) { case 0: Font = "Arial"; break; case 1: Font = "Arial Bold"; } ShowATR(); //--- return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { ObjectDelete(OBJ_NAME); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- ShowATR(); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ void ShowATR() { static double ATR; ATR = iATR(Symbol(),0,ATRPeriod,0); ATR = (ATR * Multiplier) * MathPow(10,Digits - display); DrawATROnChart(ATR); } void DrawATROnChart(double ATR) { string Dis; if(display==0) Dis=" Points"; if(display==1) Dis=" Pips"; string s = (string)(Multiplier * 100) + "% of ATR "+(string)ATRPeriod+" : "+DoubleToStr(ATR,0)+ Dis; if(ObjectFind(OBJ_NAME) < 0) { ObjectCreate(OBJ_NAME, OBJ_LABEL, 0, 0, 0); ObjectSet(OBJ_NAME, OBJPROP_CORNER, EBC); ObjectSet(OBJ_NAME, OBJPROP_YDISTANCE, UD); ObjectSet(OBJ_NAME, OBJPROP_XDISTANCE, LR); ObjectSet(OBJ_NAME,OBJPROP_SELECTABLE,false); ObjectSetText(OBJ_NAME, s, fontSize, Font, labelColor); } ObjectSetText(OBJ_NAME, s); WindowRedraw(); }