| Phân Biệt Cấu Trúc EA (Expert Advisor) Và Script Trong MT5 – Khi Nào Xài Mã Code Nào?

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 12:42 | 6 lượt xem

Lính mới thường phân vân giữa tạo File EA hay Script. Sự khác biệt nằm ở vòng đời sống của đoạn Code.


1. Script (Chạy 1 Lần Rồi Phụt Tắt)

Script dùng cho tác vụ tức thì. Ví dụ: Code 1 nút bấm “Đóng hết mọi lệnh đang Lời” hoặc “Kẻ 5 đường Fibo”. Hàm duy nhất của nó là OnStart().

2. EA – Expert Advisor (Vòng Lặp Vĩnh Cửu)

EA là con Bot căng mắt nhìn Chart 24/24. Nó dùng hàm OnTick() để chạy logic mỗi khi thị trường nháy giá mới. Chơi Auto Trading Auto-Buy/Sell thì bắt buộc rèn luyện hệ thống EA.

Đặc Điểm Script MQL5 EA MQL5
Thời Gian Sống 1 Lần Khởi Chạy Vô Tận

📚 TỪ ĐIỂN MQL5 & MT5 CHO NGƯỜI MỚI (SILO 1)

🚀 Căn Nhà Mới Cho EA Của Bạn

EA MQL5 cần được treo 24/5 không được ngắt điện. Thuê VPS chuyên nghiệp là bắt buộc. Bạn có thể nhận VPS cực mạnh miễn phí từ Exness.

ĐĂNG KÝ EXNESS & THUÊ VPS MIỄN PHÍ TRỌN ĐỜI

| Slippage (Trượt Giá) Trong Định Lượng MT5 Nỗi Ám Ảnh Của Auto Trading & Cách Khắc Phục

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 12:42 | 6 lượt xem

Cài Stoploss 100$, nhưng khi giá sập thì lỗ 500$? Đó chính là Slippage (Trượt giá). Đây là kẻ thù số 1 của Auto Trading.


1. Slippage Là Gì?

Sự chênh lệch giữa giá máy tính yêu cầu và giá trị thực tế sàn khớp được gọi là trượt giá. Thường xảy ra khi thị trường ra tin tức hoặc cạn thanh khoản (Liquidity).

2. Fix Trượt Giá Bằng Code MQL5

Dân code Pro dùng hàm Deviation để giới hạn biên độ trượt. Nếu trượt quá mức này, Bot sẽ hủy lệnh (chỉ áp dụng Instant Execution).

MqlTradeRequest request={0};
request.deviation = 30; // Chịu trượt tối đa 30 Pts

🛡️ Thuốc Giải Độc Trượt Giá Đỉnh Cao

Không có code nào cản được tin tức mạnh. Thuốc giải tận gốc là chọn Broker có thanh khoản khổng lồ (Raw Spread) để bù lấp thanh khoản tức thì.

MỞ TÀI KHOẢN RAW EXNESS – KHẮC TÌNH SLIPPAGE

| Magic Number Là Gì? Bí Thuật Đánh Dấu Lệnh Khi Code Bot MQL5 Để Không Bị Loạn

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 11:07 | 8 lượt xem

Nếu bạn thả 3 con Bot cùng trade trên Cặp Vàng (XAUUSD), làm sao mỗi con Bot biết lệnh nào là của nó để chốt lời mà không đóng nhầm lệnh của con khác? Chìa khóa chính là Magic Number (Con số ma thuật). Đây là tham số bắt buộc phải có khi giao dịch định lượng.


1. Magic Number Trong MT5 Là Gì?

Nó giống như “Căn cước công dân” (ID) ẩn đính kèm vào mỗi lệnh khi Bot gửi yêu cầu lên sàn.

  • Trade tay (Manual): Magic Number = 0.
  • Trade EA (Bot): Tùy ý khai báo (VD: 9999, 12345).

2. Khai Báo Trong MQL5

#include 
CTrade trade;

input ulong InpMagicNumber = 123456; 

int OnInit() {
   trade.SetExpertMagicNumber(InpMagicNumber); 
   return(INIT_SUCCEEDED);
}

