forex

MQL5 Book — รวมความรู้เทรด Forex ด้วย MQL5 ตั้งแต่พื้นฐานถึงขั้นสูง | SiamCafe Blog

mql5 book
MQL5 Book — รวมความรู้เทรด Forex ด้วย MQL5 ตั้งแต่พื้นฐานถึงขั้นสูง | SiamCafe Blog

MQL5 Book — รวมความรู้เทรด Forex ด้วย MQL5 ตั้งแต่พื้นฐานถึงขั้นสูง | SiamCafe Blog

ในยุคที่การเทรด Forex ไม่ใช่แค่การคาดการณ์ทิศทางตลาดด้วยตาเปล่าอีกต่อไป แต่กลายเป็นการแข่งขันด้านระบบ ความแม่นยำ

และประสิทธิภาพของกลยุทธ์ที่ถูกโปรแกรมไว้ล่วงหน้า การเข้าใจและใช้งาน MQL5 จึงไม่ใช่เรื่องเลือก แต่เป็นสิ่งจำเป็นสำหรับนักเทรดที่ต้องการก้าวข้ามขีดจำกัดของมนุษย์ไปสู่การบริหารจัดการพอร์ตแบบอัตโนมัติระดับมืออาชีพ บทความนี้คือ “MQL5 Book” ที่รวบรวมองค์ความรู้ทั้งพื้นฐานและขั้นสูง ซึ่งถูกถ่ายทอดจากประสบการณ์จริงของผู้ค้าในตลาดจริงมานานกว่า 13 ปี โดยเฉพาะในแพลตฟอร์ม XM ที่เป็นพื้นฐานหลักของการทดลองกลยุทธ์ในช่วงหลายปีที่ผ่านมา

MQL5 หรือ MetaQuotes Language 5 คือภาษาโปรแกรมเฉพาะทางที่พัฒนาขึ้นเพื่อใช้สร้างระบบเทรดอัตโนมัติ หรือที่เรียกกันว่า Expert Advisor (EA) บนแพลตฟอร์ม MetaTrader 5 ซึ่งถือเป็นหนึ่งในระบบที่ได้รับความนิยมสูงสุดในโลกการเงินออนไลน์ ต่างจาก MQL4 ที่เน้นแนวทางเชิงเส้น (Procedural) MQL5 ได้รับการอัปเกรดให้รองรับการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming: OOP) อย่างเต็มรูปแบบ ทำให้สามารถสร้างโครงสร้างโค้ดที่ยืดหยุ่น จัดการได้ง่าย และขยายต่อยอดได้ในอนาคตข้างหน้า

สิ่งที่ทำให้ MQL5 โดดเด่นคือไลบรารีมาตรฐาน (Standard Library) ที่ครบครัน ไม่ว่าจะเป็นคลาสสำหรับจัดการคำสั่งซื้อขาย (CTrade), ดึงข้อมูลตำแหน่ง (CPositionInfo), ข้อมูลสัญลักษณ์ (CSymbolInfo) หรือแม้แต่ตัวชี้วัดทางเทคนิค (Indicators) ที่สามารถเรียกใช้งานได้โดยตรง รวมถึงเครื่องมือทดสอบกลยุทธ์ (Strategy Tester) ที่ทรงพลัง รองรับการ Backtest แบบละเอียด พร้อมการแสดงผลกราฟและสถิติผลตอบแทนในรูปแบบที่เข้าใจง่าย ทำให้เราสามารถประเมินประสิทธิภาพของ EA ได้ก่อนนำไปใช้จริงในบัญชี live

อีกหนึ่งข้อได้เปรียบสำคัญคือ MQL5 รองรับการเขียนโค้ดแบบ Event-driven ซึ่งหมายถึงระบบสามารถตอบสนองต่อเหตุการณ์ต่าง ๆ ได้ทันที เช่น การเปลี่ยนแปลงราคาใหม่ (OnTick), การเปิดหรือปิดตำแหน่ง (OnTrade), หรือแม้แต่การรีเซ็ตระบบ (OnInit) ทำให้การเขียน EA ไม่จำเป็นต้องวนลูปตลอดเวลา แต่สามารถทำงานเฉพาะจุดที่จำเป็น ลดภาระระบบและเพิ่มความเสถียรของโปรแกรมได้อย่างมาก

