← บทเรียนทั้งหมด

บทที่ 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

  1. Compile สำเร็จ → Navigator (Ctrl+N) → Expert Advisors
  2. ลาก EA ลงบน Chart → ติ๊ก "Allow Algo Trading" → ตั้ง Inputs → OK
  3. เปิด AutoTrading มุมบน (ไอคอนเขียว) — EA ทำงานเมื่อเห็นหน้ายิ้มมุมขวาบน

ก่อนใช้เงินจริง ต้อง Backtest + ทดสอบ Demo ก่อนเสมอ

สรุป

  • โครงสร้าง: OnInit / OnDeinit / OnTick
  • Input Parameters ให้ยืดหยุ่น · ฟังก์ชันสำคัญ: iMA, CTrade, PositionSelect
  • Compile (F7), Debug ด้วย Print, ติดตั้งบน Chart + เปิด AutoTrading

"EA ที่ดีที่สุดคือ EA ที่คุณเข้าใจ Logic อย่างสมบูรณ์" — อย่าใช้ EA ที่ไม่เข้าใจวิธีทำงาน

เนื้อหาเพื่อการศึกษา ไม่ใช่คำแนะนำการลงทุน · การเทรดมีความเสี่ยง