บทที่ 7 · บอท & ระบบอัตโนมัติ · 30 นาที
เขียน EA ด้วย MQL5 เบื้องต้น
Expert Advisor (EA) คือโปรแกรมเทรดอัตโนมัติบน MetaTrader 5 — วิเคราะห์ตลาด ตัดสินใจ เปิด/ปิด Trade ให้อัตโนมัติ 24 ชม.
EA เทรดตามกลยุทธ์ที่เขียนเท่านั้น — กลยุทธ์ผิด EA ก็ขาดทุน
MQL5 = ภาษาโปรแกรมสำหรับเขียน EA/Indicator/Script (Syntax คล้าย C++) เขียนใน MetaEditor (กด F4 ใน MT5)
โครงสร้าง EA พื้นฐาน
#property copyright "iJam Studio"
input double LotSize = 0.01; // ขนาด Lot
input int StopLoss = 50; // SL (points)
input int TakeProfit = 100; // TP (points)
int OnInit(){
Print("EA Started on ", _Symbol);
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason){ Print("EA Stopped"); }
void OnTick(){ /* Logic การเทรดอยู่ตรงนี้ */ }
ฟังก์ชันหลัก 3 ตัว
- OnInit() — ทำงานครั้งเดียวตอนแนบ EA (ตั้งค่าเริ่มต้น, สร้าง Handle)
- OnDeinit() — ทำงานตอนถอด EA (ทำความสะอาด)
- OnTick() — ทำงานทุกครั้งราคาเปลี่ยน = หัวใจของ EA (อย่าใส่โค้ดหนักเกิน)
Input Parameters
ตัวแปรที่ปรับได้ผ่าน Properties โดยไม่ต้องแก้โค้ด + ใช้ใน Optimization
input int FastMAPeriod = 10; // Fast MA Period
input int MagicNumber = 12345; // Magic Number (แยก EA)
ฟังก์ชันสำคัญใน MQL5
// Moving Average
int maHandle = iMA(_Symbol, PERIOD_H1, 20, 0, MODE_EMA, PRICE_CLOSE);
// ส่งคำสั่งเทรด (CTrade)
#include <Trade\Trade.mqh>
CTrade trade;
trade.Buy(0.01, _Symbol, 0, sl, tp, "Buy Signal");
trade.Sell(0.01, _Symbol, 0, sl, tp, "Sell Signal");
// ดูราคา
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
ตัวอย่าง: MA Crossover EA (หัวใจของ OnTick)
void OnTick(){
double fastMA[], slowMA[];
ArraySetAsSeries(fastMA, true);
ArraySetAsSeries(slowMA, true);
CopyBuffer(fastMAHandle, 0, 0, 3, fastMA);
CopyBuffer(slowMAHandle, 0, 0, 3, slowMA);
bool buySignal = (fastMA[1] > slowMA[1]) && (fastMA[2] <= slowMA[2]);
bool sellSignal = (fastMA[1] < slowMA[1]) && (fastMA[2] >= slowMA[2]);
if(buySignal){
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
trade.Buy(Lots, _Symbol, ask, ask - StopLoss*point, ask + TakeProfit*point, "MA Cross Buy");
}
}
Compile & Debug
- กด F7 Compile → ดู Errors Tab (0 errors = สร้าง .ex5 สำเร็จ)
- Error บ่อย:
';' expected(ลืม semicolon),undeclared identifier(ตัวแปรไม่ประกาศ) - Debug:
Print()(ดู Experts Tab),Comment()(แสดงบนกราฟ),Alert()(Pop-up)
ติดตั้ง EA บน Chart
- Compile สำเร็จ → Navigator (Ctrl+N) → Expert Advisors
- ลาก EA ลงบน Chart → ติ๊ก "Allow Algo Trading" → ตั้ง Inputs → OK
- เปิด AutoTrading มุมบน (ไอคอนเขียว) — EA ทำงานเมื่อเห็นหน้ายิ้มมุมขวาบน
ก่อนใช้เงินจริง ต้อง Backtest + ทดสอบ Demo ก่อนเสมอ
สรุป
- โครงสร้าง: OnInit / OnDeinit / OnTick
- Input Parameters ให้ยืดหยุ่น · ฟังก์ชันสำคัญ: iMA, CTrade, PositionSelect
- Compile (F7), Debug ด้วย Print, ติดตั้งบน Chart + เปิด AutoTrading
"EA ที่ดีที่สุดคือ EA ที่คุณเข้าใจ Logic อย่างสมบูรณ์" — อย่าใช้ EA ที่ไม่เข้าใจวิธีทำงาน
เนื้อหาเพื่อการศึกษา ไม่ใช่คำแนะนำการลงทุน · การเทรดมีความเสี่ยง