दोस्तों, आज हम बात करेंगे MetaTrader 5 में मल्टीकरेंसी मोड की नई कार्यान्वयन के बारे में। यह OnTick(string symbol) फंक्शन में विस्तारित है।
इसके फायदे:
- यह डेमो और असली खातों पर असली मल्टीकरेंसी मोड प्रदान करता है।
- सेटिंग्स बहुत सरल हैं।
- OnTick(string symbol) के लिए इवेंट्स की सूची को कॉन्फ़िगर किया जा सकता है: NewTick और/या NewBar।
- संकेतों की सूची को कॉन्फ़िगर किया जा सकता है (Market Watch से सभी संकेत या कुछ विशेष संकेत)।
- Market Watch संकेतों के साथ काम करते समय, यह OnTick(string symbol) में "ऑन द फ्लाई" इवेंट्स को प्रबंधित करने की अनुमति देता है।
- इसकी कार्यप्रणाली को समझना आवश्यक नहीं है। सभी कोड इंक्लूड फ़ाइल में मौजूद हैं।
- इसे स्ट्रेटेजी टेस्ट में भी इस्तेमाल किया जा सकता है।
एक्सपर्ट एडवाइजर का टेम्पलेट इस प्रकार दिखता है:
//+------------------------------------------------------------------+ //| OnTick(string symbol).mq5 | //| Copyright 2010, Lizar | //| https://www.mql5.com/ru/users/Lizar | //+------------------------------------------------------------------+ #define VERSION "1.00 Build 1 (01 Fab 2011)" #property copyright "Copyright 2010, Lizar" #property link "https://www.mql5.com/ru/users/Lizar" #property version VERSION #property description "Template of the Expert Advisor" #property description "with multicurrency OnTick(string symbol) event handler" //+------------------------------------------------------------------+ //| MULTICURRENCY MODE SETTINGS | //| of OnTick(string symbol) event handler | //| | //| 1.1 List of symbols needed to proceed in the events: | #define SYMBOLS_TRADING "EURUSD","GBPUSD","USDJPY","USDCHF" //| 1.2 If you want all symbols from Market Watch, use this: | //#define SYMBOLS_TRADING "MARKET_WATCH" //| Note: Select only one way from 1.1 or 1.2. | //| | //| 2. Event type for OnTick(string symbol): | #define CHART_EVENT_SYMBOL CHARTEVENT_TICK //| Note: the event type must corresponds to the | //| ENUM_CHART_EVENT_SYMBOL enumeration. | //| | //| 3. Include file: | #include <OnTick(string symbol).mqh> //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert initialization function | //| This function must be declared, even if it empty. | //+------------------------------------------------------------------+ int OnInit() { //--- Add your code here... return(0); } //+------------------------------------------------------------------+ //| Expert multi tick function | //| Use this function instead of the standard OnTick() function | //+------------------------------------------------------------------+ void OnTick(string symbol) { //--- Add your code here... Print("New event on symbol: ",symbol); } //+------------------------------------------------------------------+ //| ChartEvent function | //| This function must be declared, even if it empty. | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // event id const long& lparam, // event param of long type const double& dparam, // event param of double type const string& sparam) // event param of string type { //--- Add your code here... } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Add your code here... } //+------------------------------ end -------------------------------+
कुछ विशेषताएँ:
1. सेटिंग्स
सभी सेटिंग्स को #define निर्देशों का उपयोग करके कॉन्फ़िगर किया जा सकता है। OnTick(string symbol) फंक्शन के सही कार्य के लिए आपको केवल दो पैरामीटर निर्दिष्ट करने की आवश्यकता है: SYMBOLS_TRADING और CHART_EVENT_SYMBOL। पहले (SYMBOLS_TRADING) इवेंट्स के लिए उपयोग किए जाने वाले संकेत सूची को परिभाषित करता है। दूसरा (CHART_EVENT_SYMBOL) सभी संकेतों के लिए इवेंट प्रकारों को परिभाषित करता है।
SYMBOLS_TRADING में संकेतों की सूची होती है, जैसे:
#define SYMBOLS_TRADING "EURUSD","GBPUSD","USDJPY","USDCHF"यह सूची स्ट्रिंग्स के रूप में कॉमा द्वारा विभाजित होनी चाहिए। सूची एक नई लाइन के अंत में समाप्त होती है।
SYMBOLS_TRADING को इस प्रकार परिभाषित किया जा सकता है:
#define SYMBOLS_TRADING "MARKET_WATCH"इसका मतलब है कि सभी संकेत Market Watch से उपयोग किए जाएंगे। इस विधि का उपयोग "ऑन द फ्लाई" संकेतों की सूची को बदलने के लिए किया जा सकता है। बस Market Watch में आवश्यक संकेतों को जोड़ें या हटा दें।
CHART_EVENT_SYMBOL इवेंट प्रकार को ENUM_CHART_EVENT_SYMBOL एनुमरेशन से फ्लैग या उनके संयोजन से परिभाषित किया जाता है। विवरण यहाँ देखें (रूसी में)।
यहाँ इवेंट प्रकारों के उदाहरण दिए गए हैं:
//--- Example 1. OnTick event: #define CHART_EVENT_SYMBOL CHARTEVENT_TICK //--- Example 2. NewBar M1 and New Bar H1: #define CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M1
2. इंक्लूड फ़ाइल।
OnTick(string symbol).mqh फ़ाइल आवश्यक है, इस फ़ाइल में OnTick(string symbol) फंक्शन का कार्यान्वयन है। यह OnTick(string symbol) फंक्शन का उपयोग करने का एक सरल तरीका प्रदान करता है। कुछ मानक फंक्शंस को एक्सपर्ट एडवाइजर के कोड में घोषित किया जाना चाहिए, भले ही वे खाली हों।
3. स्ट्रेटेजी टेस्ट।
जैसा कि आप जानते हैं (वर्तमान में), OnChartEvent स्ट्रेटेजी टेस्ट में समर्थित नहीं है। इस समस्या को हल करने के लिए, इवेंट्स को संभालने के लिए वैश्विक वेरिएबल्स का उपयोग किया जाता है। यह तरीका केवल स्ट्रेटेजी टेस्ट में उपयोग किया जाता है, सभी अन्य मामलों (वास्तविक/डेमो खातों) में, इवेंट्स को OnChartEvent के माध्यम से संसाधित किया जाता है।
यहाँ एक विशेषता है। स्ट्रेटेजी टेस्ट में OnTick(string symbol) उन संकेतों के टिक पर काम करेगा, जो स्ट्रेटेजी टेस्ट की सेटिंग्स में निर्दिष्ट हैं। दूसरे शब्दों में, यह OnTick() की तरह काम करता है, लेकिन इसे चयनित संकेतों पर नए टिक आने पर भी कॉल किया जाता है। स्ट्रेटेजी टेस्ट में काम करने के लिए SYMBOLS_TRADING को संकेतों की सूची के रूप में निर्दिष्ट किया जाना चाहिए।
4. "स्पाई"।
यह "स्पाई" (एजेंट-इंडिकेटर्स) का उपयोग करता है। "Spy Control panel MCM.ex5" फ़ाइल को \\MQL5\Indicators\ फ़ोल्डर में रखा जाना चाहिए।
5. संग्रह से फ़ाइलों को \\MQL5 फ़ोल्डर में निकालना चाहिए। आवश्यक फ़ाइलें:
- /MQL5/Experts/OnTick(string symbol).mq5 - एक्सपर्ट एडवाइजर का उदाहरण, टेम्पलेट का स्रोत कोड;
- /MQL5/Experts/OnTick(string symbol).ex5 - एक्सपर्ट एडवाइजर का संकलित फ़ाइल;
- /MQL5/Indicators/Spy Control panel MCM.mq5 - एजेंट-इंडिकेटर, स्रोत कोड;
- /MQL5/Indicators/Spy Control panel MCM.ex5 - एजेंट-इंडिकेटर, संकलित फ़ाइल;
- /MQL5/Include/OnTick(string symbol).mqh - OnTick(string symbol) फंक्शन के कार्यान्वयन के लिए सभी आवश्यक फ़ंक्शंस के साथ इंक्लूड फ़ाइल।
संबंधित पोस्ट
- MQL5 विजार्ड: मॉर्निंग/इविनिंग स्टार और RSI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड - सुबह/शाम के तारे और MFI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: सुबह/शाम के तारे के आधार पर ट्रेड सिग्नल + CCI के साथ एक्सपर्ट एडवाइजर
- MQL5 विजार्ड से हैमर/हैंगिंग मैन CCI ट्रेड सिग्नल्स बनाना