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

Fig. 1. "बुलिश इंगुल्फिंग" कैंडलस्टिक पैटर्न
"बुलिश इंगुल्फिंग" पैटर्न की पहचान CheckPatternBullishEngulfing() मेथड में की गई है।
//+------------------------------------------------------------------+ //| "बुलिश इंगुल्फिंग" पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- बुलिश इंगुल्फिंग if((Open(2)>Close(2)) && // पिछले कैंडल की स्थिति बियरिश है (Close(1)-Open(1)>AvgBody(1)) && // बुलिश कैंडल की शरीर का आकार औसत से ज्यादा है (Close(1)>Open(2)) && // बुलिश कैंडल की बंद कीमत बियरिश कैंडल की खोल कीमत से ज्यादा है (MidOpenClose(2)<CloseAvg(2)) && // डाउनट्रेंड (Open(1)<Close(2))) // बुलिश कैंडल की खोल कीमत बियरिश कैंडल की बंद कीमत से कम है return(true); //--- return(false); }
"बुलिश इंगुल्फिंग" पैटर्न की पहचान CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) मेथड का उपयोग करके की जाती है।
1.2. बेयरिश इंगुल्फिंग
"बेयरिश इंगुल्फिंग" रिवर्सल पैटर्न तब बनता है जब एक छोटी सफेद कैंडलस्टिक के बाद बड़ी काली कैंडलस्टिक आती है, जो पूरी तरह से पिछले दिन की कैंडलस्टिक को ढक लेती है। छोटी कैंडलस्टिक की छायाएँ छोटी होती हैं, जिससे बड़ी कैंडलस्टिक का शरीर पिछले दिन की कैंडलस्टिक को पूरी तरह कवर कर लेता है।

Fig. 2. "बेयरिश इंगुल्फिंग" कैंडलस्टिक पैटर्न
"बेयरिश इंगुल्फिंग" पैटर्न की पहचान CheckPatternBearishEngulfing() मेथड में की गई है।
//+------------------------------------------------------------------+ //| "बेयरिश इंगुल्फिंग" पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- बेयरिश इंगुल्फिंग if((Open(2)<Close(2)) && // पिछले कैंडल की स्थिति बुलिश है (Open(1)-Close(1)>AvgBody(1)) && // कैंडल का शरीर औसत आकार से बड़ा है (Close(1)<Open(2)) && // बेयरिश कैंडल की बंद कीमत बुलिश कैंडल की खोल कीमत से कम है (MidOpenClose(2)>CloseAvg(2)) && // अपट्रेंड (Open(1)>Close(2))) // बेयरिश कैंडल की खोल कीमत बुलिश कैंडल की बंद कीमत से ज्यादा है return(true); //--- return(false); }
"बेयरिश इंगुल्फिंग" पैटर्न की पहचान CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) मेथड का उपयोग करके की जाती है।
2. CCI संकेतों द्वारा पुष्टि की गई ट्रेड सिग्नल
लंबी या छोटी स्थिति खोलने के लिए ट्रेड सिग्नल को CCI संकेतक द्वारा पुष्टि की जानी चाहिए। CCI का मान महत्वपूर्ण स्तरों (-50 लंबी स्थिति के लिए और 50 छोटी स्थिति के लिए) से अधिक/कम होना चाहिए।
खुले हुए स्थिति का समापन CCI के मानों पर निर्भर करता है। यह दो मामलों में किया जा सकता है:
- यदि CCI लाइन विपरीत महत्वपूर्ण स्तर (लंबी स्थिति के लिए 80 और छोटी स्थिति के लिए -80) तक पहुँच गई है
- यदि उल्टा संकेत की पुष्टि नहीं होती है (जब CCI निम्नलिखित स्तरों पर पहुँचता है: -80 लंबी स्थिति के लिए और 80 छोटी स्थिति के लिए)

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

Fig. 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइज़र बनाना
चलिए एक्सपर्ट एडवाइज़र का नाम निर्धारित करते हैं:

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

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

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

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

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

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

Fig. 11. एक्सपर्ट एडवाइज़र के परीक्षण परिणाम, जो बुलिश इंगुल्फिंग/बेयरिश इंगुल्फिंग + CCI पर आधारित है
उत्कृष्टता के सर्वोत्तम सेट को प्राप्त करने के लिए आप स्टратегी टेस्टेर का उपयोग कर सकते हैं।
MQL5 विजार्ड द्वारा निर्मित एक्सपर्ट एडवाइज़र का कोड expert_abe_be_cci.mq5 में संलग्न है।
संबंधित पोस्ट
- MQL5 विजार्ड: बुलिश और बेयरिश एंगुल्फिंग पैटर्न पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: बुलिश/बेयरिश मीटिंग लाइन्स पर आधारित ट्रेड सिग्नल्स + CCI
- MQL5 विजार्ड: बुलिश हारामी/बेयरिश हारामी + CCI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: बुलिश और बेयरिश मीटिंग लाइन्स + RSI पर आधारित ट्रेड सिग्नल