---

การเริ่มต้นเขียน Expert Advisor (EA) บน MQL5 ไม่จำเป็นต้องเริ่มจากศูนย์เสมอไป แต่ควรเริ่มจากการเข้าใจโครงสร้างหลักของไฟล์ `.mq5`

ที่ถูกออกแบบมาให้เป็นระบบปิด (closed structure) แต่ยืดหยุ่นต่อการปรับแต่ง โครงสร้างพื้นฐานนี้ถูกวางไว้ในโค้ดตัวอย่างที่ใช้ในบทความนี้ และเป็นรากฐานสำคัญที่ทุก EA ต้องผ่าน

การเริ่มต้นเขียน Expert Advisor (EA) บน MQL5 ไม่จำเป็นต้องเริ่มจากศูนย์เสมอไป แต่ควรเริ่มจากการเข้าใจโครงสร้างหลักของไฟล์ `.mq5` ที่ถูกออกแบบมาให้เป็นระบบปิด (closed structure) แต่ยืดหยุ่นต่อการปรับแต่ง โครงสร้างพื้นฐานนี้ถูกวางไว้ในโค้ดตัวอย่างที่ใช้ในบทความนี้ และเป็นรากฐานสำคัญที่ทุก EA ต้องผ่าน

เริ่มต้นด้วยการตั้งค่า property ที่จำเป็น เช่น `#property copyright` เพื่อกำหนดเจ้าของโค้ด, `#property version` สำหรับควบคุมเวอร์ชัน, และ `#property strict` เพื่อเปิดโหมดตรวจสอบข้อผิดพลาดอย่างเข้มงวด ซึ่งเป็นสิ่งที่อ.บอมแนะนำให้ใช้ทุกครั้ง เพราะช่วยลดข้อผิดพลาดที่อาจเกิดจากความสับสนของตัวแปรหรือฟังก์ชันที่ไม่ตรงกัน

ต่อไปคือการนำเข้าไลบรารีมาตรฐานที่จำเป็น เช่น `#include ` สำหรับจัดการคำสั่งซื้อขาย, `#include ` สำหรับดึงข้อมูลตำแหน่งที่เปิดอยู่, และ `#include ` หากต้องการใช้ตัวชี้วัดแนวโน้ม ซึ่งการรวมไลบรารีเหล่านี้เข้าไว้ในต้นฉบับช่วยให้โค้ดสะอาด ไม่ต้องพิมพ์ฟังก์ชันซ้ำ ๆ และลดความเสี่ยงจากการเขียนผิด

ส่วนต่อมาคือการกำหนดตัวแปรที่ผู้ใช้สามารถปรับแต่งได้ผ่านหน้าต่าง Input บน MetaEditor เช่น ขนาด Lot, Stop Loss, Take Profit, Magic Number หรือช่วงเวลาของตัวชี้วัด ซึ่งการใช้ `input group` ช่วยจัดกลุ่มตัวแปรให้เป็นหมวดหมู่ เช่น “Trading Settings”, “Indicator Settings” หรือ “Risk Management” ทำให้ผู้ใช้สามารถตั้งค่าได้รวดเร็วและเป็นระบบ

ในส่วนของตัวแปรระดับโลก (Global Objects) จำเป็นต้องสร้างออบเจกต์สำหรับใช้งาน เช่น `CTrade trade;` เพื่อจัดการคำสั่งซื้อขาย, `CPositionInfo posInfo;` เพื่อตรวจสอบตำแหน่งที่เปิดอยู่, และ `CSymbolInfo symInfo;` เพื่อดึงข้อมูลสัญลักษณ์ เช่น ราคา Ask/Bid, ขนาด Lot ต่ำสุด-สูงสุด หรือ Tick Size ซึ่งข้อมูลเหล่านี้มีบทบาทสำคัญในการคำนวณ Lot Size และการป้องกันความเสี่ยง

