Download MetaTrader 5

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

To add comments, please log in or register
mar 2014.12.29 15: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);
//| 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),
//--- return value of prev_calculated for next call
Eric 2015.01.05 01:46  

i find this question really interresting and would like to see other opinion about this topic...

i never tought to divide spread and atr but find this interresting for ranking purpose....

anyone has something to add about this ?

mar 2015.01.07 08:26  
Unfortunately, no one is interested... I also hoped for some additional ideas or information.
whroeder1 2015.01.07 16:35  
mar:  I also hoped for some additional ideas or information.

I test for a minimum required RRR = (OrderTakeProfit - OrderOpenPrice) / (OrderOpenPrice - OrderStopLoss)

mar 2015.01.09 10:38  

That's what I do before each trade. But do you trade all pairs your broker offers? If not, why not and which pairs do you avoid? I noticed that the ratio between the spread and the average daily range is way too big on East European currencies like EURRUB, EURRON, EURPLN, USDRUB etc.. Here the range/spread-ratio is over 20%.

 Earlier I avoided trading the Turkish Lira (EURTRY and USDTRY) but after calculating the range/spread-ratio I saw that it is something around 5% in the London session. That's acceptable for me. And I had some good trades with these pairs. 

To add comments, please log in or register