Why the Same MT5 Candle Can Look Different on Different Broker Accounts

Why MT5 candles, SMA values, indicator signals, and EA behavior can differ between broker accounts even when the symbol name looks the same.

Why MT5 candles can differ

A candle is not always universal market data

When people first start building trading bots or indicators in MetaTrader 5, it is easy to assume that a candle is a universal piece of market data.

For example, you might think:

"The H1 candle at 20:00 on 6 May 2026 should be the same everywhere."

But in practice, that is not always true.

You can have two MT5 terminals running in different countries, both showing the same candles. Then you open another account with what looks like the same broker and symbol, and suddenly the candle opens, closes, SMA values, or indicator signals are slightly different.

This article explains why that happens.

The misconception: MT5 receives completed candles

Live charts are built from ticks and quotes

A common assumption is that MetaTrader 5 receives candle data like this:

Broker sends:

H1 candle at 20:00
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3306.80

That is not how live charts normally work.

On a live chart, MT5 receives a stream of price updates from the broker. These updates are usually called ticks or quotes.

The terminal then uses those incoming prices to build the current candle.

So instead of receiving a complete H1 candle, MT5 receives live price updates like this:

20:00:01 price = 3300.20
20:00:08 price = 3301.10
20:01:15 price = 3302.70
20:02:03 price = 3299.80
...
20:59:47 price = 3306.80

MT5 then builds the candle from those prices.

How a live candle is built

The candle timestamp marks the start of the period

Let's say we are looking at an H1 candle with the timestamp:

2026.05.06 20:00

That does not mean the candle happened only at exactly 20:00.

It means the candle covers the period that starts at 20:00 and ends before the next H1 candle starts.

In simple terms:

20:00 candle = prices from 20:00:00 up to just before 21:00:00

The candle is built like this:

Open = first price received in that hour
High = highest price received during that hour
Low = lowest price received during that hour
Close = latest price received during that hour

While the candle is still live, the close is not final.

The close keeps changing every time a new price arrives.

Example of a forming candle

The close changes until the candle is complete

For example:

20:00:01
Open = 3300.20
High = 3300.20
Low = 3300.20
Close = 3300.20

20:10:00
Open = 3300.20
High = 3305.40
Low = 3299.80
Close = 3303.10

20:45:00
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3309.70

20:59:47
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3306.80

Once the next H1 candle starts, the previous candle is considered closed.

In practice, this often happens when the first tick of the next hour arrives.

Who decides the candle's final values?

Broker feed and server time define the chart

The final candle values are determined by the broker's live price feed and server time.

Your MT5 terminal builds the chart locally, but it builds it from the data supplied by the broker server.

So the final candle is the result of:

Broker price feed
+ Broker server time
+ Symbol specification
+ Trading session settings
+ Tick/quote stream received by the terminal

Your physical location does not usually matter.

A trader in London and a trader in South Africa can see the exact same candle if they are connected to the same broker server, using the same account type and the same symbol.

But a different broker server or account jurisdiction can produce different candles.

Example: Same broker, different account region

The account environment matters more than the terminal location

Suppose you have three MT5 terminals:

Terminal A:
Location: London
Broker account: Deriv South Africa
Symbol: XAUUSD

Terminal B:
Location: South Africa
Broker account: Deriv South Africa
Symbol: XAUUSD

Terminal C:
Location: London
Broker account: Deriv UAE
Symbol: XAUUSD

Terminal A and Terminal B may show the same candle values because they are connected to the same broker-side data environment.

They may have:

  • Same server
  • Same symbol feed
  • Same server timezone
  • Same symbol specification
  • Same candle construction

But Terminal C may differ because the UAE account may connect to a different Deriv server or trading environment.

That account could have:

  • Different server time
  • Different liquidity feed
  • Different symbol configuration
  • Different spread model
  • Different trading sessions
  • Different quote filtering
  • Different historical data

Even if the symbol name looks the same, the actual data environment may not be identical.

The timestamp problem

A 20:00 candle is broker server time

One of the biggest sources of confusion is candle time.

When MT5 shows an H1 candle at:

20:00

that time is based on the broker server's time, not necessarily your local computer time.

So two accounts can both show a candle labeled:

20:00

but those candles may refer to different real-world UTC periods.

For example:

Broker Server A:
20:00 server time = 18:00 UTC

Broker Server B:
20:00 server time = 16:00 UTC

Both charts display a 20:00 candle, but the candles are not covering the same real-world hour.

That means the open, high, low, close, and indicators can all differ.

Why higher timeframes are affected more

Server time shapes H1, H4, D1, and W1 candles

This becomes especially important for higher timeframes such as:

  • H1
  • H4
  • D1
  • W1

The higher the timeframe, the more important server time becomes.

A D1 candle on one broker may open and close at a different real-world time than a D1 candle on another broker.

That can affect:

  • Daily highs and lows
  • Daily candle closes
  • Moving averages
  • ATR
  • Breakout levels
  • Support and resistance zones
  • Backtest results
  • EA entries and exits

Why the SMA can differ

Indicators are calculated from broker-specific candle data

An SMA is not calculated from some universal market data source.