Để code Bot giỏi, bạn cũng cần một lượng kiến thức Forex MT5 nền tảng vững chắc.


📚 TỪ ĐIỂN MQL5 & MT5 CHO NGƯỜI MỚI (SILO 1)

💻 Nhồi Nhiều Bot Cần Máy Chủ Tốt

Nếu bạn setup 5 Magic Number khác nhau chạy song song, Server yếu sẽ làm loạn tín hiệu. Hãy dùng Broker lớn có hạ tầng Server định lượng siêu khỏe.

ĐĂNG KÝ EXNESS – SERVER CHUYÊN KIẾN TRÚC BOT

| Bài 10: “Giao Việc Cho Người Máy” – Xóa Bỏ Dây Trói Bằng Thuê VPS Chạy MT5 24/7

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 10:40 | 18 lượt xem

Lời chúc mừng lớn nhất dành cho bạn khi đi đến chặng cuối cùng của Chuỗi Serie Lập trình Auto Trading. Bot của bạn hoàn thiện, chạy thử OK. Bước cuối cùng: Đưa em nó lên mây (Cloud Server – VPS).


1. Thiết Lập VPS Thay Cơm Laptop

Bot đòi hỏi chạy 24/5 trong số 5 ngày thị trường Forex mở cửa. Nếu laptop đột tử sập nguồn lúc giá chạy ngược, Bot chết dứng. Thuê VPS – Máy ảo cá nhân treo trên Internet sẽ giúp Bot bất tử.

2. Yếu Tố “Độ Trễ Phản Xạ” Cốt Tử

Ping time giữa VPS chạy Bot và Server của Broker (Sàn) quyết định tốc độ vào SL, TP. Đừng đặt VPS Châu Á nếu Server Sàn ở EU, độ trễ 200ms bằng việc vứt rác chiến thuật Scalping của bạn.


Nhận Ngay VPS Tốc Độ Cao Hoàn Toàn Miễn Phí!

Thuê VPS mỗi tháng tốn kém 20$ – 50$. Thay vào đó, nếu bạn có tài khoản giao dịch MT5 Exness thực với khối lượng tốt, bạn sẽ nhận được VPS free cực mạnh, cài chung Host với Master Server, ping dưới 2ms.

ĐĂNG KÝ EXNESS & YÊU CẦU VPS FREE TRỌN ĐỜI

| Bài 9: Sát Hạch Bot: Hướng Dẫn Backtest & Tối Ưu Hóa Bằng Strategy Tester MT5

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 10:40 | 21 lượt xem

Code bot xong mang ra đánh tiền thật ngay? Chúc mừng bạn chuẩn bị nướng sạch tài khoản. Bạn phải nhét Bot vào “Cỗ máy thời gian” Strategy Tester MT5 đễ xem khả năng sống sót trong 5 năm quá khứ.


1. Strategy Tester MT5 Huyền Thoại

MT5 xử lý dữ liệu Đa Luồng (Multi-threading). Quá trình backtest 10 năm dữ liệu Tick thực (Real Ticks) chỉ diễn ra trong nháy mắt so với bản MT4 cổ lỗ sĩ.

2. Cảnh báo cháy nhà: Hội chứng Overfitting

Overfitting (Tối ưu hóa quá mức): Việc coder nắn nót tham số đến mức hoàn hảo 100% với dữ liệu quá khứ. Bot học vẹt lịch sử, ra thực tế thì sấp mặt. Bạn cần thực hiện Walk-Forward Testing để loại bỏ sự ảo tưởng này.


🛠️ Data Của Broker Rất Quan Trọng

Nếu Data lịch sử của sàn nến hổng, thiếu Tick, Strategy Tester báo kết quả siêu lỗi. Hãy kết nối API của sàn uy tín nhất (Tier 1) để chạy Backtest chuẩn.

MỞ TÀI KHOẢN ZERO – DOWNLOAD TICK HISTORY

| Bài 8: Xây Dựng Bot Hoàn Chỉnh Đầu Tiên: Chiến Lược Giao Cắt MA

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 10:39 | 16 lượt xem

