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

Fig. 1. "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न
"3 ब्लैक क्रो" पैटर्न की पहचान CCandlePattern क्लास के CheckPatternThreeBlackCrows मेथड में की जाती है।
//+------------------------------------------------------------------+ //| "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 ब्लैक क्रो if((Open(3)-Close(3)>AvgBody(1)) && // (लॉन्ग ब्लैक) (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // (लोअर मिडपॉइंट्स) (MidPoint(1)<MidPoint(2))) return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) मेथड का उपयोग "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।
1.2. 3 व्हाइट सोल्जर कैंडलस्टिक पैटर्न
यह एक bullish कैंडलस्टिक पैटर्न है, जिसका उपयोग मौजूदा डाउनट्रेंड के रिवर्सल की भविष्यवाणी करने के लिए किया जाता है। इस पैटर्न में तीन लगातार लंबे-bodied कैंडलस्टिक्स होते हैं, जो पिछले दिन से अधिक बंद होते हैं, और प्रत्येक सत्र का ओपन पिछले कैंडल के बॉडी के भीतर होता है। पैटर्न तब तक मान्य होता है जब तक दिन दो का कैंडल पहले दिन की रेंज के ऊपरी आधे हिस्से में खुलता है।

Fig. 2. "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न
यहाँ "3 व्हाइट सोल्जर" पैटर्न की पहचान करने का मेथड है:
//+------------------------------------------------------------------+ //| "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 व्हाइट सोल्जर if((Close(3)-Open(3)>AvgBody(1)) && // लॉन्ग व्हाइट (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // (MidPoint(1)>MidPoint(2))) return(true); //--- return(false); }
CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) मेथड का उपयोग "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।
2. ट्रेड सिग्नल्स, जो RSI इंडिकेटर द्वारा पुष्टि किए जाते हैं
लॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेड सिग्नल्स को RSI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। RSI का मान महत्वपूर्ण स्तरों (लॉन्ग पोजीशन के लिए 40 और शॉर्ट पोजीशन के लिए 60) से कम/ज्यादा होना चाहिए।
खुले हुए पोजीशन का क्लोजिंग RSI के मानों पर निर्भर करता है। यह 2 मामलों में किया जा सकता है:
- यदि RSI ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजीशन के लिए 70 और शॉर्ट पोजीशन के लिए 30) को पहुंच लिया है
- यदि उल्टा सिग्नल की पुष्टि नहीं होती है (जब RSI निम्नलिखित स्तरों पर पहुंचता है: लॉन्ग पोजीशन के लिए 30 और शॉर्ट पोजीशन के लिए 70)

Fig. 3. "3 ब्लैक क्रो" पैटर्न, जो स्टोकास्टिक इंडिकेटर द्वारा पुष्टि किया गया है
- int CML_RSI::LongCondition() - लंबे पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोजीशन को बंद करता है (40 लौटाता है);
- int CML_RSI::ShortCondition() - शॉर्ट पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और लंबे पोजीशन को बंद करता है (40 लौटाता है).
2.1. लंबे पोजीशन खोलना/शॉर्ट पोजीशन क्लोज करना
"3 व्हाइट सोल्जर" पैटर्न की फॉर्मेशन को RSI इंडिकेटर द्वारा पुष्टि करनी चाहिए: RSI(1)<40 (पिछले पूर्ण बार का RSI मान 40 से कम होना चाहिए).
शॉर्ट पोजीशन को बंद करना चाहिए यदि RSI इंडिकेटर ने महत्वपूर्ण स्तर 70 या 30 को ऊपर की ओर पार किया है.
//+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की शर्तों की जांच करता है | //| 1) बाजार में प्रवेश (लंबी पोजीशन खोलना, परिणाम=80) | //| 2) बाजार से निकासी (शॉर्ट पोजीशन बंद करना, परिणाम=40) | //+------------------------------------------------------------------+ int CBC_WS_RSI::LongCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड की शर्तों की जांच करता है int idx =StartIndex(); //--- लंबे पोजीशन खोलने के लिए शर्तों की जांच //--- "3 व्हाइट सोल्जर" पैटर्न की फॉर्मेशन और RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (RSI(1)<40)) result=80; //--- शॉर्ट पोजीशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (ऊपर 30, ऊपर 70) का सिग्नल लाइन क्रॉसओवर if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70))) result=40; //--- परिणाम लौटाएं return(result); }
2.2. शॉर्ट पोजीशन खोलना/लंबी पोजिशन क्लोज करना
"3 ब्लैक क्रो" पैटर्न को RSI इंडिकेटर द्वारा पुष्टि करनी चाहिए: RSI(1)>60 (पिछले पूर्ण बार का RSI मान 60 से अधिक होना चाहिए).
लॉन्ग पोजिशन को बंद करना चाहिए यदि RSI इंडिकेटर ने महत्वपूर्ण स्तर 70 या 30 को नीचे की ओर पार किया है.
//+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की शर्तों की जांच करता है | //| 1) बाजार में प्रवेश (शॉर्ट पोजीशन खोलना, परिणाम=80) | //| 2) बाजार से निकासी (लंबी पोजीशन बंद करना, परिणाम=40) | //+------------------------------------------------------------------+ int CBC_WS_RSI::ShortCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड की शर्तों की जांच करता है int idx =StartIndex(); //--- शॉर्ट पोजीशन खोलने की शर्तों की जांच //--- "3 ब्लैक क्रो" पैटर्न की फॉर्मेशन और RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60)) result=80; //--- लंबी पोजिशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (नीचे 70, नीचे 30) का सिग्नल लाइन क्रॉसओवर if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30))) result=40; //--- परिणाम लौटाएं return(result); }
2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना
CML_RSI क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसे उपयोग करने के लिए acml_rsi.mqh फ़ाइल डाउनलोड करनी होगी (आवश्यक फाइलें देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। वही प्रक्रिया candlepatterns.mqh फ़ाइल के लिए भी करनी होगी। आप इसे MQL5 विजार्ड में उपयोग कर सकते हैं, जब आप मेटा-एडिटर को रीस्टार्ट करेंगे।
एक एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड को लॉन्च करें:

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

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

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

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

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

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

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

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