Vì sao cùng một nến MT5 có thể trông khác nhau trên các tài khoản broker khác nhau
Vì sao nến MT5, giá trị SMA, tín hiệu chỉ báo và hành vi EA có thể khác nhau giữa các tài khoản broker ngay cả khi tên symbol trông giống nhau.
Vì sao nến MT5 có thể khác nhau
Một cây nến không phải lúc nào cũng là dữ liệu thị trường mang tính phổ quát
Khi mọi người mới bắt đầu xây dựng bot giao dịch hoặc chỉ báo trong MetaTrader 5, rất dễ cho rằng một cây nến là một mẩu dữ liệu thị trường mang tính phổ quát.
Ví dụ, bạn có thể nghĩ:
"Nến H1 lúc 20:00 ngày 6 tháng 5 năm 2026 phải giống nhau ở mọi nơi."
Nhưng trên thực tế, điều đó không phải lúc nào cũng đúng.
Bạn có thể có hai terminal MT5 chạy ở các quốc gia khác nhau, cả hai đều hiển thị cùng một bộ nến. Sau đó bạn mở một tài khoản khác với thứ trông như cùng broker và symbol, và đột nhiên giá mở, đóng của nến, giá trị SMA hoặc tín hiệu chỉ báo lại khác đi một chút.
Bài viết này giải thích vì sao điều đó xảy ra.
Hiểu lầm: MT5 nhận các nến đã hoàn tất
Biểu đồ live được xây dựng từ tick và báo giá
Một giả định phổ biến là MetaTrader 5 nhận dữ liệu nến theo kiểu:
Broker gửi:
Nến H1 lúc 20:00
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3306.80
Nhưng đó không phải cách biểu đồ live thường hoạt động.
Trên biểu đồ live, MT5 nhận một luồng cập nhật giá từ broker. Những cập nhật này thường được gọi là tick hoặc quote.
Terminal sau đó dùng các mức giá đến liên tục đó để xây dựng cây nến hiện tại.
Vì vậy thay vì nhận một nến H1 hoàn chỉnh, MT5 nhận các cập nhật giá live như sau:
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
Sau đó MT5 xây dựng cây nến từ các mức giá đó.
Một cây nến live được xây dựng như thế nào
Mốc thời gian của nến đánh dấu thời điểm bắt đầu của kỳ
Giả sử chúng ta đang xem một nến H1 với timestamp:
2026.05.06 20:00
Điều đó không có nghĩa là cây nến chỉ xảy ra đúng tại 20:00.
Nó có nghĩa là cây nến bao phủ khoảng thời gian bắt đầu lúc 20:00 và kết thúc trước khi nến H1 tiếp theo bắt đầu.
Nói đơn giản:
Nến 20:00 = giá từ 20:00:00 đến ngay trước 21:00:00
Cây nến được xây dựng như sau:
Open = mức giá đầu tiên nhận được trong giờ đó
High = mức giá cao nhất nhận được trong giờ đó
Low = mức giá thấp nhất nhận được trong giờ đó
Close = mức giá mới nhất nhận được trong giờ đó
Khi cây nến vẫn đang hình thành, giá đóng chưa phải cuối cùng.
Giá đóng tiếp tục thay đổi mỗi khi có một mức giá mới được gửi tới.
Ví dụ về một cây nến đang hình thành
Giá đóng thay đổi cho đến khi nến hoàn tất
Ví dụ:
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
Khi nến H1 tiếp theo bắt đầu, nến trước đó được coi là đã đóng.
Trong thực tế, điều này thường xảy ra khi tick đầu tiên của giờ tiếp theo xuất hiện.
Ai quyết định các giá trị cuối cùng của nến?
Nguồn dữ liệu broker và thời gian server định hình biểu đồ
Các giá trị cuối cùng của nến được quyết định bởi nguồn giá live của broker và thời gian server.
Terminal MT5 của bạn xây dựng biểu đồ cục bộ, nhưng nó xây từ dữ liệu do server broker cung cấp.
Vì vậy nến cuối cùng là kết quả của:
Nguồn giá của broker
+ Thời gian server của broker
+ Đặc tả symbol
+ Cài đặt phiên giao dịch
+ Luồng tick/quote mà terminal nhận được
Vị trí địa lý của bạn thường không quan trọng.
Một trader ở London và một trader ở Nam Phi có thể thấy đúng cùng một cây nến nếu họ kết nối tới cùng một server broker, dùng cùng loại tài khoản và cùng một symbol.
Nhưng một server broker khác hoặc khu vực pháp lý tài khoản khác có thể tạo ra các nến khác nhau.
Ví dụ: Cùng broker, khác khu vực tài khoản
Môi trường tài khoản quan trọng hơn vị trí của terminal
Giả sử bạn có ba terminal MT5:
Terminal A:
Vị trí: London
Tài khoản broker: Deriv South Africa
Symbol: XAUUSD
Terminal B:
Vị trí: Nam Phi
Tài khoản broker: Deriv South Africa
Symbol: XAUUSD
Terminal C:
Vị trí: London
Tài khoản broker: Deriv UAE
Symbol: XAUUSD
Terminal A và Terminal B có thể hiển thị cùng các giá trị nến vì chúng kết nối tới cùng một môi trường dữ liệu phía broker.
Chúng có thể có:
- Cùng server
- Cùng feed cho symbol
- Cùng múi giờ server
- Cùng đặc tả symbol
- Cùng cách dựng nến
Nhưng Terminal C có thể khác vì tài khoản UAE có thể kết nối tới một server Deriv khác hoặc môi trường giao dịch khác.
Tài khoản đó có thể có:
- Thời gian server khác
- Feed thanh khoản khác
- Cấu hình symbol khác
- Mô hình spread khác
- Phiên giao dịch khác
- Lọc quote khác
- Dữ liệu lịch sử khác
Ngay cả khi tên symbol trông giống nhau, môi trường dữ liệu thực tế có thể không hoàn toàn giống nhau.
Vấn đề timestamp
Một nến 20:00 là theo thời gian server của broker
Một trong những nguồn gây nhầm lẫn lớn nhất là thời gian của nến.
Khi MT5 hiển thị một nến H1 tại:
20:00
thời gian đó dựa trên thời gian của server broker, không nhất thiết là thời gian trên máy tính của bạn.
Vì vậy hai tài khoản có thể đều hiển thị một nến được gắn nhãn:
20:00
nhưng các nến đó có thể tương ứng với các khoảng thời gian UTC ngoài đời thực khác nhau.
Ví dụ:
Broker Server A:
20:00 giờ server = 18:00 UTC
Broker Server B:
20:00 giờ server = 16:00 UTC
Cả hai biểu đồ đều hiển thị nến 20:00, nhưng các nến không bao phủ cùng một giờ ngoài đời thực.
Điều đó có nghĩa là open, high, low, close và các chỉ báo đều có thể khác.
Vì sao khung thời gian cao bị ảnh hưởng nhiều hơn
Thời gian server định hình nến H1, H4, D1 và W1
Điều này trở nên đặc biệt quan trọng với các khung thời gian cao như:
- H1
- H4
- D1
- W1
Khung thời gian càng cao, thời gian server càng quan trọng.
Một nến D1 trên một broker có thể mở và đóng ở thời điểm ngoài đời thực khác với nến D1 trên broker khác.
Điều đó có thể ảnh hưởng đến:
- Đỉnh và đáy trong ngày
- Giá đóng nến ngày
- Đường trung bình động
- ATR
- Mức breakout
- Vùng hỗ trợ và kháng cự
- Kết quả backtest
- Lệnh vào và thoát của EA
Vì sao SMA có thể khác nhau
Chỉ báo được tính từ dữ liệu nến theo từng broker
SMA không được tính từ một nguồn dữ liệu thị trường mang tính phổ quát.
Nó được tính từ các giá đóng của nến có sẵn trên biểu đồ cụ thể đó.
Ví dụ, SMA 10 kỳ trên H1 được tính từ 10 giá đóng của 10 nến H1 gần nhất.
Đơn giản hóa:
SMA = trung bình của 10 giá đóng gần nhất
Vì vậy nếu hai tài khoản broker có giá đóng H1 hơi khác nhau, chúng cũng sẽ có giá trị SMA hơi khác nhau.
Điều này có thể dẫn đến:
Tài khoản A:
Giá đóng dưới SMA
EA kích hoạt thiết lập sell
Tài khoản B:
Giá đóng hơi trên SMA
EA không kích hoạt
Cả hai nền tảng đều có thể đang hoạt động đúng. Chúng chỉ đang dùng dữ liệu nến nền tảng khác nhau.
Các chiến lược bị ảnh hưởng bởi khác biệt nến
Giá đóng chính xác có thể thay đổi tín hiệu chính xác
Điều này đặc biệt liên quan với các chiến lược phụ thuộc vào giá đóng nến chính xác, chẳng hạn:
- Chiến lược cắt nhau SMA
- Chiến lược breakout
- Mẫu nến từ chối (rejection candle)
- Logic swing high / swing low
- Chiến lược biên độ theo ngày
- Hệ thống box dựa trên ATR
Chênh lệch nhỏ của nến cũng có thể đủ để thay đổi một tín hiệu, bộ lọc hoặc quyết định quản lý lệnh.
Biểu đồ live vs biểu đồ lịch sử
Nến hiện tại thay đổi theo từng tick
Trên biểu đồ live, MT5 xây dựng cây nến hiện tại từ các tick live đến.
Với cây nến hiện tại, trong MQL5:
iClose(_Symbol, PERIOD_H1, 0)
trả về giá đóng live mới nhất của nến H1 đang hình thành.
Giá trị đó có thể thay đổi theo từng tick.
Nến trước đó được truy cập bằng:
iClose(_Symbol, PERIOD_H1, 1)
Đó là nến H1 đã đóng gần nhất.
Tuy nhiên, ngay cả giá trị đã đóng đó ban đầu cũng đến từ luồng tick live của broker. Nó không phải một giá trị phổ quát được chia sẻ bởi tất cả broker.
Nó được hình thành bên trong môi trường broker/tài khoản/server đó.
Vì sao điều này quan trọng với Expert Advisors
Cùng một mã có thể hoạt động khác nhau trên dữ liệu khác nhau
Nếu bạn đang xây dựng một EA, hành vi này rất quan trọng.
Một chiến lược hoạt động trên một server broker có thể hành xử hơi khác trên một server broker khác, ngay cả khi dùng cùng mã và cùng tham số đầu vào.
Ví dụ:
Broker A:
Giá đóng H1 cắt xuống dưới SMA
EA kích hoạt hộp breakout
Broker B:
Giá đóng H1 không cắt xuống dưới SMA
EA không làm gì
Hoặc:
Broker A:
ATR ngày = 24.5
Broker B:
ATR ngày = 26.1
Chênh lệch nhỏ đó có thể thay đổi:
- Kích thước box
- Stop loss
- Take profit
- Thời điểm vào lệnh
- Tính toán rủi ro
- Tần suất giao dịch
- Kết quả backtest
- Kết quả live
Điều này không có nghĩa MT5 bị lỗi.
Nó có nghĩa EA của bạn nhạy với dữ liệu.
Cách broker dựng nến là một phần của môi trường giao dịch.
Cách so sánh hai tài khoản đúng cách
In ra dữ liệu nến thực tế
Nếu bạn muốn so sánh hai tài khoản MT5, đừng chỉ nhìn biểu đồ bằng mắt.
Hãy in ra dữ liệu thực tế.
Ví dụ, trong MQL5 bạn có thể so sánh:
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
);
}
}
Chạy đoạn này trên cả hai tài khoản và so sánh:
- Tên server
- Tên symbol
- Timestamp của bar
- Open
- High
- Low
- Close
- Tick volume
So sánh cả thuộc tính symbol
Feed có thể không phải khác biệt duy nhất
Bạn cũng nên so sánh các thuộc tính của symbol:
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));
}
Đôi khi khác biệt không chỉ nằm ở feed nến.
Bản thân symbol có thể có các thiết lập hợp đồng khác nhau.
Kết luận thực tiễn
Một cây nến MT5 thuộc về một môi trường broker cụ thể
Một cây nến MT5 không đơn giản là "cây nến của thị trường".
Nó là:
Cây nến cho một symbol cụ thể,
trên một server broker cụ thể,
được tạo từ nguồn giá của broker đó,
theo thời gian server của broker đó.
Vì vậy nếu hai terminal kết nối tới cùng một server broker và cùng môi trường tài khoản, chúng thường sẽ hiển thị cùng các nến live, ngay cả khi terminal ở các quốc gia khác nhau.
Nhưng nếu một tài khoản khác kết nối tới một pháp nhân broker khác, server khác hoặc feed symbol khác, các nến có thể khác nhau.
Điều đó giải thích vì sao:
Tài khoản Deriv South Africa ở London
=
Tài khoản Deriv South Africa ở Nam Phi
nhưng:
Tài khoản Deriv UAE ở London
!=
Tài khoản Deriv South Africa ở London
Vị trí của terminal không phải yếu tố chính.
Server và feed của broker mới là yếu tố chính.
Tóm tắt cuối cùng
Chiến lược của bạn giao dịch theo phiên bản thị trường của broker
Đối với trader thủ công, điều này giải thích vì sao biểu đồ có thể khác nhau một chút giữa các tài khoản.
Đối với nhà phát triển EA, điều này còn quan trọng hơn: khác biệt nến có thể thay đổi tín hiệu, backtest, điểm vào, điểm thoát và lợi nhuận.
Khi xây dựng bot giao dịch, hãy luôn nhớ:
Chiến lược của bạn không chỉ giao dịch thị trường.
Nó đang giao dịch theo phiên bản thị trường của broker.
Tìm hiểu thêm về MT5 và cách các công cụ Lanami hoạt động trên nền tảng này.
Xem lại các yếu tố của broker có thể ảnh hưởng đến khớp lệnh, spread và hành vi giao dịch breakout.
Xem hệ thống giao dịch breakout tự động được xây dựng để thực thi kỷ luật trên MT5.