การเขียน Expert Advisor สำหรับ MetaTrader 5: คู่มือฉบับสมบูรณ์โดย Andrew R. Young
บทความนี้เหมาะสำหรับผู้ที่สนใจในหัวข้อ ‘การเขียนโปรแกรม expert advisor สำหรับ metatrader 5 โดย andrew r young’
บทนำสู่ Expert Advisor (EA) ใน MetaTrader 5
Expert Advisor (EA) คืออะไร และทำงานอย่างไร
Expert Advisor (EA) หรือที่เรียกกันทั่วไปว่า “โรบอท” คือโปรแกรมอัตโนมัติที่ทำงานบนแพลตฟอร์ม MetaTrader 5 (MT5) เพื่อทำการซื้อขายตามกลยุทธ์ที่กำหนดไว้ล่วงหน้า EA สามารถวิเคราะห์ข้อมูลตลาด, ระบุโอกาสในการซื้อขาย, และดำเนินการซื้อขายโดยอัตโนมัติโดยปราศจากการแทรกแซงจากมนุษย์ ทำงานโดยการตรวจสอบราคา, อินดิเคเตอร์ทางเทคนิค, และรูปแบบราคา เพื่อตัดสินใจว่าจะเปิด, ปิด, หรือปรับปรุงคำสั่งซื้อขาย
ทำไมต้องเขียน EA สำหรับ MetaTrader 5
- การซื้อขายอัตโนมัติ: ลดความจำเป็นในการเฝ้าหน้าจอและทำการซื้อขายด้วยตนเอง
- ความสม่ำเสมอ: EA ทำงานตามกฎที่กำหนดไว้ ทำให้ลดอคติทางอารมณ์ในการตัดสินใจซื้อขาย
- การทดสอบย้อนหลัง (Backtesting): สามารถทดสอบ EA กับข้อมูลในอดีตเพื่อประเมินประสิทธิภาพของกลยุทธ์
- ความเร็ว: EA สามารถดำเนินการซื้อขายได้เร็วกว่ามนุษย์ ซึ่งอาจเป็นประโยชน์ในตลาดที่มีความผันผวนสูง
ข้อดีและข้อเสียของการใช้ EA
ข้อดี:
- ประหยัดเวลาและแรงงาน
- ลดอารมณ์ในการซื้อขาย
- สามารถทดสอบและปรับปรุงกลยุทธ์ได้
- สามารถซื้อขายได้ตลอด 24 ชั่วโมง
ข้อเสีย:
- ต้องมีความรู้ในการเขียนโปรแกรมหรือจ้างผู้พัฒนา
- อาจต้องมีการปรับปรุง EA อย่างต่อเนื่องเพื่อให้เข้ากับสภาวะตลาดที่เปลี่ยนแปลง
- ผลการทดสอบในอดีตไม่ได้รับประกันผลลัพธ์ในอนาคต
การตั้งค่าสภาพแวดล้อมการพัฒนาสำหรับ EA
การติดตั้งและตั้งค่า MetaEditor
MetaEditor เป็นเครื่องมือพัฒนาโปรแกรมที่มาพร้อมกับ MetaTrader 5 คุณสามารถเปิด MetaEditor ได้จาก MT5 โดยไปที่ View -> MetaEditor หากยังไม่ได้ติดตั้ง MT5 สามารถดาวน์โหลดได้จากเว็บไซต์ของผู้ให้บริการโบรกเกอร์ของคุณ
การสร้างโปรเจ็กต์ EA ใหม่
- เปิด MetaEditor
- ไปที่
File -> New - เลือก
Expert Advisor - ตั้งชื่อโปรเจ็กต์และกำหนดค่าพารามิเตอร์เริ่มต้น
- คลิก
Finishเพื่อสร้างโปรเจ็กต์
ทำความเข้าใจโครงสร้างพื้นฐานของโปรแกรม MQL5
โปรแกรม MQL5 มีโครงสร้างพื้นฐานดังนี้:
- Properties: กำหนดคุณสมบัติของ EA เช่น ชื่อ, เวอร์ชั่น, และลิขสิทธิ์
- Inputs: กำหนดตัวแปรที่ผู้ใช้สามารถปรับเปลี่ยนได้ใน MT5
- Global Variables: ตัวแปรที่สามารถเข้าถึงได้จากทุกส่วนของโปรแกรม
- OnInit(): ฟังก์ชันที่ทำงานเมื่อ EA เริ่มทำงาน
- OnDeinit(): ฟังก์ชันที่ทำงานเมื่อ EA สิ้นสุดการทำงาน
- OnTick(): ฟังก์ชันที่ทำงานทุกครั้งที่มีการเปลี่ยนแปลงราคา
- OnTrade(): ฟังก์ชันที่ทำงานเมื่อมีการเปิดหรือปิดคำสั่งซื้อขาย
- OnTimer(): ฟังก์ชันที่ทำงานเมื่อถึงเวลาที่กำหนด
ภาษา MQL5 สำหรับการเขียน EA
ไวยากรณ์พื้นฐานของ MQL5 ที่จำเป็นสำหรับ EA
MQL5 มีไวยากรณ์ที่คล้ายกับภาษา C++ ตัวอย่างเช่น:
mql5
int myVariable = 10;
double myPrice = 1.2345;
string myText = "Hello, world!";
ตัวแปร, ประเภทข้อมูล, และฟังก์ชันใน MQL5
- int: จำนวนเต็ม
- double: จำนวนทศนิยม
- string: ข้อความ
- bool: จริงหรือเท็จ
- datetime: วันที่และเวลา
ฟังก์ชันใน MQL5 ใช้เพื่อทำงานเฉพาะ เช่น OrderSend(), OrderClose(), iMA(), iRSI()
การจัดการเหตุการณ์ (Event Handling) ใน MQL5
EA ตอบสนองต่อเหตุการณ์ต่างๆ ที่เกิดขึ้นในตลาด เช่น การเปลี่ยนแปลงราคา, การเปิด/ปิดคำสั่งซื้อขาย, และการหมดเวลา ฟังก์ชัน OnInit(), OnDeinit(), OnTick(), OnTrade(), และ OnTimer() ใช้เพื่อจัดการเหตุการณ์เหล่านี้
การใช้งานฟังก์ชันที่จำเป็นสำหรับการเทรด (OrderSend, OrderClose ฯลฯ)
OrderSend(): ส่งคำสั่งซื้อขายไปยังโบรกเกอร์OrderClose(): ปิดคำสั่งซื้อขายOrderModify(): แก้ไขคำสั่งซื้อขายOrderDelete(): ลบคำสั่งซื้อขายที่รอการดำเนินการ
การสร้างและทดสอบ EA อย่างง่าย
ขั้นตอนการเขียน EA เบื้องต้น (ตัวอย่าง: EA ที่เปิด Order เมื่อราคาถึงจุดที่กำหนด)
ตัวอย่าง EA ที่เปิด Order Buy เมื่อราคาถึง 1.1000:
“`mql5
property expert
double targetPrice = 1.1000;
void OnTick()
{
double currentPrice = SymbolInfoDouble(Symbol, SYMBOLASK);
if (currentPrice >= targetPrice)
{
MqlTradeRequest request;
MqlTradeResult result;
request.action = TRADE_ACTION_DEAL;
request.symbol = _Symbol;
request.volume = 0.01;
request.type = ORDER_TYPE_BUY;
request.price = NormalizeDouble(currentPrice, _Digits);
request.sl = 0;
request.tp = 0;
request.magic = 12345;
request.deviation = 10;
OrderSend(request, result);
PrintFormat("Order Buy opened at %.5f", currentPrice);
}
}
“`
การคอมไพล์และติดตั้ง EA ใน MetaTrader 5
- ใน MetaEditor กด
F7เพื่อคอมไพล์โปรแกรม - หากไม่มีข้อผิดพลาด ไฟล์ EA จะถูกสร้างในโฟลเดอร์
MQL5\Experts - ใน MT5 เปิด
Navigator(Ctrl+N) - ขยาย
Expert Advisors - ลาก EA ของคุณจาก
Navigatorไปยังกราฟ
การทดสอบ EA ด้วย Strategy Tester
- เปิด
Strategy Tester(Ctrl+R) - เลือก EA ของคุณ
- เลือกสัญลักษณ์ (Symbol) และช่วงเวลา (Timeframe)
- กำหนดช่วงเวลาที่จะทดสอบ (Testing Period)
- คลิก
Startเพื่อเริ่มการทดสอบ
การวิเคราะห์ผลการทดสอบและการปรับปรุง EA
- ดูรายงานการทดสอบเพื่อประเมินผลกำไร, การขาดทุน, และ drawdown
- ปรับปรุงพารามิเตอร์ของ EA เพื่อให้ได้ผลลัพธ์ที่ดีขึ้น
- พิจารณาเพิ่มฟังก์ชันการจัดการความเสี่ยง เช่น stop loss และ take profit
เทคนิคขั้นสูงในการเขียน EA
การใช้ Indicators และ Signals ใน EA
EA สามารถใช้ indicators ทางเทคนิค เช่น Moving Average, RSI, และ MACD เพื่อสร้างสัญญาณซื้อขาย ตัวอย่างเช่น:
“`mql5
double maValue = iMA(Symbol, PERIODCURRENT, 20, 0, MODESMA, PRICECLOSE, 0);
if (currentPrice > maValue)
{
// Generate buy signal
}
“`
การจัดการ Money Management และ Risk Management
- กำหนดขนาด lot ที่เหมาะสม
- ใช้ stop loss เพื่อจำกัดการขาดทุน
- ใช้ take profit เพื่อล็อคผลกำไร
- ใช้ trailing stop เพื่อปรับปรุง stop loss ตามราคา
การใช้ Optimization เพื่อหาค่าพารามิเตอร์ที่ดีที่สุด
Strategy Tester มีฟังก์ชัน Optimization ที่ช่วยให้คุณหาค่าพารามิเตอร์ที่ดีที่สุดสำหรับ EA ของคุณ โดยการทดสอบค่าต่างๆ และเลือกค่าที่ให้ผลลัพธ์ที่ดีที่สุด
การเขียน EA แบบ Multi-currency และ Multi-timeframe
EA สามารถตรวจสอบและซื้อขายในหลายคู่สกุลเงินและช่วงเวลาพร้อมกันได้ ซึ่งต้องใช้เทคนิคการเขียนโปรแกรมที่ซับซ้อนขึ้น
หวังว่าคู่มือนี้จะเป็นประโยชน์ในการเริ่มต้นเขียน Expert Advisor สำหรับ MetaTrader 5 ของคุณ ขอให้ประสบความสำเร็จในการเทรด!



