ในบทความนี้เราจะมาพูดถึง Expert Advisor ที่ชื่อว่า "Test_ChartEvent.mq4" ซึ่งเป็นตัวอย่างการใช้งาน ChartEvent ที่สามารถแสดงเหตุการณ์ต่าง ๆ ไม่ว่าจะเป็นการกดปุ่มคีย์บอร์ด การคลิกและเคลื่อนที่ของเมาส์ รวมถึงเหตุการณ์ที่กำหนดเองได้ คุณสามารถกดปุ่ม 'H' เพื่อดูวิธีการใช้งาน และกดปุ่ม 'M' เพื่อเข้าสู่โหมด MOUSE_MOVE.
โค้ดต้นฉบับนี้ใช้ได้ทั้งใน MetaTrader 4 และ MetaTrader 5.
ฟังก์ชัน Prototype
- bool Obj_Create()
- bool Obj_Delete()
- bool Obj_Move(int hSens,int vSens) - ใช้ในการเคลื่อนที่ของวัตถุ.
- void Print_Info() - พิมพ์ข้อมูลเกี่ยวกับวัตถุ.
- int MouseMove(int aXX,int aYY,string sState) - จัดการเหตุการณ์การเคลื่อนที่ของเมาส์.
ตัวแปร Global
- int gChartNo=0
- int gSubWinNo=0
- string gsObj_Name_selected="" - ชื่อของวัตถุที่เลือกอยู่ในขณะนี้.
เหตุการณ์ที่กำหนดเอง
มีการกำหนดเหตุการณ์ที่กำหนดเอง 3 ประเภท:
- #define cMyEvent_1 0
- #define cMyEvent_2 1
- #define cMyEvent_3_broadcast 2
ฟังก์ชัน OnTimer()
ฟังก์ชันนี้สร้าง ChartEvent ที่กำหนดเองเป็นระยะ ๆ และสุ่มสร้างเหตุการณ์ที่กำหนดเองสามประเภท (cMyEvent_1, cMyEvent_2 และ cMyEvent_3_broadcast) โดยเฉพาะเหตุการณ์ cMyEvent_3_broadcast จะถูกสร้างสำหรับทุกหน้าต่างกราฟที่เปิดอยู่.
ตัวอย่างของคลาส
คลาส "CObjectMan" ถูกสร้างขึ้นเพื่อจัดการฟังก์ชันการทำงานสำหรับวัตถุในกราฟ โดยได้มีการประกาศตัวแปรสองตัวจากคลาสนี้คือ gObjectMan1 และ gObjectMan2.
ชื่อของวัตถุกราฟิกที่เชื่อมโยงกับสองตัวแปรนี้คือ "Green Button" และ "Yellow Button" ตามลำดับ.
การประมวลผลเหตุการณ์
void OnChartEvent():
เหตุการณ์ "CHARTEVENT_KEYDOWN":
- ปุ่มลูกศร 4 ทิศทาง หรือปุ่มลูกศร 4 ทิศทางบนแผงดิจิตอลเพื่อเคลื่อนที่วัตถุที่เลือก.
- 'H': พิมพ์ข้อมูลช่วยเหลือ (ในหน้าต่างล็อกของผู้เชี่ยวชาญ).
- 'I': พิมพ์ข้อมูลตำแหน่งของวัตถุสองตัว.
- 'M': เปิดใช้งานเหตุการณ์ MOUSE_MOVE.
เหตุการณ์ที่กำหนดเอง
พิมพ์ข้อมูลเกี่ยวกับเหตุการณ์เหล่านี้ โดยเฉพาะเหตุการณ์ MyEvent_3_broadcast.
เหตุการณ์ของวัตถุ
- CHARTEVENT_OBJECT_CHANGE, CHARTEVENT_OBJECT_DRAG, CHARTEVENT_OBJECT_DELETE - พิมพ์ชื่อของวัตถุที่เกี่ยวข้อง.
- CHARTEVENT_OBJECT_CLICK - พิมพ์ชื่อของวัตถุที่ถูกคลิก และเลือกชื่อนั้นเพื่อเคลื่อนที่โดยปุ่มทิศทาง.
เหตุการณ์ของเมาส์
- CHARTEVENT_CLICK - พิมพ์ข้อมูลของแถบที่ถูกคลิก: ราคา (เปิด, ปิด) และเวลาของแถบ.
- CHARTEVENT_MOUSE_MOVE (ดู: CHART_EVENT_MOUSE_MOVE) - พิมพ์ข้อมูลของช่วงเวลาที่ครอบคลุม: จำนวนแถบ, การเปลี่ยนแปลงราคา.

การสาธิต
คุณสามารถทำการทดสอบดังต่อไปนี้:
- คลิกที่หนึ่งในสองวัตถุ (ปุ่ม) เพื่อเลือกและใช้ปุ่มลูกศรเพื่อเคลื่อนที่วัตถุที่เลือก.
- คลิกที่แถบกราฟและดูข้อมูลของแถบในแท็บล็อก (ข้อความ).
- กดปุ่ม 'M' เพื่อเข้าสู่โหมด MOUSE_MOVE กด Ctrl+F เพื่อแสดงเส้นกากบาท จากนั้นทำการลากและวาง หากคุณไม่เห็นข้อความในล็อก กรุณาเปลี่ยนพารามิเตอร์นำเข้า: "iLogLevel".
โพสต์ที่เกี่ยวข้อง
- Ilan 1.6 Dynamic HT: ระบบเทรดอัจฉริยะสำหรับ MetaTrader 5
- การสร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Morning/Evening Stars + RSI
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก Morning/Evening Stars + MFI
- MQL5 Wizard: สร้างสัญญาณการเทรดจาก Bullish Harami/Bearish Harami พร้อม MFI
- MQL5 Wizard: ระบบเทรดสัญญาณจาก Hammer/Hanging Man + MFI บน MetaTrader 5