Bây giờ là lúc lắp ráp Lego để hoàn thiện một EA từ A đến Z: Chiến lược Giao cắt đường trung bình (Moving Average Crossover).


1. Logic Của Chiến Lược

  • Nguyên liệu: Một MA Nhanh (10) và một MA Chậm (50).
  • BUY: MA Nhanh cắt xuyên MA Chậm từ dưới lên.
  • SELL: MA Nhanh cắt qua MA Chậm từ trên xuống.

2. Khung Xương EA

Trong OnInit, ta lấy thông số iMA kép. Kế tiếp ở OnTick, ta check vị trí 2 đường hiện tại (Current point) và nến liền kề (Previous point) để xác nhận điểm cắt. Nếu đúng mưu đồ, gọi OrderSend() xả lệnh.


🚀 Đưa Con Bot Lên Thử Dàn Lửa!

Con Bot MA Crossover này đáng gờm trên chart H4. Cắm vào ngay vào Demo Raw Spread để nó chạy.

MỞ TÀI KHOẢN RAW & CẮM BOT NGAY

| Bài 7: Code Chức Năng Quản Lý Lệnh Nâng Cao: Trailing Stop & Break Even

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 10:39 | 17 lượt xem

Điểm khác biệt giữa chuyên gia và lính mới nằm ở khả năng Gồng Lời (Manage Open Positions) tự động. Hôm nay ta sẽ học về Trailing Stop và Break-even.


1. Chức năng Break-Even (Hòa vốn vĩnh viễn)

Khi lệnh lãi được khoảng cách X, Bot tự động dùng hàm sửa lệnh (OrderModify) kéo Stoploss về điểm mở lệnh. Đẩm bảo Risk-Free Trade.

2. Chức năng Trailing Stop (Săn Lợi Nhuận)

Trailing Stop giúp SL dời dần lên cao đuổi theo gót của giá. Nó quét tất cả các lệnh qua vòng lặp, sau đó tính toán và cập nhật Stoploss mới lên máy chủ.

Bạn có thể tự code các Block này hoặc dùng bộ viện code mở của MetaTrader. Cơ bản là tư duy xử lý logic vòng lặp for quét mọi Ticket.


🛠️ Săn mồi cần Server mạnh

Trailing Stop gửi tín hiệu liên hoàn lên Server. Chỉ có Exness (nhà cung cấp VPS và máy chủ hàng đầu) mới đáp ứng được cường độ lệnh lớn mà không Requote.

ĐĂNG KÝ EXNESS VPS FREE – SERVER CỰC MẠNH

| Bài 6: Quản Trị Rủi Ro Cốt Lõi: Code Tự Động Tính Cỡ Lệnh (Lot Size) & Stoploss

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 10:34 | 16 lượt xem

Sự khác biệt giữa Coder Non-tay và Quản lý quỹ: Coder để Lot Size cố định, trong khi chuyên gia Quant để Bot tự điều hướng (Dynamically size) khối lượng cược dựa trên vốn còn lại (Risk Management).


1. Tư Duy Tính Rủi Ro “% Vốn”

Một phương pháp an toàn trên thị trường là rủi ro 1% -> 2% tài khoản cho 1 lệnh (1% Risk). Vậy với tài khoản 10k$ và 2k$, số Lot chắc chắn phải khác xa nhau.

2. Biên Dịch Công Thức Trọng Điểm MQL5

Ta sẽ giao cho Bot máy tính nhỏ gọn sau:

double RiskPercent = 1.0; 
double SL_Points = 500;   
double TickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); 
double AccountBalance = AccountInfoDouble(ACCOUNT_BALANCE);

// Tính % rủi ro tiền
double MoneyToRisk = AccountBalance * (RiskPercent / 100.0);

// Tính ra Khối lượng LOT an toàn nhất!
double SafeLot = MoneyToRisk / (SL_Points * TickValue);

Sau đó, ta chỉ việc kẹp biến SafeLot vừa tính được vào hàm OrderSend() (Bài 5). Thế là từ nay, máy sẽ quản lý túi tiền cho chúng ta với độ chính xác đến từng xu.


🛡️ Lá Chắn Cần Bản Demo Để Thử Đạn

