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

चित्र 1. "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न
"डार्क क्लाउड कवर" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में की जाती है।
//+------------------------------------------------------------------+ //| "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- डार्क क्लाउड कवर if((Close(2) - Open(2) > AvgBody(1)) && (Close(1) < Close(2) && Close(1 Open(2) && (MidOpenClose(2) > CloseAvg(1)) && (Open(1) > High(2))) { return true; } return false; }
"डार्क क्लाउड कवर" पैटर्न की पहचान के लिए CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) मेथड का उपयोग किया जाता है।
1.2. पीयर्सिंग लाइन
दूसरे दिन का गैप डाउन डाउनट्रेंड को जारी रखता है। हालाँकि, दूसरे दिन का समापन पहले दिन के शरीर के मध्य बिंदु के ऊपर होता है। यह भालुओं को बताता है कि एक बॉटम बन सकता है।

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

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

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

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

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

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

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

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

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

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