होम सिस्टम ट्रेडिंग पोस्ट

नए बार या कैंडल की पहचान कैसे करें - मेटा ट्रेडर 4 के लिए

संलग्नक
39104.zip (884 bytes, डाउनलोड 0 बार)

जब हम एक एक्सपर्ट एडवाइजर (EA) की बात करते हैं, तो मेटा ट्रेडर टर्मिनल पर नया टिक कोट आने पर OnTick() इवेंट हैंडलिंग फंक्शन कॉल होता है। लेकिन, नए बार (कैंडल) के शुरू होने पर कोई डिफॉल्ट इवेंट हैंडलिंग फंक्शन नहीं होता।

इसकी पहचान करने के लिए, हमें वर्तमान में सबसे हाल के बार के ओपनिंग टाइम पर नज़र रखनी होगी। जैसे ही यह बदलता है, यह नए बार की शुरुआत का संकेत देता है, और हम इस पर प्रतिक्रिया कर सकते हैं। नीचे दिया गया कोड, जो MQL4 और MQL5 दोनों के साथ संगत है, इस कार्य को कैसे किया जा सकता है, इसका एक उदाहरण है:

// डिफॉल्ट टिक इवेंट हैंडलर
   void OnTick()
   {
      // नए बार की जांच करें (MQL4 और MQL5 दोनों के लिए)
         static datetime dtBarCurrent  = WRONG_VALUE;
                datetime dtBarPrevious = dtBarCurrent;
                         dtBarCurrent  = iTime( _Symbol, _Period, 0 );
                bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );

      // नए बार इवेंट पर प्रतिक्रिया करें और इसे संभालें
         if( bNewBarEvent )
         {
            // पहले प्राप्त टिक की पहचान करें और इसे संभालें
               /* उदाहरण के लिए, जब इसे चार्ट पर पहली बार जोड़ा गया हो और
                  बार अपने प्रगति के मध्य में हो और
                  यह वास्तव में नए बार की शुरुआत नहीं हो। */
               if( dtBarPrevious == WRONG_VALUE )
               {
                  // पहले टिक या बार के मध्य में कुछ करें ...
               }
               else
               {
                  // जब एक सामान्य बार शुरू होता है तो कुछ करें ...
               };

            // ऊपर की स्थिति के बिना कुछ करें ...
         }
         else
         {
            // कुछ और करें ...
         };

      // अन्य कार्य करें ...
   };

उपरोक्त कोड में, स्टैटिक वैरिएबल बार के ओपनिंग टाइम को ट्रैक करता है, भले ही OnTick() फंक्शन से लौटने के समय। एक सामान्य लोकल वैरिएबल के विपरीत, यह अपने डेटा को याद रखता है और फंक्शन छोड़ने पर इसे रिलीज नहीं करता। यह वर्तमान बार के ओपनिंग टाइम में बदलाव का पता लगाने की कुंजी है।

यह भी महत्वपूर्ण है कि जब EA को पहली बार चार्ट पर रखा जाता है, तो ऊपर दिया गया कोड ऐसे प्रतिक्रिया करता है मानो बार अभी-अभी खुला है। यदि स्थिति को अलग तरीके से संभालने की आवश्यकता है, तो यह स्थिति विशेष हैंडलिंग की मांग करती है।

कृपया ध्यान दें कि मेरे सभी कोडबेस प्रकाशनों का स्रोत कोड अब "पब्लिक प्रोजेक्ट्स" टैब में मेटा एडिटर के अंतर्गत "FMIC" नाम से भी उपलब्ध है।

संबंधित पोस्ट

टिप्पणी (0)