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

Fig. 1. Bullish Harami candlestick pattern
"Bullish Harami" पैटर्न की पहचान CheckPatternBullishHarami() मेथड में की जाती है:
//+------------------------------------------------------------------+ //| "Bullish Harami" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami() { //--- Bullish Harami if((Close(1)>Open(1)) && // अंतिम पूर्ण बार बुलिश है (सफेद दिन) ((Open(2)-Close(2))>AvgBody(1)) && // पिछली कैंडलस्टिक बेरिश है, इसका शरीर औसत से बड़ा है (लंबी काली) ((Close(1)<Open(2)) && // बुलिश कैंडल का क्लोज़ प्राइस बेरिश कैंडल के ओपन प्राइस से कम है (Open(1)>Close(2))) && // बुलिश कैंडल का ओपन प्राइस बेरिश कैंडल के क्लोज़ प्राइस से ज्यादा है (MidPoint(2)<CloseAvg(2))) // डाउनट्रेंड return(true); //--- return(false); }
"CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)" मेथड का उपयोग "Bullish Harami" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।
1.2. Bearish Harami
Bearish Harami रिवर्सल पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक होती है, जिसका शरीर बड़ी कैंडलस्टिक के शरीर की ऊर्ध्वाधर सीमा के भीतर होता है। यह पैटर्न संकेत करता है कि बढ़ती प्रवृत्ति (अपट्रेंड) उलट सकती है, यह एक छोटी स्थिति में प्रवेश करने का अच्छा समय है। दूसरी कैंडलस्टिक एक गैप डाउन के साथ खुलती है।
जितनी छोटी दूसरी (काली) कैंडलस्टिक होगी, उलटने की संभावना उतनी ही अधिक होगी।

Fig. 2. Bearish Harami candlestick pattern
"Bearish Harami" पैटर्न की पहचान CheckPatternBearishHarami() मेथड में की जाती है:
//+------------------------------------------------------------------+ //| "Bearish Harami" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami() { //--- Bearish Harami if((Close(1)<Open(1)) && // अंतिम पूर्ण बार बेरिश है (काली दिन) ((Close(2)-Open(2))>AvgBody(1)) && // पिछली कैंडलस्टिक बुलिश है, इसका शरीर औसत से बड़ा है (लंबी सफेद) ((Close(1)>Open(2)) && // क्लोज़ प्राइस की बेरिश कैंडल बुलिश कैंडल के ओपन प्राइस से ज्यादा है (Open(1)<Close(2))) && // ओपन प्राइस की बेरिश कैंडल बुलिश कैंडल के क्लोज़ प्राइस से कम है (MidPoint(2)>CloseAvg(2))) // अपट्रेंड return(true); //--- return(false); }
"CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)" मेथड का उपयोग "Bearish Harami" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।
2. MFI संकेतक द्वारा पुष्टि किए गए ट्रेड सिग्नल्स
लंबी या छोटी स्थिति खोलने के लिए ट्रेड सिग्नल्स को MFI संकेतक द्वारा पुष्टि की जानी चाहिए। MFI संकेतक का मान 40 से कम (लंबी स्थितियों के लिए) या 60 से अधिक (छोटी स्थितियों के लिए) होना चाहिए।
खुली स्थिति का समापन MFI संकेतक के मानों पर निर्भर करता है। यह 2 मामलों में किया जा सकता है:
- यदि MFI ने विपरीत महत्वपूर्ण स्तर (70 लंबी स्थिति के लिए और 30 छोटी स्थिति के लिए) को पार कर लिया है
- यदि उल्टा सिग्नल पुष्टि नहीं हो रहा है (जब MFI संकेतक निम्नलिखित स्तरों पर पहुंचता है: 30 लंबी स्थिति के लिए और 70 छोटी स्थिति के लिए)

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

Fig. 4. Creating Expert Advisor using MQL5 Wizard
Expert Advisor का नाम निर्धारित करें:

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

Fig. 6. Signal properties of the Expert Advisor
हमारे मामले में हम केवल एक ट्रेड सिग्नल्स के मॉड्यूल का उपयोग कर रहे हैं।
"Bullish Harami/Bearish Harami द्वारा पुष्टि किए गए सिग्नल" ट्रेडिंग सिग्नल्स के मॉड्यूल को जोड़ना:

Fig. 7. Signal properties of the Expert Advisor
ट्रेड सिग्नल्स का मॉड्यूल जोड़ा गया:

Fig. 8. Signal properties of the Expert Advisor
आप किसी भी ट्रेलिंग प्रॉपर्टीज का चयन कर सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे:

Fig. 9. Trailing properties of the Expert Advisor
पैसों के प्रबंधन की प्रॉपर्टीज के संबंध में, हम "स्थिर व्यापार मात्रा के साथ व्यापार" का उपयोग करेंगे:

Fig. 10. Money management properties of the Expert Advisor
"Finish" बटन दबाकर, हम उत्पन्न Expert Advisor का कोड प्राप्त करेंगे, जो Expert_ABH_BH_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 Wizard द्वारा उत्पन्न Expert Advisor ट्रेड सिग्नल्स के मॉड्यूल से "वोट" का उपयोग करके स्थिति खोलता और बंद करता है। मुख्य मॉड्यूल का वोट भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड हमेशा 0 लौटाते हैं।
मुख्य मॉड्यूल के वोट के परिणाम "वोट्स" औसत में भी उपयोग किए जाते हैं। हमारे मामले में, हमें मुख्य मॉड्यूल + 1 ट्रेड सिग्नल्स का मॉड्यूल मिला है, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस कारण से ThresholdOpen और ThresholdClose को 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=37, MA_period=11) पर बैकटेस्टिंग पर विचार करें।
Expert Advisor बनाने में हमने स्थिर मात्रा का उपयोग किया (Trading Fixed Lot, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं).

Fig. 11. Testing results of the Expert Advisor, based on Bullish Harami /Bearish Harami + MFI
इनपुट पैरामीटर का सबसे अच्छा सेट Strategy Tester का उपयोग करके खोजा जा सकता है, जो MetaTrader 5 क्लाइंट टर्मिनल का हिस्सा है।
MQL5 Wizard द्वारा बनाए गए Expert Advisor का कोड expert_abh_bh_mfi.mq5 में संलग्न है।
संबंधित पोस्ट
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MetaTrader 4 के लिए विज़ुअल ऑर्डर प्रोसेसिंग - आपके ट्रेडिंग साथी
- MQL5 विजार्ड: मॉर्निंग/इविनिंग स्टार और RSI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: सुबह/शाम के तारे के आधार पर ट्रेड सिग्नल + CCI के साथ एक्सपर्ट एडवाइजर
- MQL5 विज़ार्ड: हैमर/हैंगिंग मैन पैटर्न पर आधारित ट्रेड सिग्नल्स - MetaTrader 5 के लिए