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

चित्र 1. "बुलिश मीटिंग लाइन्स" पैटर्न
"बुलिश मीटिंग लाइन्स" पैटर्न की पहचान CheckPatternBullishMeetingLines() मेथड में की गई है:
//+--------------------------------------------------------------------+ //| Checks formation of "Bullish Meeting Lines" candlestick pattern | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines if((Open(2)-Close(2)>AvgBody(1)) && // long black ((Close(1)-Open(1))>AvgBody(1)) && // long white (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji close return(true); //--- return(false); }
"बुलिश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न के निर्माण की जांच CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) मेथड द्वारा की जाती है।
1.2. बेयरिश मीटिंग लाइन्स
इस पैटर्न में दो कैंडलस्टिक्स (बुलिश और बेयरिश) होते हैं जिनकी क्लोज़ प्राइसेस समान (या बहुत करीब) होती हैं। दोनों कैंडलस्टिक्स का शरीर औसत शरीर की लंबाई से बड़ा होना चाहिए।
"बेयरिश मीटिंग लाइन्स" पैटर्न एक डाउनवर्ड ट्रेंड के रिवर्सल का संकेत देता है।

चित्र 2. "बेयरिश मीटिंग लाइन्स" पैटर्न
"बेयरिश मीटिंग लाइन्स" पैटर्न की पहचान CheckPatternBearishMeetingLines() मेथड में की गई है:
//+--------------------------------------------------------------------+ //| Checks formation of "Bearish Meeting Lines" candlestick pattern |//+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines if((Close(2)-Open(2)>AvgBody(1)) && // long white ((Open(1)-Close(1))>AvgBody(1)) && // long black (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji close return(true); //--- return(false); }
"बेयरिश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न के निर्माण की जांच CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) मेथड द्वारा की जाती है।
2. MFI इंडिकेटर द्वारा पुष्टि किए गए ट्रेड सिग्नल्स
लॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेडिंग सिग्नल्स की पुष्टि MFI इंडिकेटर द्वारा की जानी चाहिए। MFI इंडिकेटर का मान 40 से कम (लॉन्ग पोजिशन के लिए) या 60 से अधिक (शॉर्ट पोजिशन के लिए) होना चाहिए।
खुले हुए पोजीशन का क्लोज़िंग MFI इंडिकेटर के मानों पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है:
- यदि MFI ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 70 और शॉर्ट पोजिशन के लिए 30) को पहुंचा दिया है।
- यदि रिवर्स सिग्नल पुष्टि नहीं होती है (जब MFI इंडिकेटर निम्नलिखित स्तरों पर पहुंचता है: 30 लॉन्ग पोजिशन के लिए और 70 शॉर्ट पोजिशन के लिए)

चित्र 3. "बेयरिश मीटिंग लाइन्स" पैटर्न, MFI इंडिकेटर द्वारा पुष्टि की गई
- int CML_MFI::LongCondition() - लॉन्ग पोजीशन खोलने की स्थिति की जांच करता है (80 लौटाता है) और शॉर्ट पोजीशन को बंद करने की स्थिति (40 लौटाता है);
- int CML_MFI::ShortCondition() - शॉर्ट पोजीशन खोलने की स्थिति की जांच करता है (80 लौटाता है) और लॉन्ग पोजीशन को बंद करने की स्थिति (40 लौटाता है).
2.1. लॉन्ग पोजीशन खोलना/शॉर्ट पोजीशन बंद करना
"बुलिश मीटिंग लाइन्स" पैटर्न की पुष्टि MFI इंडिकेटर द्वारा की जानी चाहिए: MFi(1)<40 (पिछले पूरा हुए बार का MFI इंडिकेटर का मान 40 से कम होना चाहिए).
शॉर्ट पोजीशन को बंद करना होगा यदि MFI इंडिकेटर ने महत्वपूर्ण स्तरों (70 या 30) को ऊपर की ओर पार कर लिया है।
//+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market | //| 1) Market entry (open long position, result=80) | //| 2) Market exit (close short position, result=40) | //+------------------------------------------------------------------+ int CML_MFI::LongCondition() { int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade consition only at news bars int idx =StartIndex(); //--- checking of conditions to open long position //--- formation of Bullish Meeting Lines pattern and MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (MFI(1)<40)) result=80; //--- checking of conditions to close short position //--- signal line crossover of overbought/oversold levels (upward 30, upward 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- return result return(result); }
2.2. शॉर्ट पोजीशन खोलना/लॉन्ग पोजीशन बंद करना
"बेयरिश मीटिंग लाइन्स" पैटर्न की पुष्टि MFI इंडिकेटर द्वारा की जानी चाहिए: MFI(1)>60 (पिछले पूरा हुए बार का MFI इंडिकेटर का मान 60 से अधिक होना चाहिए).
लॉन्ग पोजीशन को बंद करना होगा यदि MFI इंडिकेटर ने महत्वपूर्ण स्तरों (70 या 30) को ऊपर/नीचे पार कर लिया है।
//+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market | //| 1) Market entry (open short position, result=80) | //| 2) Market exit (close long position, result=40) | //+------------------------------------------------------------------+ int CML_MFI::ShortCondition() { int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade consition only at news bars int idx =StartIndex(); //--- checking of conditions to open short position //--- formation of Bearish Meeting Lines pattern and MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (MFI(1)>60)) result=80; //--- checking of conditions to close long position //--- signal line crossover of overbought/oversold levels (upward 70, downward 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- return result return(result); }
2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना
CML_MFI क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे उपयोग करने के लिए, आपको aml_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_AML_MFI.mq5 में होगा, यह terminal_data_folder\MQL5\Experts\ में सेव होगा।
उत्पन्न एक्सपर्ट एडवाइजर के डिफॉल्ट इनपुट पैरामीटर्स:
//--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =10; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =50.0; // Stop Loss level (in points) input double Signal_TakeLevel =50.0 // Take Profit level (in points)
इन्हें बदलना होगा:
//--- inputs for main signal input int Signal_ThresholdOpen =40; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =20; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0 // Price level to execute a deal input double Signal_StopLevel =0.0 // Stop Loss level (in points) input double Signal_TakeLevel =0.0 // Take Profit level (in points)
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, परीक्षण अवधि: 2000.01.01-2011.03.16, PeriodMFI=12, MA_period=4) पर विचार करें।
एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट ट्रेडिंग, 0.1) का उपयोग किया है, ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया है (ट्रेलिंग का उपयोग नहीं किया गया).

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