สุดท้ายคือการกำหนดฟังก์ชันหลักที่ระบบจะเรียกใช้ เช่น `OnInit()` สำหรับการตั้งค่าเริ่มต้น, `OnDeinit()` สำหรับการปลดล็อกทรัพยากรเมื่อปิด EA, และ `OnTick()` ซึ่งเป็นฟังก์ชันหลักที่ทำงานทุกครั้งที่มีการอัปเดตราคาใหม่ โครงสร้างนี้ถือเป็นรากฐานของทุก EA ไม่ว่าจะซับซ้อนแค่ไหน ก็ยังต้องผ่านจุดเริ่มต้นเหล่านี้

หนึ่งในจุดเด่นที่ทำให้ MQL5 แตกต่างจาก MQL4 อย่างชัดเจนคือการรองรับการเขียนโปรแกรมเชิงวัตถุ (OOP) อย่างเต็มรูปแบบ ซึ่งไม่ใช่แค่การเพิ่มฟีเจอร์ใหม่

แต่เป็นการเปลี่ยนแปลงวิธีคิดในการออกแบบระบบ EA ให้ยืดหยุ่น ขยายต่อยอดได้ง่าย และลดความซับซ้อนเมื่อต้องจัดการกลยุทธ์หลายแบบพร้อมกัน อ.บอมใช้แนวทางนี้มาตั้งแต่ปี 2020 และยืนยันว่าเป็นกุญแจสำคัญที่ทำให้ EA ของตนสามารถปรับใช้กับหลายสกุลเงินและหลายช่วงเวลาได้โดยไม่ต้องเขียนโค้ดใหม่ทั้งหมด

การใช้งาน OOP อย่างมีประสิทธิภาพใน MQL5

หนึ่งในจุดเด่นที่ทำให้ MQL5 แตกต่างจาก MQL4 อย่างชัดเจนคือการรองรับการเขียนโปรแกรมเชิงวัตถุ (OOP) อย่างเต็มรูปแบบ ซึ่งไม่ใช่แค่การเพิ่มฟีเจอร์ใหม่ แต่เป็นการเปลี่ยนแปลงวิธีคิดในการออกแบบระบบ EA ให้ยืดหยุ่น ขยายต่อยอดได้ง่าย และลดความซับซ้อนเมื่อต้องจัดการกลยุทธ์หลายแบบพร้อมกัน อ.บอมใช้แนวทางนี้มาตั้งแต่ปี 2020 และยืนยันว่าเป็นกุญแจสำคัญที่ทำให้ EA ของตนสามารถปรับใช้กับหลายสกุลเงินและหลายช่วงเวลาได้โดยไม่ต้องเขียนโค้ดใหม่ทั้งหมด

ตัวอย่างที่ชัดเจนที่สุดคือการสร้างคลาสพื้นฐาน (Base Class) ที่กำหนดโครงสร้างพื้นฐานของกลยุทธ์ เช่น `CStrategy` ซึ่งเป็นอินเตอร์เฟซที่บังคับให้กลยุทธ์ใด ๆ ต้องมีฟังก์ชัน `Init()`, `Deinit()`, `GetSignal()`, `GetLotSize()` และ `GetStopLoss()` ทั้งหมด นี่คือแนวคิด Strategy Pattern ที่ช่วยให้เราสามารถสร้างกลยุทธ์ต่าง ๆ ได้หลายแบบ แต่ยังคงใช้โครงสร้างเดียวกัน

ตัวอย่างเช่น คลาส `CRSIStrategy` ที่สืบทอดจาก `CStrategy` จะมีหน้าที่คำนวณสัญญาณจาก RSI โดยมีการใช้ `iRSI()` เพื่อดึงข้อมูล และตรวจสอบจุดตัดข้ามระดับ Oversold (30) หรือ Overbought (70) เพื่อตัดสินใจเปิดตำแหน่ง ซึ่งทั้งหมดนี้ถูกทำผ่านการ override ฟังก์ชันที่กำหนดไว้ในคลาสแม่ ทำให้โค้ดมีความชัดเจนและสามารถตรวจสอบได้ง่าย

