English

## How do you decide if a pair is too expensive to trade (spread costs)?

 372 mar 2014.12.29 16:01   Hi forum,I had a look at some exotics and noticed that they often have large spreads but their daily ranges are also much higher than the major's ranges. For example the USDMXN has around 30 pips spread but the average daily range of the last 5 days is around 1360 pips. When I take this into consideration and divide the spread by the average daily range, the spread-daily range-ratio is just 2.5%. And this is the same the EURUSD has.Is there anything wrong with my calculations or do I oversee anything here?Do you use different calculations to determine if a pair is "too expensive"?This is the indicator I made for myself:```#property copyright "" #property link      "" #property version   "1.00" #property strict #property indicator_chart_window datetime leftTime; double Spread, ATR, DayRange, SpreadModifier; string strTime; int dbl2pips, Decimals; //+------------------------------------------------------------------+ //| Custom indicator initialization function                         | //+------------------------------------------------------------------+ int OnInit()   { //---    if (MarketInfo(NULL, MODE_PROFITCALCMODE) == 0) {       dbl2pips = (int)MathPow(10, Digits-1);       SpreadModifier = 0.1;       Decimals = 1;    }    else if (MarketInfo(NULL, MODE_PROFITCALCMODE) == 1) {       dbl2pips = 1;       Decimals = Digits;       SpreadModifier = MathPow(10, -Digits);    }    else return(-1); //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ //| 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[])   { //---    if (Period() <= PERIOD_D1) {       leftTime = (Period()*60)-(TimeCurrent()-Time[0]);       strTime  = "  |  CANDLE CLOSE: " + TimeToStr(leftTime, TIME_SECONDS);    }    else strTime = "";    Spread = MarketInfo(Symbol(), MODE_SPREAD);    ATR = iATR(NULL, PERIOD_D1, 5, 1);    DayRange = iHigh(NULL, PERIOD_D1, 0) - iLow(NULL, PERIOD_D1, 0);    Comment  (             "    ADR(5): ", DoubleToStr(ATR*dbl2pips, 2),             "  |  TODAY: ", DoubleToStr(DayRange*dbl2pips, 2),             "  (", DoubleToStr((DayRange / ATR)*100, 2), "%)",             "  |  SPREAD: ", DoubleToStr(Spread*SpreadModifier, Decimals),             "  |  RATIO: ", DoubleToStr(Spread/ATR*100*Point, 2), "%",             "  |  SWAP (", AccountCurrency(), "): LONG ", DoubleToStr((MarketInfo(NULL, MODE_SWAPLONG)*MarketInfo(NULL, MODE_TICKVALUE)), 2),             " | SHORT ", DoubleToStr((MarketInfo(NULL, MODE_SWAPSHORT)*MarketInfo(NULL, MODE_TICKVALUE)), 2),             strTime             ); //--- return value of prev_calculated for next call    return(rates_total);   } //+------------------------------------------------------------------+```