MQL5 विजार्ड आपको तैयार किए गए एक्सपर्ट एडवाइजर्स बनाने की सुविधा देता है, जो स्टैंडर्ड लाइब्रेरी क्लासेस पर आधारित होते हैं जो क्लाइंट टर्मिनल के साथ आते हैं (डिटेल्स के लिए MQL5 विजार्ड में तैयार एक्सपर्ट एडवाइजर्स बनाने के लिए देखें)। यह आपके ट्रेड आइडियाज को जल्दी चेक करने की अनुमति देता है, आपको बस अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी होती है। इस क्लास की संरचना और उदाहरण MQL5 विजार्ड: ट्रेडिंग सिग्नल का मॉड्यूल कैसे बनाएं में मिल सकते हैं।
आइडिया यह है कि ट्रेडिंग सिग्नल्स की क्लास CExpertSignal से विरासत में ली जाती है, इसके बाद, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने तरीके से ओवरराइड करना होता है।
एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियाँ बताई गई हैं, हम रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटर्स द्वारा पुष्टि की गई हैं।
सबसे अच्छा तरीका यह है कि एक अलग क्लास बनाएं, जो CExpertSignal से विरासत में हो, कैंडलस्टिक पैटर्न्स के गठन की जांच करने के लिए। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल्स की पुष्टि के लिए, आवश्यक विशेषताएँ (जैसे, ऑस्सीलेटर्स द्वारा पुष्टि) के साथ CCandlePattern से विरासत में ली गई क्लास लिखना पर्याप्त है।
यहाँ हम "डार्क क्लाउड कवर/पियर्सिंग लाइन" रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल्स पर विचार करेंगे, जो CCI इंडिकेटर द्वारा पुष्टि की गई हैं। ट्रेड सिग्नल्स का मॉड्यूल CCandlePattern क्लास पर आधारित है, यह कैंडलस्टिक पैटर्न्स के साथ ट्रेड सिग्नल्स बनाने के लिए इसके उपयोग का एक सरल उदाहरण है।
1. "डार्क क्लाउड कवर" और "पियर्सिंग लाइन" रिवर्सल कैंडलस्टिक पैटर्न
1.1. डार्क क्लाउड कवर
यह एक बेयरिश कैंडलस्टिक रिवर्सल है जो अप ट्रेंड के अंत में होता है। पहले दिन एक लंबा सफेद कैंडलस्टिक बनता है और दूसरे दिन एक गैप अप बनता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के मध्य बिंदु से नीचे होता है।

Fig. 1. "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न
"डार्क क्लाउड कवर" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में CCandlePattern क्लास का उपयोग किया गया है:
//+------------------------------------------------------------------+ //| "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- डार्क क्लाउड कवर if((Close(2)-Open(2)>AvgBody(1)) && // (लंबा सफेद) (Close(1)<Close(2)) && // (Close(1)>Open(2)) && // (पिछले बॉडी के भीतर क्लोज) (MidOpenClose(2)>CloseAvg(1)) && // (अप ट्रेंड) (Open(1)>High(2))) // (नई उच्चता पर ओपन) return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) मेथड का उपयोग "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।
1.2. पियर्सिंग लाइन
दूसरे दिन का गैप डाउन डाउनट्रेंड को जारी रखता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के बॉडी के मध्य बिंदु के ऊपर होता है। यह भालुओं को बताता है कि एक बॉटम बन सकता है। यह प्राइस एक्शन बार चार्ट्स की तुलना में कैंडलस्टिक चार्ट्स पर अधिक स्पष्ट है। दूसरे दिन के क्लोज का पहले दिन के बॉडी में जितना अधिक प्रवेश होगा, रिवर्सल सिग्नल की सफलता की संभावना उतनी ही अधिक होगी।

Fig. 2. "पियर्सिंग लाइन" कैंडलस्टिक पैटर्न
"पियर्सिंग लाइन" पैटर्न की पहचान CheckPatternPiercingLine() मेथड में CCandlePattern क्लास का उपयोग किया गया है:
//+------------------------------------------------------------------+ //| "पियर्सिंग लाइन" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- पियर्सिंग लाइन if((Close(1)-Open(1)>AvgBody(1)) && // (लंबा सफेद) (Open(2)-Close(2)>AvgBody(1)) && // (लंबा काला) (Close(1)>Close(2)) && // (Close(1)<Open(2)) && // (पिछले बॉडी के भीतर क्लोज) (MidOpenClose(2)<CloseAvg(2)) && // (डाउनट्रेंड) (Open(1)<Low(2))) // (पिछले लो से नीचे ओपन) return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) मेथड का उपयोग "पियर्सिंग लाइन" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।
2. CCI इंडिकेटर द्वारा पुष्टि किए गए ट्रेड सिग्नल्स
लॉन्ग या शॉर्ट पोजिशन खोलने के लिए ट्रेडिंग सिग्नल्स को CCI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। CCI का मान महत्वपूर्ण स्तरों (-50 लॉन्ग पोजिशन के लिए और 50 शॉर्ट पोजिशन के लिए) से अधिक/कम होना चाहिए।
खुले हुए पोजिशन का क्लोज CCI के मानों पर निर्भर करता है। यह 2 मामलों में किया जा सकता है:
- यदि CCI लाइन ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 80 और शॉर्ट पोजिशन के लिए -80) को छू लिया है।
- यदि रिवर्स सिग्नल की पुष्टि नहीं होती (जब CCI निम्नलिखित स्तरों को प्राप्त करता है: -80 लॉन्ग पोजिशन के लिए और 80 शॉर्ट पोजिशन के लिए)।

