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

फिग. 1. "हैमर" कैंडलस्टिक पैटर्न
"हैमर" पैटर्न की पहचान CCandlePattern क्लास के CheckPatternHammer() मेथड में की गई है:
//+------------------------------------------------------------------+ //| "हैमर" कैंडलस्टिक पैटर्न के गठन की जांच करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHammer() { //--- हैमर if((MidPoint(1)<CloseAvg(2)) && // डाउन ट्रेंड (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // शरीर ऊपरी 1/3 में (Close(1)<Close(2)) && (Open(1)<Open(2))) // शरीर गैप return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) मेथड का उपयोग "हैमर" कैंडलस्टिक पैटर्न के गठन की जांच करने के लिए किया जाता है।
1.2. हैंगिंग मैन
"हैंगिंग मैन" एक कैंडलस्टिक है जिसमें एक छोटा शरीर और लंबी निचली विक होती है, जो ऊपर की ओर मूल्य आंदोलन के बाद बनती है। "हैंगिंग मैन" पैटर्न एक बुलिश ट्रेंड के अंत का संकेत देता है।
कैंडलस्टिक के शरीर का रंग महत्वपूर्ण नहीं है, लेकिन भालू कैंडल अधिक भालू पोटेंशियल को इंगित करता है। "हैंगिंग मैन" पैटर्न का शरीर अक्सर पिछले कैंडल के अधिकतम के पास बनता है। लंबी निचली विक और छोटी ऊपरी विक रिवर्सल पैटर्न की उच्च संभावनाओं की ओर ले जाती है।

फिग. 2. "हैंगिंग मैन" कैंडलस्टिक पैटर्न
"हैंगिंग मैन" पैटर्न की पहचान CCandlePattern क्लास के CheckPatternHangingMan() मेथड में की गई है:
//+------------------------------------------------------------------+ //| "हैंगिंग मैन" कैंडलस्टिक पैटर्न के गठन की जांच करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHangingMan() { //--- हैंगिंग मैन if((MidPoint(1)>CloseAvg(2)) && // अप ट्रेंड (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // शरीर ऊपरी 1/3 में (Close(1)>Close(2)) && (Open(1)>Open(2))) // शरीर गैप return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) मेथड का उपयोग "हैंगिंग मैन" कैंडलस्टिक पैटर्न के गठन की जांच करने के लिए किया जाता है।
2. ट्रेड सिग्नल्स, MFI इंडिकेटर द्वारा प्रमाणित
लॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेड सिग्नल्स को MFI इंडिकेटर द्वारा प्रमाणित किया जाना चाहिए। MFI इंडिकेटर का मान 40 से कम होना चाहिए (लॉन्ग पोजीशन्स के लिए) या 60 से अधिक होना चाहिए (शॉर्ट पोजीशन्स के लिए)।
खुली हुई पोजीशन का क्लोजिंग MFI इंडिकेटर के मानों पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है:
- यदि MFI ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजीशन के लिए 70 और शॉर्ट पोजीशन के लिए 30) तक पहुँच गया है
- अगर उल्टी सिग्नल की पुष्टि नहीं हुई है (जब MFI इंडिकेटर निम्नलिखित स्तरों तक पहुँचता है: 30 लॉन्ग पोजीशन के लिए और 70 शॉर्ट पोजीशन के लिए)

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

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

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

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

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

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

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

फिग. 10. एक्सपर्ट एडवाइजर की पैसे प्रबंधन प्रॉपर्टीज
"फिनिश" बटन दबाने पर, हमें उत्पन्न एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_AH_HM_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 विज़ार्ड द्वारा उत्पन्न एक्सपर्ट एडवाइजर ट्रेड सिग्नल्स के मॉड्यूल की "वोट्स" का उपयोग करते हुए पोजीशन्स खोलता और क्लोज करता है। मुख्य मॉड्यूल की वोट का परिणाम "वोट्स" औसत में भी इस्तेमाल होता है। हमारे मामले में, मुख्य मॉड्यूल + 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=47, MA_period=5) शामिल हैं।
एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया).

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