ตอนที่ 3 : MetaEditor เริ่มเขียน Script ตัวแรก
อย่างที่เคยเล่าไปแล้วว่า หากต้องการเขียนชุดคำสั่งให้ทำงานเพียงครั้งเดียวหลังจากที่เราเรียกใช้ เราจะใช้การเขียน Scripts ดังนั้นลองมาเขียน Script เล่นกันดูครับ
โจทย์ที่ 1 : เขียน Script ที่มีความสามารถ เปิด Order สินค้าบน Chart ที่วางไว้แบบ Market Price (MP) ทันที จำนวน 1 สัญญา
มาเริ่มสร้างกันเลย
- เปิดโปรแกรม MetaEditor และกด “New” (ซ้ายมือบน)
2. เลือก “Script” ตามรูป
3. ตั้งชื่อ Script ของเราว่า “buynowscript” ที่ช่อง Name ดังรูป
4. โปรแกรม MetaEditor แสดง Template ของ Script ให้ดังรูป
คำอธิบาย
- #Properties คือ ส่วน Preprocessor ที่ใช้ในการกำหนดค่าต่างๆ ให้กับโปรแกรมเช่นการกำหนดเวอร์ชั่น หรือ คำอธิบายเกี่ยวกับโปรแกรม รายละเอียดอ่านดูได้ที่นี่ [ Reference : https://docs.mql4.com/basis/preprosessor/compilation ]
- OnStart() คือ Event เมื่อมีการเรียกใช้งาน (start) Script [Reference : https://docs.mql4.com/basis/function/events]
5. เพิ่ม Code สำหรับการส่งคำสั่งไปในฟังก์ชั่น OnStart() ดังรูป
คำอธิบาย
- คำสั่ง OrderSend เป็นฟังก์ชั่นการส่งคำสั่งของภาษา MQL4 [Reference : https://book.mql4.com/trading/ordersend]
- หลังจากกด Complie ที่ Tab “Errors” จะพบว่าไม่มี Error (Script เราสามารถทำงานได้) แต่มี 1 คำเตือน (Warning)
ฟังก์ชั่น OrderSend() รับค่าอะไรได้บ้างนะ
int OrderSend (string symbol, int cmd, double volume, double price, int slippage, double stoploss,
double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
ดังนั้นถ้าเทียบกับโค้ดของเรา
OrderSend(Symbol(),OP_BUY,1,Ask,0,0,0,”MyScript”,12345);
ดังนั้น เราแทนค่าพารามิเตอร์ที่เราต้องการไปได้ดังนี้
พารามิเตอร์ | ตัวแปรของเรา | อธิบาย |
symbol | Symbol() | เลือกใช้สินค้าบน Chart ที่วาง Script |
cmd | OP_BUY | คำสั่งซื้อ (Buy) |
volume | 1 | จำนวน Volume |
price | Ask | ซื้อที่ราคาที่เสนอขายที่ถูกที่สุด (Ask) |
slippage | 0 | กำหนดค่า Slippage |
stoploss | 0 | ตั้งจุดตัดขาดทุน |
takeprofit | 0 | ตั้งจุดทำกำไร |
comment | “MyScript” | เขียน comment เพื่อให้เราดูใน Terminal แล้วจำได้ |
magic | 12345 |
ใช้เพื่อให้ Script หรือ Expert Advisor ระบุ Order ได้ เช่นใช้สำหรับการระบุเพื่อปิดสถานะในอนาคต เป็นต้น [Reference : https://www.mql5.com/en/articles/1359 ] |
การ Compile โค้ด
6. เพื่อแก้ไข Warning ในขั้นตอนที่ 5 ประกาศตัวแปรชื่อ OrderStat ประเภท int และรับค่า return จากฟังก์ชั่น OrderSend จากนั้นกด Complie ดังรูป
Warning หายไปแล้วครับ 🙂
6.1 หากเปิด Folder “Scripts” จะเห็นว่ามีไฟล์ butnowscript.ex4 ซึ่งเป็นไฟล์ที่ MT4 Terminal สามารถนำไปใช้งานได้
(เราจะแก้ไขไฟล์ .mq4 ได้เท่านั้น หลังจากกด Compile แล้วโปรแกรมจะสร้างไฟล์ .ex4 ให้โดยอัตโนมัติ)
การนำไปใช้งาน
7. กลับมาที่ MT4 Terminal ที่ Navigator ขยายเมนู Scripts จะเห็น Script ชื่อ “buynowscript” ที่เราสร้างไว้
8. กดปุ่ม AutoTrade และ ลาก Script ชื่อ buynowscript จาก Navigator มายัง Chart ที่เปิดไว้ด้านขวามือ (Chart ที่ต้องการส่งคำสั่ง)
สังเกตุจาก Tab Journal จะเห็นว่ามีการส่งคำสั่งเรียบร้อยแล้ว (Message = order was opened)
หมายเหตุ : หากไม่กดปุ่ม Auto Trade Script จะไม่ทำงาน หากตรวบสอบใน Journal อาจจะเห็น Error ประมาณนี้
10. ดูกันชัดๆ ว่าฉันเขียน Script แรกของฉันได้แล้ว
ตัวอย่างโค้ดข้างต้น เป็นตัวอย่างโค้ดง่ายๆ ให้ได้ทดลองเขียน Script กัน ถึงแม้จะยังใช้ประโยชน์ได้ไม่มากนัก แต่ก็เป็นอย่างก้าวที่สำคัญสำหรับ เรียนรู้ในขั้นตอนต่อไปนะครับ
อ่านต่อ : ตอนที่ 4 : เขียน Expert Advisor ให้ซื้อขายตาม Indicator “Moving Average”
ดาวน์โหลด Script Code เพื่อนำไปศึกษาเพิ่มเติมได้ที่นี่
- ตัวอย่างที่ 1 : เปิด 1 Order ตามตัวอย่างข้างต้น [Download] // Copy และนำไป Past ใน MetaEditor ได้เลยครับ
หมายเหตุ : โค้ดดังกล่าวมีไว้เพื่อการศึกษาเท่านั้นนะครับ