อีกแนวทางที่ใช้บ่อยคือการสร้าง `CStrategyManager` ซึ่งทำหน้าที่จัดการกลยุทธ์หลายตัวพร้อมกัน โดยเก็บออบเจกต์ของกลยุทธ์ไว้ในอาร์เรย์ และเรียกใช้ `ProcessAll()` เพื่อตรวจสอบสัญญาณจากทุกกลยุทธ์ในครั้งเดียว ซึ่งเหมาะอย่างยิ่งสำหรับการใช้งานแบบ Multi-Strategy หรือ Hybrid Strategy ที่ผสมผสานระหว่าง MA Crossover, RSI, และ MACD

การเขียน EA สำเร็จแล้วไม่ได้หมายความว่าสามารถนำไปใช้จริงได้ทันที ขั้นตอนสำคัญที่สุดคือการทดสอบกลยุทธ์ (Strategy Testing) ด้วยเครื่องมือ Strategy

Tester ที่มาพร้อม MetaTrader 5 ซึ่งเป็นหัวใจหลักของการพัฒนา EA อย่างมืออาชีพ ไม่ว่าจะเป็นการ Backtest บนข้อมูลย้อนหลัง หรือการ Forward Test บนบัญชี demo เพื่อประเมินประสิทธิภาพในสภาพแวดล้อมจริง

---

การทดสอบกลยุทธ์ด้วย Strategy Tester และการวิเคราะห์ผล

การเขียน EA สำเร็จแล้วไม่ได้หมายความว่าสามารถนำไปใช้จริงได้ทันที ขั้นตอนสำคัญที่สุดคือการทดสอบกลยุทธ์ (Strategy Testing) ด้วยเครื่องมือ Strategy Tester ที่มาพร้อม MetaTrader 5 ซึ่งเป็นหัวใจหลักของการพัฒนา EA อย่างมืออาชีพ ไม่ว่าจะเป็นการ Backtest บนข้อมูลย้อนหลัง หรือการ Forward Test บนบัญชี demo เพื่อประเมินประสิทธิภาพในสภาพแวดล้อมจริง

อ.บอมใช้ Strategy Tester ทุกครั้งก่อนปล่อย EA ไปใช้จริง โดยเริ่มจากการตั้งค่าช่วงเวลาทดสอบ (Testing Period) ให้ครอบคลุมทั้งตลาดขาขึ้น ขาลง และ sideways เพื่อให้ได้ผลลัพธ์ที่สมดุล พร้อมตั้งค่า Parameters เช่น ขนาด Lot, Slippage, Spread, และ Mode ของการส่งคำสั่ง (Order Execution Mode) เช่น FOK หรือ IOC เพื่อจำลองพฤติกรรมจริงในตลาด

หลังจากเริ่มการทดสอบ ระบบจะแสดงผลลัพธ์ในรูปแบบตารางและกราฟ ซึ่งเราสามารถดูได้ทั้งผลตอบแทนรวม (Net Profit), Drawdown สูงสุด, จำนวนคำสั่งซื้อขาย, และอัตราความสำเร็จ (Win Rate) ทั้งนี้ ควรพิจารณาไม่เพียงแค่กำไร แต่ต้องประเมินความเสี่ยงด้วย เช่น ถ้า Drawdown สูงเกิน 20% แม้กำไรจะดี ก็อาจไม่เหมาะกับการใช้งานจริง

ตัวอย่างตารางการวิเคราะห์ผลการทดสอบ:

รายการค่าที่ได้
Net Profit$12,450
Max Drawdown14.7%
Win Rate63.2%
Profit Factor2.1
Total Trades89
Average Profit per Trade$140
Recovery Factor3.8

เพื่อให้เข้าใจการประยุกต์ใช้ทฤษฎีในชีวิตจริง อ.บอมขอแสดงตัวอย่างการสร้าง Expert Advisor แบบ Hybrid ที่ใช้ทั้ง MA Crossover และ RSI ร่วมกัน

โดยอาศัยโครงสร้าง OOP และ Strategy Manager ที่พัฒนาขึ้นจากต้นฉบับ

อีกปัจจัยสำคัญคือการทดสอบความเสถียรของ EA ผ่าน Walk-Forward Analysis ซึ่งเป็นการทดสอบย้อนหลังเป็นช่วง ๆ แล้วปรับพารามิเตอร์ให้เหมาะสมกับช่วงถัดไป เพื่อประเมินว่ากลยุทธ์สามารถปรับตัวได้ในตลาดที่เปลี่ยนแปลงหรือไม่

