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

चित्र 1. "बुलिश मीटिंग लाइन्स" पैटर्न
"बुलिश मीटिंग लाइन्स" पैटर्न की पहचान CheckPatternBullishMeetingLines() मेथड में की जाती है।
//+--------------------------------------------------------------------+ //| "बुलिश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न की पहचान //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- बुलिश मीटिंग लाइन्स if((Open(2)-Close(2)>AvgBody(1)) && // लंबा काला ((Close(1)-Open(1))>AvgBody(1)) && // लंबा सफेद (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // डोज़ी क्लोज return(true); //--- return(false); }
1.2. बियरेश मीटिंग लाइन्स
इस पैटर्न में भी दो कैंडलस्टिक होती हैं (बुलिश और बियरेश) जिनकी क्लोज प्राइस समान होती है।
"बियरेश मीटिंग लाइन्स" पैटर्न एक अपवर्ड ट्रेंड के रिवर्सल को दर्शाता है।

चित्र 2. "बियरेश मीटिंग लाइन्स" पैटर्न
"बियरेश मीटिंग लाइन्स" पैटर्न की पहचान CheckPatternBearishMeetingLines() मेथड में की जाती है।
//+--------------------------------------------------------------------+ //| "बियरेश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न की पहचान //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- बियरेश मीटिंग लाइन्स if((Close(2)-Open(2)>AvgBody(1)) && // लंबा सफेद ((Open(1)-Close(1)>AvgBody(1)) && // लंबा काला (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // डोज़ी क्लोज return(true); //--- return(false); }
2. ट्रेड सिग्नल्स, जो स्टोकास्टिक इंडिकेटर द्वारा कन्फर्म किए जाते हैं
ट्रेड सिग्नल्स को लंबी या शॉर्ट पोजीशन खोलने के लिए स्टोकास्टिक ऑस्सीलेटर द्वारा कन्फर्म किया जाना चाहिए। सिग्नल %D लाइन को निर्धारित क्रिटिकल लेवल (30 या 70) से अधिक/कम होना चाहिए।
खुली पोजीशन को बंद करने के लिए %D इंडिकेटर के मानों पर निर्भर करता है। यह 2 मामलों में किया जा सकता है:
- यदि %D लाइन विपरीत क्रिटिकल लेवल (लंबी पोजीशन के लिए 80 और शॉर्ट पोजीशन के लिए 20) तक पहुँच गई है।
- यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब %D लाइन निम्नलिखित स्तरों तक पहुँचती है: लंबी पोजीशन के लिए 20 और शॉर्ट पोजीशन के लिए 80)।

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

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

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

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

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

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

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

चित्र 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन प्रॉपर्टीज
"फिनिश" बटन को दबाकर, हमें जनरेट किए गए एक्सपर्ट एडवाइजर का कोड प्राप्त होगा, जो Expert_AML_Stoch.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 विजार्ड द्वारा जनरेट किए गए एक्सपर्ट एडवाइजर पोजीशंस को ट्रेड सिग्नल्स के मॉड्यूल से "वोट्स" का उपयोग करके खोलता और बंद करता है। मुख्य मॉड्यूल का वोट परिणाम भी "वोट्स" औसत में उपयोग किया जाता है।
Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर्स का मान 0 पर सेट किया गया है, इसका मतलब है कि पोजीशंस को केवल तब बंद किया जाएगा जब बंद करने की कंडीशंस सत्य हों।
2.4. इतिहास बैकटेस्टिंग परिणाम
आइए एक्सपर्ट एडवाइजर के ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 2005.01.01-2010.03.16, PeriodK=6, PeriodD=3, PeriodSlow=36, MA_period=3) पर बैकटेस्टिंग पर विचार करें।
एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट ट्रेडिंग, 0.1) का उपयोग किया है, ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया है (ट्रेलिंग का उपयोग नहीं किया गया).

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