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

Fig. 1. "Bullish Engulfing" कैंडलस्टिक पैटर्न
"Bullish Engulfing" पैटर्न की पहचान CheckPatternBullishEngulfing() मेथड में की जाती है:
//+------------------------------------------------------------------+ //| "Bullish Engulfing" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- Bullish Engulfing if((Open(2)>Close(2)) && // पिछले कैंडल का मूल्य गिर रहा है (Close(1)-Open(1)>AvgBody(1)) && // bullish कैंडल का मूल्य औसत से अधिक है (Close(1)>Open(2)) && // bullish कैंडल का बंद मूल्य bearish कैंडल के खुलने से अधिक है (MidOpenClose(2)<CloseAvg(2)) && // डाउनट्रेंड (Open(1)<Close(2))) // bullish कैंडल का खुलने का मूल्य bearish कैंडल के बंद से कम है return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) मेथड का उपयोग "Bullish Engulfing" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है।
1.2. Bearish Engulfing
"Bearish Engulfing" रिवर्सल पैटर्न तब बनता है जब एक अपट्रेंड में एक छोटा सफेद कैंडल एक बड़े काले कैंडल द्वारा ढक लिया जाता है।

Fig. 2. "Bearish Engulfing" कैंडलस्टिक पैटर्न
"Bearish Engulfing" पैटर्न की पहचान CheckPatternBearishEngulfing() मेथड में की जाती है:
//+------------------------------------------------------------------+ //| "Bearish Engulfing" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- Bearish Engulfing if((Open(2)<Close(2)) && // पिछले कैंडल का मूल्य बढ़ रहा है (Open(1)-Close(1)>AvgBody(1)) && // bearish कैंडल का मूल्य औसत से अधिक है (Close(1)<Open(2)) && // bearish कैंडल का बंद मूल्य bullish कैंडल के खुलने से कम है (MidOpenClose(2)>CloseAvg(2)) && // अपट्रेंड (Open(1)>Close(2))) // Open price of the bearish candle is higher than close price of the bullish candle return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) मेथड का उपयोग "Bearish Engulfing" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है।
2. MFI संकेतक द्वारा पुष्टि किए गए ट्रेड सिग्नल
ट्रेडिंग सिग्नल को लॉन्ग या शॉर्ट पोजीशन खोलने के लिए MFI संकेतक द्वारा पुष्टि की जानी चाहिए। MFI संकेतक का मान 40 से कम (लॉन्ग पोजीशन के लिए) या 60 से अधिक (शॉर्ट पोजीशन के लिए) होना चाहिए।
खुले हुए पोजीशन को MFI संकेतक के मानों पर निर्भर करते हुए बंद किया जाएगा। इसे 2 मामलों में किया जा सकता है:
- यदि MFI विपरीत महत्वपूर्ण स्तर (70 लॉन्ग पोजीशन के लिए और 30 शॉर्ट पोजीशन के लिए) तक पहुँच गया है
- यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब MFI संकेतक निम्नलिखित स्तरों तक पहुँचता है: 30 लॉन्ग पोजीशन के लिए और 70 शॉर्ट पोजीशन के लिए)

Fig. 3. "Bullish Engulfing" पैटर्न, MFI संकेतक द्वारा पुष्टि की गई
- int CBE_BE_MFI::LongCondition() - लॉन्ग पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोजीशन को बंद करने के लिए (40 लौटाता है);
- int CBE_BE_MFI::ShortCondition() - शॉर्ट पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और लॉन्ग पोजीशन को बंद करने के लिए (40 लौटाता है).
2.1. लॉन्ग पोजीशन खोलें/शॉर्ट पोजीशन बंद करें
"Bullish Engulfing" पैटर्न की पुष्टि MFI संकेतक द्वारा की जानी चाहिए: MFi(1)<40 (पिछले पूर्ण बार का MFI संकेतक का मान 40 से कम होना चाहिए).
शॉर्ट पोजीशन को बंद करना चाहिए यदि MFI संकेतक महत्वपूर्ण स्तरों (70 या 30) को पार कर जाता है।
//+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है | //| 1) मार्केट में प्रवेश (लॉन्ग पोजीशन खोलें, परिणाम=80) | //| 2) मार्केट से निकासी (शॉर्ट पोजीशन बंद करें, परिणाम=40) | //+------------------------------------------------------------------+ int CBE_BE_MFI::LongCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइज़र कार्य मोड निर्धारित करने के लिए किया जा सकता है int idx = StartIndex(); //--- लॉन्ग पोजीशन खोलने की शर्तों की जांच //--- Bullish Engulfing पैटर्न और MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (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. शॉर्ट पोजीशन खोलें/लॉन्ग पोजीशन बंद करें
"Bearish Engulfing" पैटर्न की पुष्टि MFI संकेतक द्वारा की जानी चाहिए: MFI(1)>60 (पिछले पूर्ण बार का MFI संकेतक का मान 60 से अधिक होना चाहिए).
लॉन्ग पोजीशन को बंद करना चाहिए यदि MFI संकेतक महत्वपूर्ण स्तरों (70 या 30) को पार कर जाता है।
//+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है | //| 1) मार्केट में प्रवेश (शॉर्ट पोजीशन खोलें, परिणाम=80) | //| 2) मार्केट से निकासी (लॉन्ग पोजीशन बंद करें, परिणाम=40) | //+------------------------------------------------------------------+ int CBE_BE_MFI::ShortCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइज़र कार्य मोड निर्धारित करने के लिए किया जा सकता है int idx = StartIndex(); //--- शॉर्ट पोजीशन खोलने की शर्तों की जांच //--- Bearish Engulfing पैटर्न और MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (MFI(1)>60)) result=80; //--- लॉन्ग पोजीशन बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवर्सोल्ड स्तरों (30, 70) के बीच सिग्नल लाइन क्रॉसओवर की जांच if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- परिणाम लौटाएँ return(result); }
2.3. MQL5 विज़ार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना
CBE_BE_MFI क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे उपयोग करने के लिए, आपको abe_be_mfi.mqh फ़ाइल डाउनलोड करनी होगी (संलग्नक देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। इसी प्रकार, acandlepatterns.mqh फ़ाइल के साथ भी करें। आप इसे MQL5 विज़ार्ड में MetaEditor को रिस्टार्ट करने के बाद उपयोग कर सकते हैं।
एक एक्सपर्ट एडवाइजर बनाने के लिए, MQL5 विज़ार्ड चलाएँ:

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

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

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

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

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

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

Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण
"फिनिश" बटन दबाकर, हमें उत्पन्न एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_ABE_BE_MFI.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, PeriodMFI=37, MA_period=5).
एक्सपर्ट एडवाइजर बनाने में हमने निश्चित मात्रा का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया).

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