---

ตัวอย่างการปฏิบัติจริง: สร้าง EA แบบ Hybrid ด้วย OOP และ Strategy Manager

เพื่อให้เข้าใจการประยุกต์ใช้ทฤษฎีในชีวิตจริง อ.บอมขอแสดงตัวอย่างการสร้าง Expert Advisor แบบ Hybrid ที่ใช้ทั้ง MA Crossover และ RSI ร่วมกัน โดยอาศัยโครงสร้าง OOP และ Strategy Manager ที่พัฒนาขึ้นจากต้นฉบับ

เริ่มจากการสร้างคลาส `CStrategyManager` ที่เก็บกลยุทธ์หลายตัวไว้ในอาร์เรย์ เช่น `CRSIStrategy`, `CMAcrossStrategy` หรือแม้แต่กลยุทธ์ที่ใช้ MACD หรือ Bollinger Bands แล้วเรียกใช้ `InitAll()` เพื่อตั้งค่าทั้งหมดพร้อมกัน และ `ProcessAll()` เพื่อตรวจสอบสัญญาณจากทุกกลยุทธ์

ในฟังก์ชัน `OnTick()` เราจะตรวจสอบว่ามีสัญญาณจากกลยุทธ์ใดบ้าง หากมีสัญญาณซ้ำกัน (เช่น Buy จากทั้งสองกลยุทธ์) จะเพิ่มความมั่นใจ และเปิดตำแหน่งตาม Lot Size ที่คำนวณจาก Risk Management ที่กำหนดไว้

หากมีสัญญาณขัดแย้ง (เช่น Buy จาก MA แต่ Sell จาก RSI) เราอาจตั้งเงื่อนไขให้ไม่เปิดตำแหน่ง หรือเปิดเฉพาะเมื่อสัญญาณมีความชัดเจน เช่น ต้องผ่านการยืนยันจากอีกหนึ่งตัวชี้วัด

การใช้ระบบจัดการกลยุทธ์แบบนี้ช่วยให้เราสามารถเพิ่มหรือลบกลยุทธ์ได้โดยไม่ต้องแก้ไขโค้ดหลัก และสามารถทดสอบประสิทธิภาพของแต่ละกลยุทธ์แยกกันได้ใน Strategy Tester พร้อมกัน

---

คำถามที่พบบ่อย

Q: ทำไมต้องใช้ MQL5 แทน MQL4 ถ้า MQL4 ยังทำงานได้ดีอยู่?

การเลือกใช้ MQL5 แทน MQL4 ไม่ใช่แค่เรื่องของความทันสมัย แต่เป็นเรื่องของความสามารถในการพัฒนาในอนาคตข้างหน้า แม้ MQL4 จะยังรองรับการใช้งานได้ดีในบางแพลตฟอร์ม แต่ MQL5 มีข้อได้เปรียบหลายประการที่ MQL4 ไม่มี เช่น การรองรับ OOP อย่างเต็มรูปแบบ ไลบรารีมาตรฐานที่ครบครัน ระบบ Strategy Tester ที่สามารถ Backtest ได้ละเอียดยิ่งขึ้น และการรองรับการใช้งานกับตลาดหลายประเภท เช่น หุ้น ฟิวเจอร์ส และ CFD ได้โดยตรง ซึ่งเปิดโอกาสให้เราพัฒนา EA ที่ซับซ้อนและมีประสิทธิภาพมากกว่าเดิม อีกทั้ง MetaQuotes เองก็ได้ประกาศว่าจะไม่พัฒนา MQL4 ต่อไปในอนาคต ทำให้การลงทุนใน MQL5 จึงเป็นการเตรียมความพร้อมล่วงหน้าสำหรับการเปลี่ยนแปลงของระบบนิเวศน์การเทรดในระยะยาว

Q: การใช้ OOP ใน MQL5 มีข้อเสียหรือไม่?

