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

नए बार या कैंडल की शुरुआत का पता कैसे लगाएं - MetaTrader 5 के लिए सिस्टम ट्रेडिंग

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

जब हम एक सिस्टम ट्रेडिंग (जैसे Expert Advisor (EA)) का उपयोग करते हैं, तो जैसे ही नया टिक कोट आता है, MetaTrader टर्मिनल डिफ़ॉल्ट 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 को पहली बार चार्ट पर रखा जाता है, तो उपरोक्त कोड ऐसे प्रतिक्रिया करता है जैसे बार अभी खुला है। यदि स्थिति को अलग ढंग से हैंडल करने की आवश्यकता है, तो इस स्थिति की विशेष हैंडलिंग की आवश्यकता होती है।

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

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

टिप्पणी (0)