| 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Đặ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

Pip vs Point trong MT5 - Video 60 giay
🎬 Xem video giai thich 60 giay: Pip vs Point khac nhau the nao?

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 PipPoint. 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)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 PointTP 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 / IOC phù 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_DIGITSSYMBOL_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:

  1. Đặt SL/TP chuẩn — tránh bị quét SL do khoảng cách sai
  2. Tính khối lượng lệnh đúng — dựa trên khoảng cách SL tính bằng Pip
  3. 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
  4. 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

Đặng Trí Thanh

Đặng Trí Thanh

Giám đốc Công nghệ · DNT Digital · Giảng viên HNDL
870 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Đặ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.

Đội ngũ hỗ trợ

Đặng Trí Thanh
Đặng Trí Thanh
Giám đốc Công nghệ DNT Digital
Zalo 0934145100
Mộng Cầm
Mộng Cầm
Hỗ trợ khách hàng · Huấn luyện viên
Zalo 0927909257
Khánh Linh
Khánh Linh
Hỗ trợ khách hàng · Huấn luyện viên
Zalo 0927909582