Thuật toán cực kỳ ưu tú này cần một môi trường Account (Real hoặc Demo) chuẩn xác với TickValue cung cấp rõ ràng. Hãy kích hoạt ngay một khoản test tại Exness để tận dụng lợi thế.

MỞ TÀI KHOẢN PRO DEMO LẬP TRÌNH

| Bài 5: Nghệ Thuật Vào Lệnh (OrderSend) Và Quản Lý Vị Thế Trong MQL5

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 10:34 | 21 lượt xem

Chúng ta đã biết đọc giá và tín hiệu, bây giờ là lúc “bắn đạn”. Hàm thiêng liêng nhất để điều khiển luồng tiền tự động trong MQL5 là OrderSend().


1. Đóng Gói Yêu Cầu (MqlTradeRequest)

Khi bấm tay, bạn điền Khối lượng, TP, SL. Với Bot, bạn thao tác kỹ thuật qua mảng MqlTradeRequest và hệ thống trả về phiếu biên nhận MqlTradeResult.

  • Trade Request: Hành động, Size, Điểm kích hoạt, SL/TP.
  • Trade Result: Order Ticket, Độ trễ (Ping), Giá khớp thực.

2. Khung Mẫu Chuẩn Cho OrderSend

Một chuyên gia MQL5 không bao giờ bắn bừa mà không xử lý ngoại lệ.

MqlTradeRequest request={0};
MqlTradeResult  result={0};

request.action   = TRADE_ACTION_DEAL;  // Khớp ngay
request.symbol   = _Symbol;
request.volume   = 0.1;                // 0.1 Lot
request.type     = ORDER_TYPE_BUY;
request.price    = SymbolInfoDouble(_Symbol,SYMBOL_ASK); 
request.sl       = request.price - 500 * _Point;

if(!OrderSend(request, result)) {
   Print("Lỗi bắn lệnh do Server! Mã lỗi: ", GetLastError());
}

🛠️ Chọn Sàn Giao Dịch Code API

Nếu bạn muốn lệnh được khớp vào thị trường với tốc độ < 50ms, đừng chơi trên các Broker cùi bắp. Bạn sẽ gặp lỗi từ chối lênh (Requote) triền miên.

ĐĂNG KÝ TÀI KHOẢN ZERO – ĐỘ TRỄ < 50MS

| Bài 4: Cách Lấy Dữ Liệu Giá (Bid/Ask) Và Tính Toán Tín Hiệu Chỉ Báo (Indicators)

Được viết bởi thanhdt vào ngày 10/03/2026 lúc 10:32 | 19 lượt xem

Một EA mù lòa sẽ không thể làm nên trò trống gì. Bot cần phải “nhìn” thấy thị trường để đưa ra quyết định mua hay bán.


1. Đọc Mạch Đập Thị Trường: Giá Bid và Ask

Trong MQL5, hàm lấy giá thời gian thực là hàm nền tảng nhất:

double Ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double Bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);

Sự chênh lệch giữa Buy (Ask) và Sell (Bid) tạo thành Spread.

2. Gọi Cỗ Máy Chuyên Gia (Indicators)

Để gọi Moving Average, MACD hay RSI, quy trình MQL5 yêu cầu 3 bước chuẩn mực:

Bước 1: iHandle

Gắn bộ theo dõi Indicator (iMA) vào Cặp tiền hiện tại trong vòng đời OnInit.

Bước 2: Array Setup

Tạo một dải mảng (Array) để hứng giá trị chuỗi điểm trôi về.

Bước 3: CopyBuffer

Tại OnTick, gắp dữ liệu dải điểm MA nhét vào mảng. Bot sẽ dùng Array[0] hoặc Array[1] để đối chiếu xem Nến đóng nến mở hiện tại có cắt qua dây băng giá không.


🛠️ Sống Sót Qua Bão

Nếu bạn lập trình hệ thống MA Breakout, một sàn giãn Spread (giá Bid/Ask chênh lệch lớn vì trượt khoản) sẽ phá hủy lệnh. Hãy chọn giải pháp Raw / Zero Spread cho Bot Scalping/Trend.

MỞ TÀI KHOẢN ZERO – CHỐNG GIÃN SPREAD