สำหรับ ระบบเทรด (EA) เมื่อมีการส่งคำเสนอราคาครั้งใหม่เข้ามา MetaTrader จะเรียกใช้ฟังก์ชันจัดการเหตุการณ์ OnTick() โดยอัตโนมัติ แต่ไม่มีฟังก์ชันจัดการเหตุการณ์เริ่มต้นสำหรับบาร์ใหม่ (เทียนใหม่) โดยตรง
เพื่อที่จะตรวจจับการเริ่มต้นของบาร์ใหม่ เราต้องติดตามเวลาที่บาร์ล่าสุดเริ่มต้น หากเวลานี้เปลี่ยนแปลง นั่นหมายความว่าเรากำลังเข้าสู่บาร์ใหม่ และเราสามารถตอบสนองต่อเหตุการณ์นี้ได้ ตัวอย่างโค้ดด้านล่างนี้ที่เข้ากันได้กับ MQL4 และ MQL5 จะแสดงวิธีการทำเช่นนี้:
// ฟังก์ชันจัดการเหตุการณ์ tick เริ่มต้น void OnTick() { // ตรวจสอบบาร์ใหม่ (เข้ากันได้กับ MQL4 และ MQL5). static datetime dtBarCurrent = WRONG_VALUE; datetime dtBarPrevious = dtBarCurrent; dtBarCurrent = iTime( _Symbol, _Period, 0 ); bool bNewBarEvent = ( dtBarCurrent != dtBarPrevious ); // ตอบสนองต่อเหตุการณ์บาร์ใหม่และจัดการมัน if( bNewBarEvent ) { // ตรวจสอบว่าการรับ tick ครั้งนี้เป็นครั้งแรก /* เช่น เมื่อมันถูกแนบกับกราฟเป็นครั้งแรก และ บาร์อยู่ในระหว่างการพัฒนา และ มันไม่ใช่การเริ่มต้นของบาร์ใหม่จริง ๆ */ if( dtBarPrevious == WRONG_VALUE ) { // ทำอะไรบางอย่างเมื่อรับ tick ครั้งแรก ... } else { // ทำอะไรบางอย่างเมื่อบาร์ปกติเริ่ม ... }; // ทำอะไรบางอย่างไม่ว่าจะอยู่ในเงื่อนไขใด ... } else { // ทำอะไรบางอย่างอื่น ... }; // ทำอย่างอื่น ... };
ในโค้ดข้างต้น ตัวแปร static จะช่วยติดตามเวลาที่บาร์เปิด แม้ว่าเราจะกลับมาจากฟังก์ชัน OnTick() ตัวแปรนี้จะจดจำข้อมูลของมันและไม่ถูกปล่อยเมื่อออกจากฟังก์ชัน นี่คือกุญแจสำคัญในการตรวจจับการเปลี่ยนแปลงเวลาเปิดของบาร์ปัจจุบัน
นอกจากนี้ยังสำคัญที่ควรทราบว่าเมื่อ EA ถูกวางลงบนกราฟเป็นครั้งแรก โค้ดด้านบนจะตอบสนองเหมือนกับว่าบาร์เพิ่งเปิด ซึ่งต้องการการจัดการพิเศษหากสถานการณ์นี้ต้องการการดำเนินการที่แตกต่างออกไป
โปรดทราบว่าโค้ดทั้งหมดที่เผยแพร่ใน CodeBase ขณะนี้มีให้ในแท็บ "Public Projects" ของ MetaEditor ภายใต้ชื่อ "FMIC".
โพสต์ที่เกี่ยวข้อง
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก Morning/Evening Stars + MFI
- สร้าง Expert Advisor ด้วย MQL5 Wizard สำหรับสัญญาณการเทรด Bullish Harami/Bearish Harami และ RSI
- การสร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Morning/Evening Stars + RSI
- ใช้ MQL5 Wizard สร้าง Expert Advisor ด้วยสัญญาณเทรด Morning/Evening Stars + Stochastic
- MQL5 Wizard: สร้างสัญญาณเทรดจาก Bullish Harami/Bearish Harami + Stochastic สำหรับ MetaTrader 5