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

Fig. 1. 'बुलिश हरामी' कैंडलस्टिक पैटर्न
"बुलिश हरामी" पैटर्न की पहचान CheckPatternBullishHarami() मेथड में की गई है, जो CCandlePattern क्लास का हिस्सा है:
//+------------------------------------------------------------------+ //| Checks formation of "बुलिश हरामी" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami() { //--- Bullish Harami if((Close(1)>Open(1)) && // the last completed bar is bullish (white day) ((Open(2)-Close(2))>AvgBody(1)) && // the previous candle is bearish, its body is greater than average (long black) ((Close(1)<Open(2)) && // close price of the bullish candle is lower than open price of the bearish candle (Open(1)>Close(2))) && // open price of the bullish candle is higher than close price of the bearish candle (MidPoint(2)<CloseAvg(2))) // down trend return(true); //--- return(false); }
"CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)" मेथड का उपयोग "बुलिश हरामी" कैंडलस्टिक पैटर्न की फॉर्मेशन की जांच करने के लिए किया जाता है।
1.2. बियरिश हरामी
बियरिश हरामी रिवर्सल पैटर्न उस अपवर्ड ट्रेंड में बनता है जब एक बड़ा कैंडलस्टिक छोटे कैंडलस्टिक के बाद आता है, जिसका शरीर बड़े शरीर की वर्टिकल रेंज के भीतर स्थित होता है। यह पैटर्न संकेत करता है कि बढ़ता हुआ ट्रेंड (अपट्रेंड) बदल सकता है, यह बताता है कि यह शॉर्ट पोजीशन में प्रवेश करने का अच्छा समय है। दूसरा कैंडलस्टिक एक गैप डाउन के साथ खुलता है।
दूसरे (काले) कैंडलस्टिक का छोटा होना, रिवर्सल की संभावना को अधिक करता है।

Fig. 2. 'बियरिश हरामी' कैंडलस्टिक पैटर्न
"बियरिश हरामी" पैटर्न की पहचान CheckPatternBearishHarami() मेथड में की गई है, जो CCandlePattern क्लास का हिस्सा है:
//+------------------------------------------------------------------+ //| Checks formation of "बियरिश हरामी" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami() { //--- Bearish Harami if((Close(1)<Open(1)) && // last completed bar is bearish (black day) ((Close(2)-Open(2))>AvgBody(1)) && // the previous candle is bullish, its body is greater than average (long white) ((Close(1)>Open(2)) && // close price of the bearish candle is higher than open price of the bullish candle (Open(1)<Close(2))) && // open price of the bearish candle is lower than close price of the bullish candle (MidPoint(2)>CloseAvg(2))) // up trend return(true); //--- return(false); }
"CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)" मेथड का उपयोग "बियरिश हरामी" कैंडलस्टिक पैटर्न की फॉर्मेशन की जांच करने के लिए किया जाता है।
2. स्टोकास्टिक इंडिकेटर द्वारा पुष्टि किए गए ट्रेड सिग्नल्स
लंबी या छोटी स्थिति खोलने के लिए ट्रेड सिग्नल्स को स्टोकास्टिक ऑस्सीलेटर द्वारा पुष्टि की जानी चाहिए। %D लाइन को संबंधित क्रिटिकल लेवल (30 या 70) से अधिक/कम होना चाहिए।
खुली स्थिति का समापन %D इंडिकेटर के मानों पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है:
- यदि %D लाइन विपरीत क्रिटिकल लेवल (लंबी स्थिति के लिए 80 और छोटी स्थिति के लिए 20) तक पहुंच गई है।
- यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब %D लाइन निम्नलिखित स्तरों तक पहुंचती है: लंबी स्थिति के लिए 20 और छोटी स्थिति के लिए 80)।

Figure 3. 'बियरिश हरामी' कैंडलस्टिक पैटर्न, स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की गई
मार्केट में प्रवेश और निकासी के लिए ट्रेड कंडीशन्स की जांच दो मेथड्स में की गई है:
- int CBH_BH_Stoch::LongCondition() - लंबी स्थिति खोलने के लिए कंडीशन्स की जांच करता है (80 लौटाता है) और छोटी स्थिति को बंद करता है (40 लौटाता है);
- int CBH_BH_Stoch::ShortCondition() - छोटी स्थिति खोलने के लिए कंडीशन्स की जांच करता है (80 लौटाता है) और लंबी स्थिति को बंद करता है (40 लौटाता है).
2.1. लंबी स्थिति खोलें/छोटी स्थिति बंद करें
"बुलिश हरामी" पैटर्न की फॉर्मेशन को स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की जानी चाहिए: StochSignal(1)<30 (स्टोकास्टिक इंडिकेटर की अंतिम पूर्ण बार की सिग्नल लाइन का मान 30 से कम होना चाहिए)।
छोटी स्थिति को बंद किया जाना चाहिए यदि स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 20 या 80 स्तरों को ऊपर की ओर पार कर गई है।
//+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market | //| 1) Market entry (open long position, result=80) | //| 2) Market exit (close short position, result=40) | //+------------------------------------------------------------------+ int CBH_BH_Stoch::LongCondition() { int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade condition only at news bars int idx =StartIndex(); //--- checking of conditions to open long position //--- formation of Bullish Harami pattern and signal line<30 if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30)) result=80; //--- checking of conditions to close short position //--- signal line crossover of overbought/oversold levels (downward 20, upward 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- return result return(result); }
2.2. छोटी स्थिति खोलें/लंबी स्थिति बंद करें
"बियरिश हरामी" पैटर्न की फॉर्मेशन को स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की जानी चाहिए: StochSignal(1)>70 (स्टोकास्टिक इंडिकेटर की अंतिम पूर्ण बार की सिग्नल लाइन का मान 70 से अधिक होना चाहिए)।
लंबी स्थिति को बंद किया जाना चाहिए यदि स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 80 या 20 स्तरों को नीचे की ओर पार कर गई है।
//+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market | //| 1) Market entry (open short position, result=80) | //| 2) Market exit (close long position, result=40) | //+------------------------------------------------------------------+ int CBH_BH_Stoch::ShortCondition() { int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade condition only at news bars int idx =StartIndex(); //--- checking of conditions to open short position //--- formation of Bearish Harami pattern and signal line>70 if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70)) result=80; //--- checking of conditions to close long position //--- signal line crossover of overbought/oversold levels (downward 80, upward 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- return result return(result); }
2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना
CBH_BH_Stoch क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसे उपयोग करने के लिए, आपको acbh_bh_stoch.mqh फ़ाइल डाउनलोड करनी होगी (संलग्नक देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। आपको candlepatterns.mqh फ़ाइल के साथ भी यही करना होगा। आप इसे MQL5 विजार्ड में MetaEditor को पुनः आरंभ करने के बाद उपयोग कर सकते हैं।
एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें:

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

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

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

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

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

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

Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण
"फिनिश" बटन दबाकर, हमें उत्पन्न किए गए एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_ABH_BH_Stoch.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा।
उत्पन्न एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर:
//--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =10 // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0 // Price level to execute a deal input double Signal_StopLevel =50.0 // Stop Loss level (in points) input double Signal_TakeLevel =50.0 // Take Profit level (in points)
इसे प्रतिस्थापित करना होगा:
//--- inputs for main signal input int Signal_ThresholdOpen =40; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =20 // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0 // Price level to execute a deal input double Signal_StopLevel =0.0 // Stop Loss level (in points) input double Signal_TakeLevel =0.0 // Take Profit level (in points)
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.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5)।
एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया (ट्रेलिंग का उपयोग नहीं).

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