การใช้ OOP ใน MQL5 ถือเป็นแนวทางที่ดี แต่ก็มีข้อควรระวังบางประการ ข้อเสียหลักคือความซับซ้อนของโค้ดที่เพิ่มขึ้น โดยเฉพาะสำหรับผู้เริ่มต้น ซึ่งอาจทำให้เข้าใจยากหรือเกิดข้อผิดพลาดในการจัดการออบเจกต์ เช่น การลืมเรียก `delete` หรือการส่งออบเจกต์ผิดประเภท อย่างไรก็ตาม ข้อเสียเหล่านี้สามารถลดได้ด้วยการเขียนโค้ดอย่างมีระเบียบ ใช้คอมเมนต์อธิบายโครงสร้าง และทดสอบทีละส่วน ซึ่งในระยะยาวแล้ว ข้อดีของ OOP เช่น การจัดการโค้ดได้ง่าย การนำกลับมาใช้ใหม่ (reusability) และการพัฒนาต่อยอดได้ ย่อมคุ้มค่ากับความซับซ้อนที่เพิ่มขึ้นอย่างมาก

Q: Strategy Tester ให้ผลลัพธ์ที่ไม่ตรงกับการเทรดจริง ควรทำอย่างไร?

ผลลัพธ์จาก Strategy Tester มักไม่ตรงกับการเทรดจริง 100% เนื่องจากข้อมูลย้อนหลัง (historical data) อาจไม่สมบูรณ์ หรือตลาดในอดีตไม่ได้สะท้อนพฤติกรรมจริงของผู้เล่นในช่วงเวลาปัจจุบัน ดังนั้น เราควรใช้ Strategy Tester เป็นเครื่องมือประเมินแนวโน้ม ไม่ใช่การพยากรณ์ผลลัพธ์ที่แน่นอน วิธีที่ดีคือการทดสอบหลายช่วงเวลา หลายสกุลเงิน และใช้ Walk-Forward Analysis เพื่อดูว่ากลยุทธ์สามารถปรับตัวได้หรือไม่ หากผลลัพธ์มีความเสถียรและ Drawdown อยู่ในเกณฑ์ที่ยอมรับได้ ก็ถือว่ากลยุทธ์นั้นน่าเชื่อถือพอสำหรับการใช้งานจริง

Q: ควรเริ่มต้นเรียนรู้ MQL5 จากที่ไหนดี?

อ.บอมแนะนำให้เริ่มจากเอกสารอย่างเป็นทางการของ MetaQuotes ซึ่งมีภาษาไทยและอังกฤษให้ดาวน์โหลดได้ฟรี พร้อมตัวอย่างโค้ดที่ชัดเจน จากนั้นควรฝึกเขียนโค้ดพื้นฐาน เช่น EA ที่เปิดตำแหน่งเมื่อราคาผ่าน MA หรือใช้ RSI วิเคราะห์สัญญาณ จากนั้นค่อยพัฒนาไปสู่ OOP และ Strategy Pattern อย่างค่อยเป็นค่อยไป อย่าพยายามเรียนรู้ทุกอย่างในวันเดียว เพราะการเหน็ดเหนื่อยจากการเรียนรู้ที่เร็วเกินไปจะทำให้เกิดความสับสนและหมดไฟได้ง่าย ให้ตั้งเป้าหมายเล็ก ๆ ทุกวัน เช่น วันนี้จะเข้าใจ `OnInit()` และ `OnTick()` พรุ่งนี้จะเขียน `CTrade` ใช้งานได้ ความสำเร็จจะมาค่อย ๆ แทนที่ความเหนื่อยล้า

แนะนำเพิ่มเติม

🎯 เปิดบัญชี XM Forex → สมัคร

📱 แอป iCafeFX → ดาวน์โหลด

📊 สัญญาณฟรี → รับสัญญาณ

📚 คู่มือเทรด → SiamCafeBook

🤝 สมัคร Partner XM → pipaffiliates.com/c?c=72816&l=th&p=6

ทดลองเทรดฟรี XM — โบรกที่ อ.บอม ใช้เทรดจริง (พาร์ทเนอร์ XM)

คู่มือ Forex ที่เกี่ยวข้อง

อ
XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง

แหล่งอ้างอิง

  • SiamCafe.net - ชุมชนไอทีไทยตั้งแต่ปี 1997
  • iCafeFX.com - ศูนย์วิเคราะห์ Forex และทองคำ