चलिए, सीधे मुद्दे पर आते हैं: मेटाट्रेडर 5 का अंतर्निहित आर्थिक कैलेंडर ऐतिहासिक कीमतों के साथ पूरी तरह से समन्वयित नहीं है।
कीमतें उन समय चिह्नों के साथ चिह्नित होती हैं जो सर्वर पर हर बार के निर्माण के समय लागू समय क्षेत्र के अनुसार होती हैं।
एक बार जब बार बन जाते हैं, तो वे अपरिवर्तित रहते हैं, जिसमें उनके समय चिह्न भी शामिल होते हैं। दूसरी ओर, आर्थिक कैलेंडर वर्तमान समय क्षेत्र के अनुसार घटनाओं (भूतकाल, वर्तमान और भविष्य) के बारे में जानकारी देता है। चूंकि कई ब्रोकर विशेष समय क्षेत्र के अनुसूची का पालन करते हैं, जिसमें दिन की रोशनी बचाने के मोड को चालू और बंद करना शामिल है, ऐतिहासिक घटनाओं के समय चिह्न संबंधित बार के सापेक्ष 1 घंटे से भी शिफ्ट हो सकते हैं, लगभग साल के आधे समय के लिए।
इसके अलावा, ब्रोकर कभी-कभी केवल DST को स्विच करने से अधिक रडिकल तरीके से समय क्षेत्र बदलते हैं। ऐतिहासिक कीमतें तब आर्थिक घटनाओं के समय के सापेक्ष बाईं या दाईं ओर कई घंटों तक शिफ्ट हो सकती हैं, जो अब सर्वर के अपडेटेड समय क्षेत्र में कैलेंडर द्वारा रिपोर्ट की जाती हैं।
ध्यान रखें कि समाचार विभिन्न देशों से आते हैं जिनका अपना DST शेड्यूल होता है और आपका सर्वर किसी ऐसे क्षेत्र में हो सकता है जिसका शेड्यूल अलग हो, जिससे समाचार रिलीज का समय चार्ट पर और भी अजीब तरीके से "कूद" सकता है (उदाहरण के लिए, वसंत और शरद ऋतु के कुछ हफ्तों में)।
ये सब ऑनलाइन इतना महत्वपूर्ण नहीं लगता, लेकिन अगर हम एक समाचार आधारित रणनीति का परीक्षण करना चाहें तो?
हाँ, आप कह सकते हैं कि कैलेंडर मेटाट्रेडर टेस्ट में स्वाभाविक रूप से समर्थित नहीं है, लेकिन कई व्यापारी समाचारों का व्यापार करना पसंद करते हैं और जो लोग ऐसा नहीं करते हैं उन्हें बाजार से हट जाना चाहिए जब समाचारों के कारण हलचल होने वाली हो। इसलिए, कैलेंडर के साथ बैकटेस्टिंग महत्वपूर्ण है। यही कारण है कि इसे एक बाहरी स्टोरेज (फाइल, डेटाबेस) में निर्यात करना और फिर इसे टेस्ट में आयात करना बहुत तार्किक है।
यहाँ हम ऐतिहासिक कीमतों और ऐतिहासिक घटनाओं के असंक्रमण की समस्या में आते हैं। सरलता के लिए, इस समस्या को किताब में अनसुलझा छोड़ दिया गया था।
अब इसे CalendarCache.mqh के विस्तारित संस्करण और प्रदर्शित संकेतक CalendarMonitorCachedTZ.mq5 के माध्यम से हल किया गया है। यह किताब से CalendarMonitorCached.mq5 का थोड़ा बदल हुआ संस्करण है।
यह संकेतक समाचार घटनाओं की निगरानी करता है और चार्ट पर कई पूर्व और आगामी घटनाओं के साथ एक तालिका को गतिशील रूप से अपडेट करता है।
समय सुधार से संबंधित सभी कार्य पर्दे के पीछे होते हैं - दूसरे सार्वजनिक पुस्तकालय TimeServerDST.mqh में। बेहतर समझ के लिए कि समय सुधार कैसे कार्य करता है, आप स्क्रिप्ट CalendarCSVForDates.mq5 का उपयोग कर सकते हैं और बिना सुधार के CSV फाइलों की तुलना कर सकते हैं।
यहाँ बताया गया है कि कैसे यह पुस्तकालय दोनों प्रोग्राम्स के स्रोत कोड में एम्बेड किया गया है - स्क्रिप्ट और इस संकेतक।
#include <TimeServerDST.mqh> // कैलेंडर कैश को शामिल करने से पहले समय क्षेत्र सुधार समर्थन सक्षम करता है #include <MQL5Book/CalendarFilterCached.mqh> #include <MQL5Book/CalendarCache.mqh>
जैसे कि मूल संकेतक में है, वहाँ एक स्ट्रिंग इनपुट CalendarCacheFile है, जहाँ आप लेखन या पढ़ने के लिए कैलेंडर फ़ाइल का नाम प्रदान कर सकते हैं।
जब संकेतक एक ऑनलाइन चार्ट पर खाली CalendarCacheFile के साथ जोड़ा जाता है, तो यह ऑन-द-फ्लाई पर अंतर्निहित कैलेंडर के साथ काम करता है।
जब संकेतक एक विशिष्ट नाम के साथ CalendarCacheFile में निष्पादित होता है और फाइल मौजूद नहीं है, तो संकेतक कैलेंडर रिकॉर्ड को कैश फ़ाइल में निर्यात करता है (फाइल बनाता है) और बाहर निकलता है। यह वह चरण है जब समय चिह्नों को ठीक किया जाना चाहिए/करना चाहिए (नीचे FixCachedTimesBySymbolHistory देखें)।
जब संकेतक एक मौजूदा कैश-फाइल के नाम के साथ CalendarCacheFile में निष्पादित होता है, तो यह कैश को लोड करता है और इस कॉपी के साथ उसी तरह से काम करता है जैसे कि अंतर्निहित कैलेंडर के साथ। यह विशेष रूप से टेस्ट के लिए उपयोगी है।

