Bài viết gần đây
| Pip vs Point trong MT5: Khác nhau thế nào, cách quy đổi & đặt SL/TP chuẩn
Được viết bởi Đặng Trí Thanh vào ngày 01/09/2026 lúc 11:18 | 52 lượt xem
Đặng Trí Thanh
Giám đốc Công nghệ · DNT Digital · Hướng Nghiệp Dữ Liệu
Giảng dạy Khóa Kiến thức Giao dịch Forex MQL MT5, Lập trình MT5, Bot Auto Trading.
Pip vs Point trong MT5: Khác nhau thế nào, cách quy đổi & đặt SL/TP chuẩn

Trong quá trình lập trình bot / EA trên MetaTrader 5 (MQL5) và giao dịch Forex, bạn sẽ liên tục bắt gặp hai khái niệm Pip và Point. Nhiều người mới nhầm lẫn chúng là một, nhưng thực tế hai đơn vị này khác nhau hoàn toàn về ý nghĩa và giá trị. Nếu hiểu sai, bạn sẽ đặt Stop Loss, Take Profit, hoặc tính khối lượng lệnh sai — dẫn đến rủi ro không kiểm soát được.
Bài viết này giải thích cặn kẽ: Point là gì, Pip là gì, mối quan hệ quy đổi giữa chúng, cách xác định đúng giá trị cho từng symbol (cặp tiền, Vàng, Crypto…), và cách áp dụng trong lập trình EA MQL5.
1. Point là gì trong MT5?
Point (điểm) là bước giá nhỏ nhất mà một symbol có thể thay đổi trên nền tảng MT5. Đây là khái niệm gốc, nền tảng nhất mà MT5 sử dụng nội bộ.
1.1. Cách xác định Point
Mỗi symbol có một số chữ số thập phân (digits) khác nhau hiển thị trên bảng giá. Point chính là đơn vị ứng với chữ số thập phân cuối cùng của giá:
- Cặp tiền tệ thường có 5 chữ số thập phân (ví dụ EURUSD = 1.08432) → 1 Point = 0.00001
- Một số cặp chỉ có 3 chữ số thập phân (ví dụ USDJPY = 154.253) → 1 Point = 0.001
- Vàng (XAUUSD) thường có 2 chữ số thập phân (ví dụ 2415.50) → 1 Point = 0.01
- Một số sàn hiển thị Vàng với 3 chữ số thập phân → 1 Point = 0.001
Như vậy, “Point là sự thay đổi giá nhỏ nhất của symbol đó” — đúng như định nghĩa trong bài giảng khóa Kiến thức Giao dịch Forex MQL MT5.
1.2. Point trong MQL5
Trong MQL5, bạn luôn có thể lấy giá trị Point của symbol hiện tại thông qua hàm:
// Lấy giá trị Point của symbol hiện tại
double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
Print("Point của ", _Symbol, " = ", point);
// Số chữ số thập phân
int digits = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS);
Print("Digits = ", digits);
Ví dụ kết quả chạy trên chart Vàng (XAUUSD):
Point của XAUUSD = 0.01
Digits = 2
Và trên EURUSD:
Point của EURUSD = 0.00001
Digits = 5
2. Pip là gì trong MT5?
Pip (Percentage In Point) là đơn vị đo lường tiêu chuẩn mà trader dùng để nói về biến động giá. Khác với Point (đơn vị nội bộ của nền tảng), Pip là đơn vị thương mại quen thuộc trong cộng đồng giao dịch.
2.1. Định nghĩa Pip
- Với hầu hết cặp tiền tệ: 1 Pip = 0.0001 (4 chữ số thập phân)
- Với các cặp có JPY: 1 Pip = 0.01 (2 chữ số thập phân)
- Với Vàng (XAUUSD): 1 Pip thường = 0.1 giá (1.0 giá = 100 Point = 10 Pip)
2.2. Vì sao cần phân biệt Pip và Point?
Vì nền tảng MT5 hiển thị giá với nhiều chữ số thập phân hơn so với trước đây (thời kỳ 4 số thập phân), nên giữa “một bước giá” và “một Pip” đã có một khoảng cách.
Cụ thể: nếu sàn hiển thị 5 chữ số thập phân (ví dụ 1.08432), thì một “bước giá nhỏ nhất” (Point) chỉ là 0.00001, trong khi 1 Pip vẫn được quy ước là 0.0001. Nghĩa là:
1 Pip = 10 Point (đối với hầu hết cặp tiền 5 chữ số)
Đây chính là điểm mấu chốt: Pip và Point không phải là một. 1 Pip thường bằng 10 Point.
3. Bảng quy đổi Pip ↔ Point cho từng loại symbol
Để dễ hình dung, ta có bảng quy đổi cho các symbol phổ biến:
| Symbol | Digits | 1 Point = | 1 Pip = | 1 Pip = bao nhiêu Point |
|---|---|---|---|---|
| EURUSD (5 số) | 5 | 0.00001 | 0.0001 | 10 Point |
| GBPUSD (5 số) | 5 | 0.00001 | 0.0001 | 10 Point |
| USDJPY (3 số) | 3 | 0.001 | 0.01 | 10 Point |
| EURJPY (3 số) | 3 | 0.001 | 0.01 | 10 Point |
| XAUUSD / Vàng (2 số) | 2 | 0.01 | 0.1 | 10 Point |
| XAUUSD / Vàng (3 số) | 3 | 0.001 | 0.1 | 100 Point |
| BTCUSD (2 số) | 2 | 0.01 | — | — |
4. Vì sao phải đổi từ Pip sang Point?
Khi giao dịch thủ công, trader thường nói “đặt SL 20 pip”, “TP 50 pip”. Nhưng khi lập trình EA / bot, MQL5 làm việc với Point — đơn vị nội bộ của nền tảng. Nếu bạn viết lệnh:
// Đặt SL cách giá hiện tại 20 pip
double sl = Bid - 20 * _Point; // SAI nếu hiểu nhầm
Bạn đang đặt SL cách giá 20 Point, tức chỉ 2 Pip — một con số rất nhỏ, dễ bị quét SL ngay lập tức. Đây là lỗi cực kỳ phổ biến của người mới lập trình bot.
4.1. Quy đổi đúng trong MQL5
Để đặt SL/TP theo Pip, bạn cần quy đổi sang Point trước:
// Số Point trong 1 Pip
// - Cặp 5 chữ số (EURUSD): 10 Point / Pip
// - Cặp 3 chữ số (USDJPY): 10 Point / Pip
// - Vàng 2 chữ số (XAUUSD): 10 Point / Pip
// - Vàng 3 chữ số: 100 Point / Pip
int pointsPerPip = 10;
// Nếu symbol có 3 chữ số và là Vàng (XAUUSD) -> 100
if (SymbolInfoInteger(_Symbol, SYMBOL_DIGITS) == 3 &&
StringFind(_Symbol, "XAU") >= 0)
pointsPerPip = 100;
// SL cách 20 pip
double slDistance = 20 * pointsPerPip * _Point;
double slPrice = NormalizeDouble(Bid - slDistance, _Digits);
Hoặc dùng hàm tiện ích để lấy số Point trong 1 Pip một cách tổng quát:
int PointsPerPip(const string symbol)
{
int digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
// Vàng 3 số thập phân: 1 pip = 100 point
if (digits == 3 && StringFind(symbol, "XAU") >= 0)
return 100;
// Mặc định: 1 pip = 10 point
return 10;
}
5. Thực hành: Tính SL/TP chuẩn cho Vàng (XAUUSD)
Giả sử bạn đang giao dịch Vàng với giá 2415.50, muốn đặt SL 200 Point và TP 400 Point (tức 20 Pip và 40 Pip theo cách nói thông thường).
5.1. Trên chart thủ công
- SL = 2415.50 − 2.00 = 2413.50
- TP = 2415.50 + 4.00 = 2419.50
Vì với Vàng 2 chữ số thập phân:
- 1 Point = 0.01
- 200 Point = 2.00 giá
- 400 Point = 4.00 giá
5.2. Trong MQL5
double entry = 2415.50;
double slPoints = 200; // = 20 pip
double tpPoints = 400; // = 40 pip
double sl = NormalizeDouble(entry - slPoints * _Point, _Digits);
double tp = NormalizeDouble(entry + tpPoints * _Point, _Digits);
Print("SL = ", sl, " | TP = ", tp);
// SL = 2413.50 | TP = 2419.50
5.3. Lệnh mua đầy đủ
// --- Lệnh BUY với SL/TP theo Point ---
MqlTradeRequest request = {};
MqlTradeResult result = {};
request.action = TRADE_ACTION_DEAL;
request.symbol = _Symbol;
request.volume = 0.10;
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
request.sl = sl;
request.tp = tp;
request.deviation = 10;
request.type_filling = ORDER_FILLING_IOC;
request.comment = "Buy theo Point";
if (OrderSend(request, result))
Print("Lệnh mua OK: ", result.order);
else
Print("Lệnh thất bại: ", result.retcode, " ", result.comment);
6. Lỗi thường gặp khi đặt SL/TP trong EA
6.1. Nhầm Pip và Point
Lỗi phổ biến nhất: nghĩ “1 Pip = 1 Point”. Hậu quả:
- Đặt SL 10 lần nhỏ hơn dự định (với cặp 5 chữ số)
- Bot bị quét SL liên tục vì khoảng cách quá nhỏ
- Kết quả backtest không đúng với ý đồ chiến lược
6.2. Không dùng NormalizeDouble
Giá SL/TP phải làm tròn đúng số chữ số thập phân của symbol, nếu không lệnh sẽ bị broker từ chối:
double sl = NormalizeDouble(Bid - 20 * PointsPerPip(_Symbol) * _Point, _Digits);
6.3. Không tính đến spread và mô hình fill
- Với lệnh BUY, SL/TP tính từ ASK
- Với lệnh SELL, SL/TP tính từ BID
- Kiểm tra chế độ
ORDER_FILLING_FOK / IOCphù hợp với symbol
6.4. Vàng khác cặp tiền
Đừng áp dụng công thức cặp tiền cho Vàng. Vàng có đặc thù riêng về Point và Pip (đặc biệt khi sàn hiển thị 3 chữ số). Luôn kiểm tra SYMBOL_DIGITS và SYMBOL_POINT trước khi tính toán.
7. Kiểm tra Point và Pip bằng Script trong MT5
Bạn có thể tạo một script đơn giản để in ra ngay giá trị Point, Digits, và quy đổi Pip của symbol đang mở:
//+------------------------------------------------------------------+
//| CheckPipPoint.mq5 — In thông số Point/Pip của symbol |
//+------------------------------------------------------------------+
#property strict
void OnStart()
{
string symbol = _Symbol;
double point = SymbolInfoDouble(symbol, SYMBOL_POINT);
int digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
int pointsPerPip = (digits == 3 && StringFind(symbol, "XAU") >= 0) ? 100 : 10;
Print("=== ", symbol, " ===");
Print("Point = ", point);
Print("Digits = ", digits);
Print("1 Pip = ", pointsPerPip, " Point");
Print("1 Pip = ", pointsPerPip * point, " giá");
}
Chạy script này trên chart EURUSD và XAUUSD, bạn sẽ thấy rõ sự khác biệt.
8. Áp dụng vào chiến lược giao dịch thực tế
Hiểu đúng Pip và Point giúp bạn:
- Đặt SL/TP chuẩn — tránh bị quét SL do khoảng cách sai
- Tính khối lượng lệnh đúng — dựa trên khoảng cách SL tính bằng Pip
- Backtest chính xác — tham số “khoảng cách SL/TP tính bằng Pip” nhất quán giữa các cặp
- Giao tiếp chuẩn — nói chuyện với trader khác, đọc tài liệu, xem webinar đều dùng Pip
8.1. Ví dụ tính khối lượng lệnh theo rủi ro
// Rủi ro 1% tài khoản, SL 20 pip
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskMoney = balance * 0.01;
double slDistanceInPrice = 20 * PointsPerPip(_Symbol) * _Point;
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double volume = riskMoney / (slDistanceInPrice / tickSize * tickValue);
volume = NormalizeDouble(volume, 2);
Print("Khối lượng đề xuất: ", volume, " lot");
9. Câu hỏi thường gặp (FAQ)
9.1. Pip và Point có giống nhau không?
Không. Point là bước giá nhỏ nhất của nền tảng; Pip là đơn vị đo biến động giá chuẩn. Với hầu hết cặp tiền, 1 Pip = 10 Point.
9.2. 1 Pip bằng bao nhiêu Point trong MT5?
- Cặp tiền 5 chữ số (EURUSD): 1 Pip = 10 Point
- Cặp JPY 3 chữ số (USDJPY): 1 Pip = 10 Point
- Vàng 2 chữ số: 1 Pip = 10 Point
- Vàng 3 chữ số: 1 Pip = 100 Point
9.3. 1 Point của Vàng bằng bao nhiêu?
Với XAUUSD hiển thị 2 chữ số thập phân, 1 Point = 0.01 giá. Một giá Vàng = 100 Point.
9.4. Khi lập trình EA, nên dùng Pip hay Point?
Trong MQL5, lệnh luôn được tính theo Point (qua biến _Point). Bạn cần quy đổi từ Pip sang Point trước khi đặt SL/TP.
9.5. Làm sao biết symbol hiển thị bao nhiêu chữ số?
Dùng hàm SymbolInfoInteger(symbol, SYMBOL_DIGITS) hoặc xem trực tiếp trên bảng giá / “Specification” của symbol trong MT5.
10. Kết luận
Point là đơn vị nội bộ của MT5 — bước giá nhỏ nhất. Pip là đơn vị tiêu chuẩn trader dùng để nói về biến động giá. Mối quan hệ phổ biến nhất là 1 Pip = 10 Point.
Hiểu rõ sự khác biệt này giúp bạn:
- Tránh lỗi đặt SL/TP sai khi lập trình bot
- Backtest và tối ưu EA chính xác hơn
- Giao tiếp hiệu quả trong cộng đồng trader
Nếu bạn muốn học bài bản từ nền tảng — từ khái niệm nến, Pip/Point, lệnh, đến lập trình bot EA MQL5 chạy thực tế, hãy tham gia khóa học Kiến thức Giao dịch tài chính & Lập trình đầu tư tự động (Forex MQL MT5 Cơ bản) tại Hướng Nghiệp Dữ Liệu.
🎬 Xem giải thích nhanh 60 giây: Pip vs Point khác nhau thế nào?
📚 Đăng ký khóa học: https://www.huongnghiepdulieu.com/kien-thuc-giao-dich-tai-chinh-forex-mt5/
Hướng Nghiệp Dữ Liệu — Đào tạo lập trình & giao dịch thực chiến · Hotline / Zalo: 0934 145 100
Weekly Digest — Nhận Bản Tin Hàng Tuần
Nhận các bài viết phân tích kỹ thuật chuyên sâu, thuật toán giao dịch tự động (Trading Bot) và các giải pháp công nghệ mới nhất từ Hướng Nghiệp Dữ Liệu.
Đặng Trí Thanh
Giám đốc Công nghệ · DNT Digital · Giảng viên HNDLĐặng Trí Thanh — Founder & CTO · Hướng Nghiệp Dữ Liệu - DNT Digital. Chuyên đào tạo và triển khai thực chiến Python, MT5 và hệ thống bot auto trading / IB cho học viên và doanh nghiệp.