หน้าแรก การเทรดด้วยระบบ โพสต์

การตรวจจับการเริ่มต้นของแท่งเทียนใหม่ใน MetaTrader 5

ไฟล์แนบ
41601.zip (795 bytes, ดาวน์โหลด 0 ครั้ง)

สำหรับ ระบบเทรดอัตโนมัติ (EA) เมื่อได้รับข้อมูลราคาใหม่ ("ติ๊ก") ผ่าน MetaTrader ฟังก์ชันการจัดการเหตุการณ์มาตรฐาน OnTick() จะถูกเรียกใช้โดยโปรแกรม แต่ไม่มีฟังก์ชันจัดการเหตุการณ์มาตรฐานสำหรับการเริ่มต้นแท่งเทียนใหม่

ในการตรวจจับการเริ่มต้นของแท่งเทียนใหม่ เราจำเป็นต้องติดตามเวลาการเปิดของแท่งเทียนล่าสุด เมื่อเวลานี้เปลี่ยนแปลง นั่นหมายความว่าแท่งเทียนใหม่ได้เริ่มขึ้นแล้ว และเราสามารถตอบสนองต่อสถานการณ์นี้ได้ โดยตัวอย่างโค้ดด้านล่างนี้เป็นวิธีหนึ่งที่สามารถทำได้ ซึ่งรองรับทั้ง MQL4 และ MQL5:

// การจัดการเหตุการณ์ติ๊กมาตรฐาน
   void OnTick()
   {
      // ตรวจสอบการเริ่มต้นแท่งเทียนใหม่ (รองรับ MQL4 และ MQL5).
         static datetime dtBarraCorrente   = WRONG_VALUE;
                datetime dtBarraPrecedente = dtBarraCorrente;
                         dtBarraCorrente   = iTime( _Symbol, _Period, 0 );
                bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );

      // ตอบสนองต่อเหตุการณ์แท่งเทียนใหม่และจัดการสถานการณ์
         if( bEventoBarraNova )
         {
            // ตรวจจับว่าติ๊กนี้เป็นครั้งแรกที่ได้รับหรือไม่
               /* เช่น เมื่อมันถูกนำไปใช้กับกราฟครั้งแรกและแท่งเทียนอยู่กลางกระบวนการ */
               if( dtBarraPrecedente == WRONG_VALUE )
               {
                  // ทำบางอย่างเมื่อเป็นติ๊กแรกหรืออยู่กลางแท่งเทียน ...
               }
               else
               {
                  // ทำบางอย่างเมื่อแท่งเทียนปกติเพิ่มขึ้น ...
               };

            // ทำบางอย่างที่ไม่เกี่ยวข้องกับเงื่อนไขก่อนหน้า ...
         }
         else
         {
            // ทำบางอย่างอื่น ...
         };

      // ทำสิ่งอื่น ๆ ...
   };

ในโค้ดข้างต้น ตัวแปร static จะช่วยเก็บเวลาการเปิดแท่งเทียน แม้เมื่อกลับมาจากฟังก์ชัน OnTick() ซึ่งแตกต่างจากตัวแปรปกติ มันจะจดจำข้อมูลของมันไว้และไม่ปล่อยข้อมูลเมื่อออกจากฟังก์ชัน นี่คือกุญแจสำคัญในการตรวจจับการเปลี่ยนแปลงเวลาการเปิดของแท่งเทียนปัจจุบัน

นอกจากนี้ยังมีความสำคัญที่เมื่อ EA ถูกวางบนกราฟเป็นครั้งแรก โค้ดก่อนหน้านี้จะตอบสนองเหมือนกับว่าแท่งเทียนเพิ่งเปิดขึ้น ซึ่งเงื่อนไขนี้ต้องได้รับการจัดการเป็นพิเศษหากสถานการณ์ต้องการการจัดการที่แตกต่างออกไป

โปรดทราบว่าโค้ดต้นฉบับสำหรับการเผยแพร่ทั้งหมดของ CodeBase ตอนนี้สามารถเข้าใช้ได้ผ่านทาง MetaEditor 's "Public Projects" ภายใต้ชื่อ "FMIC"

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)