Bài viết gần đây
| Martingale là gì? Thua gấp đôi lên — nguyên lý, rủi ro & cách kiểm soát
Được viết bởi Đặng Trí Thanh vào ngày 01/09/2026 lúc 21:08 | 42 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.
Martingale là gì? Thua gấp đôi lên — nguyên lý, rủi ro & cách kiểm soát

Martingale là một trong những chiến thuật quản lý vốn gây tranh cãi nhất trong giao dịch Forex. Nguyên lý rất đơn giản: sau mỗi lệnh thua, tăng gấp đôi khối lượng cho đến khi thắng — với kỳ vọng lệnh thắng cuối cùng sẽ bù đắp toàn bộ các lệnh thua trước đó và có lãi.
Nghe có vẻ “không thể thua”, nhưng thực tế Martingale ẩn chứa rủi ro rất lớn khi gặp chuỗi thua liên tiếp. Bài viết này phân tích đầy đủ: nguyên lý, ví dụ cụ thể, công thức tính lot, rủi ro và cách kiểm soát khi lập trình bot MQL5.
1. Martingale hoạt động như thế nào?
1.1. Ví dụ đơn giản: trò chơi đỏ đen
Giảng viên trong khóa Kiến thức Giao dịch Forex MQL MT5 lấy ví dụ trò chơi xác suất 50/50 (đỏ/đen) để minh họa:
- Lệnh 1: đặt 1 đồng → nếu thua, lỗ 1 đồng
- Lệnh 2: đặt 2 đồng → nếu thắng, lời 2 − lỗ 1 = lời 1 đồng
- Nếu lệnh 2 thua (tổng lỗ 3), lệnh 3 đặt 4 đồng → thắng lời 4 − 3 = lời 1 đồng
- Nếu tiếp tục thua: 8 → 16 → 32 … lệnh thắng cuối cùng luôn bù lỗ và lời đúng 1 đồng
Chuỗi số: 1, 2, 4, 8, 16, 32, 64…
1.2. Công thức tổng quát
Lot thứ n = Lot ban đầu × 2^(n − 1)
Tổng lỗ sau n lệnh thua = Lot ban đầu × (2^n − 1)
Với lot ban đầu 0.01:
- Lệnh 5: 0.01 × 16 = 0.16 lot
- Lệnh 10: 0.01 × 512 = 5.12 lot
- Lệnh 12: 0.01 × 2048 = 20.48 lot
Như giảng viên nhấn mạnh: “cược mà nó gấp 512 lần mức cược ban đầu” — con số tăng cực nhanh theo cấp số nhân.
2. Vì sao Martingale nguy hiểm?
2.1. Rủi ro thua chuỗi liên tiếp
Xác suất thua n lệnh liên tiếp trong trò 50/50 là (0.5)^n:
| Số lệnh thua liên tiếp | Xác suất | Lot cần (bắt đầu 0.01) |
|---|---|---|
| 5 | 3.1% | 0.16 |
| 8 | 0.4% | 1.28 |
| 10 | 0.1% | 5.12 |
| 12 | 0.02% | 20.48 |
Nghe có vẻ nhỏ, nhưng trong giao dịch thực tế, chuỗi thua 8-10 lệnh liên tiếp hoàn toàn có thể xảy ra, đặc biệt trong thị trường đi ngang hoặc tin tức lớn.
2.2. Vấn đề margin
Khi lot tăng theo cấp số nhân, margin yêu cầu cũng tăng theo. Tài khoản nhỏ sẽ bị Stop Out (quét margin) trước khi lệnh thắng kịp xuất hiện — nghĩa là bạn mất toàn bộ tài khoản khi chuỗi thua còn đang tiếp diễn.
2.3. Vấn đề SL/TP
Nếu đặt SL theo khoảng cách cố định (cùng SL/TP cho mọi lệnh), thì lệnh cuối cùng thắng mới bù được lỗ — nhưng nếu bị quét SL liên tục, tổng lỗ cũng tăng theo cấp số nhân.
3. Lập trình Martingale trong MQL5
3.1. Tính khối lượng gấp đôi
// Tính lot gấp đôi sau mỗi lệnh thua
double lotBase = 0.01; // lot ban đầu
int multiply = 2; // hệ số gấp
int losses = 0; // số lệnh thua liên tiếp
double lot = lotBase * MathPow(multiply, losses);
lot = NormalizeDouble(lot, 2);
3.2. Đếm số lệnh thua liên tiếp
// Đếm số lệnh thua liên tiếp gần nhất trên lịch sử
int CountConsecutiveLosses()
{
int count = 0;
for(int i = 0; i < HistoryDealsTotal(); i++)
{
ulong ticket = HistoryDealGetTicket(i);
if(ticket == 0) continue;
double profit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
if(profit < 0)
count++;
else
break; // gặp lệnh thắng thì dừng
}
return count;
}
3.3. Đặt cùng SL/TP cố định
Để kiểm soát rủi ro, nhiều bot Martingale dùng cùng mức SL/TP (tính theo điểm) cho mọi lệnh:
// SL/TP cố định tính bằng Point
int slPoints = 200; // = 20 pip
int tpPoints = 400; // = 40 pip
double sl = NormalizeDouble(Bid - slPoints * _Point, _Digits);
double tp = NormalizeDouble(Bid + tpPoints * _Point, _Digits);
4. Cách kiểm soát rủi ro Martingale
4.1. Giới hạn số lần gấp (Max Martingale Steps)
Đặt giới hạn tối đa số lần gấp, ví dụ 5 lần — nếu vượt quá thì dừng hoặc cắt lỗ toàn bộ:
input int MaxMartingaleSteps = 5;
if(losses >= MaxMartingaleSteps)
{
// Dừng gấp, đóng toàn bộ hoặc chờ tín hiệu mới
Print("Vượt giới hạn Martingale, dừng gấp lệnh");
return;
}
4.2. Kiểm tra margin trước khi vào lệnh
// Kiểm tra margin khả dụng trước khi đặt lot lớn
double freeMargin = AccountInfoDouble(ACCOUNT_MARGIN_FREE);
double marginNeeded = lot * SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE)
* 100000 / leverage;
if(marginNeeded > freeMargin * 0.5)
{
Print("Không đủ margin, bỏ qua lệnh gấp");
return;
}
4.3. Giới hạn drawdown tối đa
// Dừng giao dịch nếu drawdown vượt ngưỡng (VD 30%)
input double MaxDrawdownPercent = 30.0;
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
double equity = AccountInfoDouble(ACCOUNT_EQUITY);
double dd = (balance - equity) / balance * 100;
if(dd >= MaxDrawdownPercent)
{
Print("Drawdown quá lớn, dừng bot");
ExpertRemove();
}
4.4. Không đặt cùng SL cố định trong xu hướng mạnh
Trong thị trường xu hướng mạnh, chuỗi thua kéo dài. Nên kết hợp Martingale với bộ lọc xu hướng (MA, MACD) để chỉ gấp khi xu hướng còn ủng hộ.
5. Martingale có nên dùng không?
Ưu điểm
- Tỷ lệ thắng cao (gần 100% nếu tài khoản đủ lớn và chuỗi thua không dài)
- Lời ổn định từng chuỗi nhỏ
Nhược điểm
- Rủi ro thua toàn bộ tài khoản khi chuỗi thua dài
- Yêu cầu margin rất lớn theo cấp số nhân
- Bị Stop Out trước khi kịp gỡ
- Tâm lý căng thẳng khi lệnh gấp liên tục thua
Kết luận: Martingale là con dao hai lưỡi. Nếu dùng, phải kết hợp giới hạn số lần gấp, kiểm tra margin, giới hạn drawdown và hiểu rõ tài khoản có thể chịu được chuỗi thua bao nhiêu lệnh.
6. Câu hỏi thường gặp (FAQ)
6.1. Martingale có chắc thắng không?
Về lý thuyết nếu tài khoản vô hạn thì gần như chắc thắng, nhưng tài khoản thực có giới hạn margin → có thể bị Stop Out giữa chuỗi thua.
6.2. Lot gấp bao nhiêu lần mỗi lệnh?
Thường gấp 2 lần (1-2-4-8-16…). Có biến thể gấp 1.5 hoặc 3, tùy chiến thuật.
6.3. Martingale có phù hợp người mới không?
Không khuyến khích người mới dùng Martingale vì rủi ro lớn. Nên học quản lý vốn chuẩn trước.
6.4. Làm sao tránh bị Stop Out khi dùng Martingale?
Giới hạn số lần gấp, kiểm tra margin trước mỗi lệnh, dùng tài khoản lớn và khối lượng nhỏ.
7. Kết luận
Martingale là chiến thuật thua gấp đôi lên — lệnh thắng cuối cùng luôn bù lỗ và có lãi 1 đơn vị, nhưng rủi ro thua chuỗi liên tiếp là rất lớn. Khi lập trình bot MQL5, hãy luôn đi kèm giới hạn số lần gấp, kiểm tra margin và giới hạn drawdown.
Nếu bạn muốn hiểu sâu về quản lý vốn, lập trình bot EA và kiểm soát rủi ro thực chiến, hãy tham gia khóa 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: Martingale là gì?
📚 Đă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.