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.
Learn more about MT5 and how Lanami tools operate on the platform.
Review broker factors that can affect execution, spreads, and breakout trading behavior.
See the automated breakout trading system built for disciplined MT5 execution.