MQL5 เป็นภาษาโปรแกรมระดับสูงที่ใช้พัฒนาอินดิเคเตอร์แบบกำหนดเอง Expert Advisor (EA) และกลยุทธ์การเทรดอัตโนมัติอื่น ๆ สำหรับแพลตฟอร์มเทรด MetaTrader 5 ต่อไปนี้คือคุณสมบัติหลักบางประการของภาษา MQL5:
- การเขียนโปรแกรมเชิงวัตถุ: MQL5 เป็นภาษาเชิงวัตถุ ซึ่งหมายความว่าอิงตามแนวคิดของออบเจ็กต์ที่มีทั้งข้อมูลและเมธอด ทำให้เขียนโปรแกรมได้ง่ายและมีประสิทธิภาพมากขึ้น รวมถึงจัดระเบียบและนำโค้ดกลับมาใช้ซ้ำได้ดียิ่งขึ้น
- สภาพแวดล้อมการพัฒนาแบบครบวงจร: MQL5 มาพร้อมสภาพแวดล้อมการพัฒนาแบบครบวงจร (IDE) ซึ่งประกอบด้วยตัวแก้ไขโค้ด คอมไพเลอร์ และดีบักเกอร์ ทำให้เขียนและทดสอบโค้ดได้ง่ายโดยตรงภายในแพลตฟอร์ม MetaTrader 5
- ไลบรารีที่หลากหลาย: MQL5 มีไลบรารีของฟังก์ชันและอินดิเคเตอร์ในตัวจำนวนมากที่นำมาใช้พัฒนากลยุทธ์การเทรดได้ นอกจากนี้ยังมีไลบรารีจากบุคคลที่สามอีกมากมายที่สามารถนำมาผสานเข้ากับโปรแกรม MQL5 ได้
- การเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์: MQL5 ใช้โมเดลการเขียนโปรแกรมแบบขับเคลื่อนด้วยเหตุการณ์ ซึ่งหมายความว่าโปรแกรมจะทำงานเมื่อมีเหตุการณ์เฉพาะเกิดขึ้น เช่น ราคาเปลี่ยนแปลง การดำเนินคำสั่ง หรือเหตุการณ์จากตัวจับเวลา
- มัลติเธรด: MQL5 รองรับการเขียนโปรแกรมแบบมัลติเธรด ซึ่งหมายความว่าสามารถสร้างหลายเธรดเพื่อรันส่วนต่าง ๆ ของโปรแกรมพร้อมกันได้ วิธีนี้เป็นประโยชน์ต่อการเพิ่มประสิทธิภาพการทำงานและการจัดการกลยุทธ์การเทรดที่ซับซ้อน
- รองรับข้อมูลหลายประเภท: MQL5 รองรับข้อมูลหลากหลายประเภท ได้แก่ จำนวนเต็ม จำนวนทศนิยม สตริง และอาร์เรย์ นอกจากนี้ยังรองรับการทำงานกับข้อมูลทางการเงินในตัว เช่น ข้อมูลราคาและปริมาณการซื้อขาย
ต่อไปนี้คือตัวอย่างโปรแกรม MQL5 แบบง่ายที่คำนวณค่าเส้นค่าเฉลี่ยเคลื่อนที่ของคู่สกุลเงินและพิมพ์ผลลัพธ์ลงในหน้าต่างเทอร์มินัล:
// --- input parameters
input int Period = 20; // Period of the moving average
input ENUM_APPLIED_PRICE PriceType = PRICE_CLOSE; // Applied price type
// --- global variables
double MovingAverage; // Moving average value
// --- initialization function
int OnInit()
{
// Initialize the MovingAverage variable
MovingAverage = 0.0;
return(INIT_SUCCEEDED);
}
// --- main function
void OnTick()
{
// Calculate the moving average
MovingAverage = iMA(_Symbol, 0, Period, 0, PriceType, MODE_SMA, 0);
// Print the result to the terminal window
Print("Moving Average: ", MovingAverage);
}