कृपया न भूलें कि टेस्ट के लिए अतिरिक्त फ़ाइलें निर्दिष्ट करना आवश्यक है, हमारे मामले में - तैयार ऑनलाइन कैलेंडर फ़ाइल, निर्देश में #property tester_file में या आपको कैलेंडर फ़ाइल को सामान्य फ़ोल्डर C:/Users/<User>/AppData/Roaming/MetaQuotes/Terminal/Common/ में रखना चाहिए।
बेशक, कैश को बैकटेस्टिंग और ऑप्टिमाइजेशन के दौरान एक EA में भी लोड किया जा सकता है।
इनपुट स्ट्रिंग FixCachedTimesBySymbolHistory को निम्नलिखित तरीके से संसाधित किया जाता है।
यदि यह खाली है, तो संकेतक कैश को बिना समय सुधार के सहेजता है।
निर्यात के दौरान समय सुधार सक्षम करने के लिए, आपको एक प्रतीक निर्दिष्ट करना चाहिए, जो सर्वर के ऐतिहासिक समय क्षेत्रों का अनुभवात्मक पता लगाने के लिए उपयोग किया जाएगा। यह H1 कीमतों के इतिहास के आधार पर काम करता है, बेहतर
संबंधित पोस्ट
- ओपन रेंज ब्रेकआउट इंडिकेटर: ट्रेडिंग में लाभ उठाने का तरीका
- Volume Profile + Range v6.0: MetaTrader 5 के लिए एक बेहतरीन संकेतक
- Volume Profile + Range v6.0: MetaTrader 5 के लिए नया इंडिकेटर
- 3 इन 1 स्टोकैस्टिक: आपके MetaTrader 5 के लिए बेहतरीन इंडीकेटर
- सिंगुलर स्पेक्ट्रम एनालिसिस पर आधारित ट्रेंड इंडिकेटर - MetaTrader 5 के लिए