Spread in the Market watch window is different from the spread drawn in the charts

 

Hello all,

I have reciently noticed that my FXCM accounts behave bizarre regarding the spread. In the market watch window of my demo account I see very small spreads 1.18020-1.18021 in EURUSD now. The MarketInfo(Symbol(),MODE_SPREAD) command returns a spread congruent with the market watch window, but the bid and ask lines that are automatically drawn in the charts are inconsistent with the bid/ask values in the market watch (these lines show a spread 1.18010-1.18030, wider than the market watch's).

My questions, in case someone can help me, are:

1)What spread is correct, the one shown in the market watch, or the one drawn in the charts?

2)Why there is such difference.

3)How can I fix this error?


Thank you very much

 
Try other broker as well. Pointing to only one is not enough evidence.
 
JdR9966:

Hello all,

I have reciently noticed that my FXCM accounts behave bizarre regarding the spread. In the market watch window of my demo account I see very small spreads 1.18020-1.18021 in EURUSD now. The MarketInfo(Symbol(),MODE_SPREAD) command returns a spread congruent with the market watch window, but the bid and ask lines that are automatically drawn in the charts are inconsistent with the bid/ask values in the market watch (these lines show a spread 1.18010-1.18030, wider than the market watch's).

My questions, in case someone can help me, are:

1)What spread is correct, the one shown in the market watch, or the one drawn in the charts?

2)Why there is such difference.

3)How can I fix this error?


Thank you very much

1 Correct is the market watch window. Candlestick chart is incorrect.

2. No idea, my guess is they have a single feed for multiple account types. 

3. You can't, but you may add indicator that draws lines with the MQL Ask and Bid values on the candlestick chart. See https://www.forex-tsd.com/metatrader-4/32924-metatrader-known-bugs-75.html

 
DeepThought:

1 Correct is the market watch window. Candlestick chart is incorrect.

2. No idea, my guess is they have a single feed for multiple account types. 

3. You can't, but you may add indicator that draws lines with the MQL Ask and Bid values on the candlestick chart. See https://www.forex-tsd.com/metatrader-4/32924-metatrader-known-bugs-75.html

 

Thank you for the answer.

1) If chart is incorrect, the historical data is incorrect (I guess) and the indicators (that I guess they use that wrong data) will show wrong values. The thing is that I can print true bid/ask lines, but the candles are being printed wrongly. What about the execution of an EA? Do they use the data coming from the chart for their internal calculations, or from the market watch? If they use the chart info, the EA behaviour will be wrong too!

2)I think so. My real account and demo account have different market watch values, but the same bid/ask in the charts.

3)The new bid/ask lines would be correct, but inconsistent with the bars and therefore very bizarre to follow the market, I think.

I've asked FXCM too to know their opinion.

 
I think now it's a problem of the brokers. It could be that they increase the spread of an ECN account by the commission.
 

Here is a example using FXCM demo server:

Maybe it is related to the fact that FXCM recently have reduced their spread. It is just like some specific config for graphs have not been updated accordingly.  

 

 fxcm

 
Click New Order and see if the price is correct or not.
 

This issue is caused by the Broker having a different feed for the Market Watch and the Charts.

The Market watch has the correct bid/ask/spread which will be used by the Broker for all order executions (deal entry triggers, stop loss and take profit)

You can use the following code snippet to show you any difference

   double chartBid = iClose(NULL, PERIOD_CURRENT, 0);
   double marketWatchBid = MarketInfo(NULL,  MODE_BID);
      
   if (chartBid != marketWatchBid)
   {
      Comment("Market Watch vs Chart :  ", DoubleToStr(marketWatchBid, Digits), " vs ", DoubleToStr(chartBid, Digits),  "  Points : ", DoubleToStr((marketWatchBid - chartBid) / Point, 0));
   }


To resolve this conflict in you indicators or EA you should only use the Market watch prices (Bid/Ask) for order execution.

This means you should change your code and replace "Bid" with iClose(NULL, PERIOD_CURRENT, 0) when comparing chart values.

But ALWAYS use MarketInfo(NULL,  MODE_BID) (or Bid for shorthand) when executing orders.

Reason: