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

Fig. 1. "Dark Cloud Cover" कैंडलस्टिक पैटर्न
"Dark Cloud Cover" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में की जाती है।
//+------------------------------------------------------------------+ //| "Dark Cloud Cover" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- Dark Cloud Cover 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); }
"Dark Cloud Cover" कैंडलस्टिक पैटर्न की पहचान के लिए CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) मेथड का उपयोग किया जाता है।
1.2. Piercing Line
दूसरे दिन का गैप डाउन डाउनट्रेंड को बढ़ाता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन की बॉडी के मध्य बिंदु से ऊपर होता है। इससे यह संकेत मिलता है कि एक बॉटम बन सकता है। कैंडलस्टिक चार्ट्स का प्रयोग करने पर यह प्राइस एक्शन अधिक स्पष्ट होता है।

Fig. 2. "Piercing Line" कैंडलस्टिक पैटर्न
"Piercing Line" पैटर्न की पहचान CheckPatternPiercingLine() मेथड में की जाती है।
//+------------------------------------------------------------------+ //| "Piercing Line" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line 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); }
"Piercing Line" कैंडलस्टिक पैटर्न की पहचान के लिए CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) मेथड का उपयोग किया जाता है।
2. MFI इंडिकेटर द्वारा कन्फर्म किए गए ट्रेड सिग्नल
लॉन्ग या शॉर्ट पोजिशन खोलने के लिए ट्रेड सिग्नल्स को MFI इंडिकेटर द्वारा कन्फर्म किया जाना चाहिए। MFI इंडिकेटर का मान 40 से कम (लॉन्ग पोजिशन के लिए) या 60 से अधिक (शॉर्ट पोजिशन के लिए) होना चाहिए।
खुली स्थिति का क्लोज MFI इंडिकेटर के मान पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है:
- MFI ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 70 और शॉर्ट पोजिशन के लिए 30) को प्राप्त किया है।
- यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब MFI इंडिकेटर निम्नलिखित स्तरों पर पहुँचता है: लॉन्ग पोजिशन के लिए 30 और शॉर्ट पोजिशन के लिए 70)

Fig. 3. "Dark Cloud Cover" पैटर्न, MFI इंडिकेटर द्वारा कन्फर्म किया गया
int CDC_PL_MFI::LongCondition()- लॉन्ग पोजिशन खोलने की शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोजिशन को क्लोज करता है (40 लौटाता है);int CDC_PL_MFI::ShortCondition()- शॉर्ट पोजिशन खोलने की शर्तों की जांच करता है (80 लौटाता है) और लॉन्ग पोजिशन को क्लोज करता है (40)।
2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन को बंद करना
"Morning Star" पैटर्न की पहचान MFI इंडिकेटर द्वारा की जानी चाहिए: MFi(1)<40 (अंतिम पूर्ण बार का MFI इंडिकेटर का मान 40 से कम होना चाहिए)।
शॉर्ट पोजिशन को तब बंद किया जाना चाहिए जब MFI इंडिकेटर महत्वपूर्ण स्तरों (70 या 30) को पार कर गया है।
//+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है | //| 1) मार्केट प्रवेश (लॉन्ग पोजिशन खोलना, परिणाम=80) | //| 2) मार्केट निकासी (शॉर्ट पोजिशन बंद करना, परिणाम=40) | //+------------------------------------------------------------------+ int CDC_PL_MFI::LongCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर की कार्य विधि निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की शर्तों की जांच करता है int idx =StartIndex(); //--- लॉन्ग पोजिशन खोलने की शर्तों की जांच //--- Piercing Line पैटर्न और MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (MFI(1)<40)) result=80; //--- शॉर्ट पोजिशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (उपर 30, उपर 70) की सिग्नललाइन क्रॉसओवर if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- परिणाम लौटाएँ return(result); }
2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन को बंद करना
"Dark Cloud Cover" पैटर्न की पहचान MFI इंडिकेटर द्वारा की जानी चाहिए: MFI(1)>60 (अंतिम पूर्ण बार का MFI इंडिकेटर का मान 60 से अधिक होना चाहिए)।
लॉन्ग पोजिशन को तब बंद किया जाना चाहिए जब MFI इंडिकेटर महत्वपूर्ण स्तरों (70 या 30) को पार कर गया है।
//+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है | //| 1) मार्केट प्रवेश (शॉर्ट पोजिशन खोलना, परिणाम=80) | //| 2) मार्केट निकासी (लॉन्ग पोजिशन बंद करना, परिणाम=40) | //+------------------------------------------------------------------+ int CDC_PL_MFI::ShortCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर की कार्य विधि निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की शर्तों की जांच करता है int idx =StartIndex(); //--- शॉर्ट पोजिशन खोलने की शर्तों की जांच //--- Dark Cloud Cover पैटर्न और MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (MFI(1)>60)) result=80; //--- लॉन्ग पोजिशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (उपर 70, नीचे 30) की सिग्नललाइन क्रॉसओवर if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- परिणाम लौटाएँ return(result); }
2.3. MQL5 विजार्ड का उपयोग करके Expert Advisor बनाना
CDC_PL_MFI क्लास स्टैण्डर्ड लाइब्रेरी क्लासेज में शामिल नहीं है, इसका उपयोग करने के लिए, adc_pl_mfi.mqh फाइल डाउनलोड करें और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सेव करें। वही acandlepatterns.mqh फाइल के साथ भी करें। आप इसे MQL5 विजार्ड में MetaEditor के रिस्टार्ट के बाद उपयोग कर सकते हैं।
Expert Advisor बनाने के लिए MQL5 विजार्ड लॉन्च करें:

Fig. 4. MQL5 विजार्ड का उपयोग करके Expert Advisor बनाना
Expert Advisor का नाम निर्धारित करें:

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

Fig. 6. Expert Advisor की सिग्नल विशेषताएँ
हमारे मामले में हम केवल एक ट्रेड सिग्नल मॉड्यूल का उपयोग करते हैं।
"Dark Cloud Cover/Piercing Line द्वारा कन्फर्म किए गए सिग्नल" ट्रेड सिग्नल मॉड्यूल जोड़ना:

Fig. 7. Expert Advisor की सिग्नल विशेषताएँ
ट्रेड सिग्नल मॉड्यूल जोड़ा गया:

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

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

Fig. 10. Expert Advisor की पैसे प्रबंधन विशेषताएँ
"फिनिश" बटन दबाने पर, हमें जनरेटेड Expert Advisor का कोड मिलेगा, जो Expert_ADC_PL_MFI.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सेव होगा।
जनरेटेड Expert Advisor के डिफ़ॉल्ट इनपुट पैरामीटर:
//--- मुख्य सिग्नल के लिए इनपुट 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 विजार्ड द्वारा जनरेटेड Expert Advisor "वोट्स" का उपयोग करके पोजिशन खोलता और बंद करता है। मुख्य मॉड्यूल का वोट (कंटेनर के रूप में, इसमें सभी जोड़े गए मॉड्यूल शामिल हैं) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं।
मुख्य मॉड्यूल के वोट के परिणामों का भी "वोट्स" की औसत में उपयोग होता है। हमारे मामले में, मुख्य मॉड्यूल + 1 ट्रेड सिग्नल मॉड्यूल है, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस कारण थ्रेशोल्डOpen और थ्रेशोल्डClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट करना चाहिए।
Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर का मान 0 पर सेट किया गया है, इसका अर्थ है कि पोजिशन केवल तब बंद की जाएगी जब क्लोजिंग शर्तें सही हों।
2.4. इतिहास बैकटेस्टिंग परिणाम
Expert Advisor के बैकटेस्टिंग पर विचार करें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11)।
Expert Advisor बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया).

Fig. 11. "Dark Cloud Cover/Piercing Line + MFI" पर आधारित Expert Advisor के परीक्षण परिणाम
इनपुट पैरामीटर का सबसे अच्छा सेट स्ट्रेटजी टेस्टर के माध्यम से पाया जा सकता है।
MQL5 विजार्ड द्वारा बनाए गए Expert Advisor का कोड expert_adc_pl_mfi.mq5 में संलग्न किया गया है।
संबंधित पोस्ट
- MQL5 विजार्ड: मॉर्निंग/इविनिंग स्टार और RSI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विज़ार्ड: हैमर/हैंगिंग मैन पैटर्न पर आधारित ट्रेड सिग्नल्स - MetaTrader 5 के लिए
- MQL5 विजार्ड - सुबह/शाम के तारे और MFI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: सुबह/शाम के तारे के आधार पर ट्रेड सिग्नल + CCI के साथ एक्सपर्ट एडवाइजर