Fig. 3. "डार्क क्लाउड कवर" पैटर्न, CCI इंडिकेटर द्वारा पुष्टि की गई
- int CDC_PL_CCI::LongCondition() - लॉन्ग पोजिशन खोलने की स्थितियों की जांच करता है (80 लौटाता है) और शॉर्ट पोजिशन को क्लोज करता है (40 लौटाता है);
- int CDC_PL_CCI::ShortCondition() - शॉर्ट पोजिशन खोलने की स्थितियों की जांच करता है (80 लौटाता है) और लॉन्ग पोजिशन को क्लोज करता है (40 लौटाता है).
2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन क्लोज करना
"पियर्सिंग लाइन" पैटर्न की पुष्टि CCI इंडिकेटर द्वारा की जानी चाहिए: CCI(1)<-50 (अंतिम पूर्ण बार का CCI मान -50 से कम होना चाहिए)।
यदि CCI इंडिकेटर ने महत्वपूर्ण स्तर -80 को ऊपर की ओर पार किया है या महत्वपूर्ण स्तर 80 को नीचे की ओर पार किया है, तो शॉर्ट पोजिशन को क्लोज किया जाना चाहिए।
//+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की स्थितियों की जांच करता है | //| 1) मार्केट में प्रवेश (लॉन्ग पोजिशन खोलें, परिणाम=80) | //| 2) मार्केट से निकासी (शॉर्ट पोजिशन क्लोज करें, परिणाम=40) | //+------------------------------------------------------------------+ int CDC_PL_CCI::LongCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड स्थिति की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड स्थिति की जांच करता है int idx =StartIndex(); //--- लॉन्ग पोजिशन खोलने की स्थितियों की जांच //--- पियर्सिंग लाइन पैटर्न और CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (CCI(1)<-50)) result=80; //--- शॉर्ट पोजिशन को क्लोज करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (डाउनवर्ड -80, डाउनवर्ड -80) का सिग्नल लाइन क्रॉसओवर if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- परिणाम लौटाएं return(result); }
2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन क्लोज करना
"डार्क क्लाउड कवर" पैटर्न की पुष्टि CCI इंडिकेटर द्वारा की जानी चाहिए: CCI(1)>50 (अंतिम पूर्ण बार का CCI मान 50 से अधिक होना चाहिए)।
यदि CCI इंडिकेटर ने -80 या 80 स्तरों को नीचे की ओर पार किया है, तो लॉन्ग पोजिशन को क्लोज किया जाना चाहिए।
//+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की स्थितियों की जांच करता है | //| 1) मार्केट में प्रवेश (शॉर्ट पोजिशन खोलें, परिणाम=80) | //| 2) मार्केट से निकासी (लॉन्ग पोजिशन क्लोज करें, परिणाम=40) | //+------------------------------------------------------------------+ int CDC_PL_CCI::ShortCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड स्थिति की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड स्थिति की जांच करता है int idx =StartIndex(); //--- शॉर्ट पोजिशन खोलने की स्थितियों की जांच //--- डार्क क्लाउड कवर पैटर्न और CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (CCI(1)>50)) result=80; //--- लॉन्ग पोजिशन को क्लोज करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (डाउनवर्ड -80, डाउनवर्ड 80) का सिग्नल लाइन क्रॉसओवर if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- परिणाम लौटाएं return(result); }
2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना
CDC_PL_CCI क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसे उपयोग करने के लिए, acdc_pl_cci.mqh फ़ाइल डाउनलोड करना आवश्यक है (संलग्नकों में देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजें। उसी तरह candlepatterns.mqh फ़ाइल के साथ भी करना चाहिए। आप इसे MQL5 विजार्ड में MetaEditor के पुनरारंभ के बाद उपयोग कर सकते हैं।
एक एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें:

Fig. 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना
आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें:

Fig. 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएं
इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल्स के मॉड्यूल का चयन करना है।

Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल गुण
हमारे मामले में हम केवल एक ट्रेड सिग्नल्स मॉड्यूल का उपयोग करते हैं।
"डार्क क्लाउड कवर/पियर्सिंग लाइन के आधार पर CCI द्वारा पुष्टि किए गए सिग्नल्स" ट्रेडिंग सिग्नल्स का मॉड्यूल जोड़ते हुए:

Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल गुण
व्यापार सिग्नल्स का मॉड्यूल जोड़ा गया:

Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल गुण
आप किसी भी ट्रेलिंग विशेषताओं का चयन कर सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे:

Fig. 9. एक्सपर्ट एडवाइजर की ट्रेलिंग विशेषताएँ
मनी मैनेजमेंट विशेषताओं के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे:

Fig. 10. एक्सपर्ट एडवाइजर की मनी मैनेजमेंट विशेषताएँ
"फिनिश" बटन दबाकर, हमें जनरेट किए गए एक्सपर्ट एडवाइजर का कोड प्राप्त होगा, जो Expert_ADC_PL_CCI.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा।
जनरेट किए गए एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर:
//--- मुख्य सिग्नल के लिए इनपुट input int Signal_ThresholdOpen =10; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int Signal_ThresholdClose =10; // क्लोज करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double Signal_PriceLevel =0.0; // डील निष्पादित करने के लिए प्राइस लेवल input double Signal_StopLevel =50.0; // स्टॉप लॉस लेवल (पॉइंट्स में) input double Signal_TakeLevel =50.0 // टेक प्रॉफिट लेवल (पॉइंट्स में)
इसे बदलकर होना चाहिए:
//--- मुख्य सिग्नल के लिए इनपुट input int Signal_ThresholdOpen =40; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int Signal_ThresholdClose =20; // क्लोज करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double Signal_PriceLevel =0.0; // डील निष्पादित करने के लिए प्राइस लेवल input double Signal_StopLevel =0.0; // स्टॉप लॉस लेवल (पॉइंट्स में) input double Signal_TakeLevel =0.0 // टेक प्रॉफिट लेवल (पॉइंट्स में)
Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको ओपन और क्लोज करने के लिए थ्रेशोल्ड लेवल निर्दिष्ट करने की अनुमति देते हैं।
ट्रेड सिग्नल्स क्लास के LongCondition() और ShortCondition() मेथड्स के कोड में हमने ओपन और क्लोज करने के लिए थ्रेशोल्ड के फिक्स्ड मान निर्दिष्ट किए हैं:
- ओपन पोजिशन: 80;
- क्लोज पोजिशन: 40.
MQL5 विजार्ड द्वारा जनरेट किया गया एक्सपर्ट एडवाइजर ट्रेड सिग्नल्स के मॉड्यूल से "वोट" का उपयोग करके पोजिशन खोलता और क्लोज करता है। मुख्य मॉड्यूल का वोट (कंटेनर के रूप में, इसमें सभी जोड़े गए मॉड्यूल शामिल होते हैं) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं।
मुख्य मॉड्यूल के वोट का परिणाम भी "वोट" के औसत में उपयोग किया जाता है। हमारे मामले में, हमारे पास है: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल्स का मॉड्यूल, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस तथ्य के कारण ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए।
Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट होते हैं, इसका मतलब है कि पोजिशन केवल तब क्लोज की जाएगी जब क्लोजिंग की स्थितियाँ सही हों।
2.4. इतिहास बैकटेस्टिंग परिणाम
आइए एक्सपर्ट एडवाइजर का बैकटेस्टिंग ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16) पर विचार करें।
एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट के साथ ट्रेडिंग, 0.1) का उपयोग किया, ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं).

Fig. 11. "डार्क क्लाउड कवर/पियर्सिंग लाइन + CCI" के आधार पर एक्सपर्ट एडवाइजर के परीक्षण परिणाम
बेस्ट सेट के इनपुट पैरामीटर को स्ट्रेटेजी टेस्टर का उपयोग करके पाया जा सकता है।
MQL5 विजार्ड द्वारा बनाए गए एक्सपर्ट एडवाइजर का कोड expert_adc_pl_cci.mq5 में संलग्न है।
संबंधित पोस्ट
- MQL5 विजार्ड: डार्क क्लाउड कवर/पीयरसिंग लाइन और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विज़ार्ड: RSI के साथ डार्क क्लाउड कवर/पीयर्सिंग लाइन ट्रेड सिग्नल्स
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: बुलिश और बेयरिश मीटिंग लाइन्स + RSI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: बुलिश/बेयरिश मीटिंग लाइन्स पर आधारित ट्रेड सिग्नल्स + CCI