1. Giới thiệu
Trong Price Action, mô hình nến Engulfing là một trong những tín hiệu đảo chiều mạnh mẽ, được nhiều trader sử dụng để xác định điểm vào lệnh. Khi lập trình Expert Advisor (EA) trên MetaTrader 5, chúng ta có thể viết hàm MQL5 để tự động phát hiện mô hình Engulfing và vào lệnh Buy hoặc Sell.
Trong bài viết này, bạn sẽ học cách:
- Hiểu mô hình nến Engulfing.
- Viết hàm nhận diện Engulfing trong MQL5.
- Tự động vào lệnh Buy/Sell khi có tín hiệu.
2. Mô hình nến Engulfing là gì?
Mô hình Engulfing xuất hiện khi:
- Bullish Engulfing (Tín hiệu Mua): Nến sau là nến tăng, có thân bao trùm hoàn toàn thân nến giảm trước đó.
- Bearish Engulfing (Tín hiệu Bán): Nến sau là nến giảm, có thân bao trùm hoàn toàn thân nến tăng trước đó.
Đặc điểm:
- Xảy ra ở vùng hỗ trợ/kháng cự quan trọng.
- Dùng để xác định điểm đảo chiều tiềm năng.
3. Logic phát hiện Engulfing trong MQL5
- Để xác định mô hình, ta cần so sánh:
- Hướng nến (bullish/bearish).
- Giá mở cửa (Open) và đóng cửa (Close).
- Thân nến hiện tại phải lớn hơn và bao phủ thân nến trước.
4. Code MQL5 phát hiện Engulfing
#include <Trade/Trade.mqh>;
CTrade trade;
// Hàm kiểm tra mô hình nến Bullish Engulfing
bool isBullishEngulfing() {
double open1 = iOpen(NULL, 0, 1);
double close1 = iClose(NULL, 0, 1);
double open2 = iOpen(NULL, 0, 2);
double close2 = iClose(NULL, 0, 2);
if(close2 < open2 && open1 < close2 && close1 > open2)
return true;
return false;
}
// Hàm kiểm tra mô hình nến Bearish Engulfing
bool isBearishEngulfing() {
double open1 = iOpen(NULL, 0, 1);
double close1 = iClose(NULL, 0, 1);
double open2 = iOpen(NULL, 0, 2);
double close2 = iClose(NULL, 0, 2);
if(close2 > open2 && open1 > close2 && close1 < open2)
return true;
return false;
}
// Hàm vào lệnh
void placeOrder() {
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
if(isBullishEngulfing()) {
trade.Buy(0.1, _Symbol, ask, bid - 50 * _Point, bid + 50 * _Point, "Buy Order");
}
if(isBearishEngulfing()) {
trade.Sell(0.1, _Symbol, bid, ask + 50 * _Point, ask - 50 * _Point, "Sell Order");
}
}
void OnTick() {
placeOrder();
}
5. Giải thích mã
isBullishEngulfing(): Kiểm tra nến hiện tại (1) có thân nến tăng và bao phủ hoàn toàn thân nến giảm trước đó (2).isBearishEngulfing(): Kiểm tra nến hiện tại (1) có thân nến giảm và bao phủ thân nến tăng trước đó (2).placeOrder(): Thực hiện lệnh Buy khi phát hiện Bullish Engulfing và Sell khi phát hiện Bearish Engulfing, với stop loss và take profit cách giá 50 pip.OnTick(): Gọi hàmplaceOrder()mỗi khi có tick giá mới.CTrade: Sử dụng thư việnTrade.mqhđể quản lý lệnh giao dịch dễ dàng hơn.
6. Mở rộng và tối ưu
- Thêm Stop Loss & Take Profit: Đặt theo ATR hoặc vùng hỗ trợ/kháng cự.
- Lọc tín hiệu giả: Kết hợp EMA, RSI hoặc Volume.
- Chỉ giao dịch khi có xu hướng rõ ràng.
- Thêm quản lý vốn: Fixed lot, % balance hoặc martingale.
7. Kết luận
Với hàm MQL5 trên, bạn đã có thể phát hiện mô hình nến Engulfing và tự động vào lệnh Buy/Sell trên MT5. Đây là nền tảng để phát triển các EA dựa trên Price Action và nâng cao chiến lược giao dịch.