It is calculated from the candle closes available on that specific chart.

For example, a 10-period SMA on H1 is calculated from the last 10 H1 candle closes.

Simplified:

SMA = average of the last 10 closes

So if two broker accounts have slightly different H1 closes, they will also have slightly different SMA values.

This means the following can happen:

Account A:
Price closes below SMA
EA triggers sell setup

Account B:
Price closes slightly above SMA
EA does not trigger

Both platforms may be working correctly. They are just using different underlying candle data.

Strategies affected by candle differences

Exact closes can change exact signals

This is especially relevant for strategies that depend on exact candle closes, such as:

  • SMA cross strategies
  • Breakout strategies
  • Rejection candle patterns
  • Swing high / swing low logic
  • Daily range strategies
  • ATR-based box systems

Small candle differences can be enough to change a signal, filter, or trade management decision.

Live chart vs historical chart

Current candles change tick by tick

On a live chart, MT5 builds the current candle from incoming live ticks.

For the current candle, in MQL5:

iClose(_Symbol, PERIOD_H1, 0)

returns the latest live close of the currently forming H1 candle.

That value can change tick by tick.

The previous candle is accessed with:

iClose(_Symbol, PERIOD_H1, 1)

That is the last closed H1 candle.

However, even that closed value originally came from the broker's live tick stream. It was not a universal value shared by all brokers.

It was formed inside that broker/account/server environment.

Why this matters for Expert Advisors

The same code can behave differently on different data

If you are building an EA, this behavior matters a lot.

A strategy that works on one broker server may behave slightly differently on another broker server, even with the same code and same input parameters.

For example:

Broker A:
H1 close crosses below SMA
EA arms breakout box

Broker B:
H1 close does not cross below SMA
EA does nothing

Or:

Broker A:
Daily ATR = 24.5

Broker B:
Daily ATR = 26.1

That small difference can change:

  • Box size
  • Stop loss
  • Take profit
  • Entry timing
  • Risk calculation
  • Trade frequency
  • Backtest results
  • Live results

This does not mean MT5 is broken.

It means your EA is data-sensitive.

The broker's candle construction is part of the trading environment.

How to compare two accounts properly

Print the actual candle data

If you want to compare two MT5 accounts, do not only look at the chart visually.

Print the actual data.

For example, in MQL5 you can compare:

void OnStart()
{
MqlRates rates[];
ArraySetAsSeries(rates, true);

int copied = CopyRates(_Symbol, PERIOD_H1, 0, 20, rates);

Print("Account server: ", AccountInfoString(ACCOUNT_SERVER));
Print("Symbol: ", _Symbol);
Print("TimeTradeServer: ", TimeTradeServer());

for(int i = 0; i < copied; i++)
{
Print(
"shift=", i,
" time=", TimeToString(rates[i].time, TIME_DATE | TIME_MINUTES),
" open=", DoubleToString(rates[i].open, _Digits),
" high=", DoubleToString(rates[i].high, _Digits),
" low=", DoubleToString(rates[i].low, _Digits),
" close=", DoubleToString(rates[i].close, _Digits),
" tick_volume=", rates[i].tick_volume
);
}
}

Run this on both accounts and compare:

  • Server name
  • Symbol name
  • Bar timestamp
  • Open
  • High
  • Low
  • Close
  • Tick volume

Compare symbol properties too

The feed may not be the only difference

You should also compare symbol properties:

void OnStart()
{
Print("Server: ", AccountInfoString(ACCOUNT_SERVER));
Print("Symbol: ", _Symbol);

Print("Digits: ", SymbolInfoInteger(_Symbol, SYMBOL_DIGITS));
Print("Point: ", SymbolInfoDouble(_Symbol, SYMBOL_POINT));
Print("Tick size: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE));
Print("Contract size: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE));
Print("Currency profit: ", SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT));
}

Sometimes the difference is not just the candle feed.

The symbol itself may have different contract settings.

The practical conclusion

An MT5 candle belongs to a specific broker environment

An MT5 candle is not simply "the market candle."

It is:

The candle for a specific symbol,
on a specific broker server,
using that broker's price feed,
using that broker's server time.

So if two terminals are connected to the same broker server and account environment, they should usually show the same live candles, even if the terminals are in different countries.

But if another account connects to a different broker entity, server, or symbol feed, the candles can differ.

That explains why:

Deriv South Africa account in London
=
Deriv South Africa account in South Africa

but:

Deriv UAE account in London
!=
Deriv South Africa account in London

The terminal location is not the main factor.

The broker server and feed are.

Final takeaway

Your strategy trades the broker's version of the market

For manual traders, this explains why charts may differ slightly between accounts.

For EA developers, it is even more important: candle differences can change signals, backtests, entries, exits, and profitability.

When building a trading bot, always remember:

Your strategy is not only trading the market.

It is trading the broker's version of the market.

MetaTrader 5

Learn more about MT5 and how Lanami tools operate on the platform.

Broker Considerations

Review broker factors that can affect execution, spreads, and breakout trading behavior.

Lanami Expert Advisor

See the automated breakout trading system built for disciplined MT5 execution.