होम सिस्टम ट्रेडिंग पोस्ट

MQL5 विजार्ड: बुलिश/बेयरिश मीटिंग लाइन्स पर आधारित ट्रेड सिग्नल्स + CCI

संलग्नक
319.zip (6.47 KB, डाउनलोड 2 बार)

MQL5 विजार्ड आपको तैयार किए गए एक्सपर्ट एडवाइजर्स बनाने की सुविधा देता है, जो स्टैंडर्ड लाइब्रेरी क्लासेस पर आधारित होते हैं, जो क्लाइंट टर्मिनल के साथ आते हैं (इसके बारे में विस्तार से जानने के लिए MQL5 विजार्ड में तैयार किए गए एक्सपर्ट एडवाइजर्स बनाने के लिए देखें)। यह आपके ट्रेड आइडियाज को जल्दी चेक करने की सुविधा प्रदान करता है, आपको केवल अपनी ट्रेडिंग सिग्नल क्लास बनाने की आवश्यकता है। इस क्लास की संरचना और उदाहरण के लिए लेख MQL5 विजार्ड: ट्रेडिंग सिग्नल्स का मॉड्यूल कैसे बनाएं देखें।

बुनियादी विचार यह है: ट्रेडिंग सिग्नल्स की क्लास CExpertSignal से ली जाती है, इसके बाद, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने मेथड्स से ओवरराइड करना होगा।

एक किताब "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में) में कई ट्रेडिंग स्ट्रेटेजीज पर चर्चा है, हम रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटर से कन्फर्म किया जाता है।

सर्वश्रेष्ठ तरीका यह है कि एक अलग क्लास बनाएं, जो कैंडलस्टिक पैटर्न्स के निर्माण की जांच के लिए CExpertSignal से ली गई हो। कैंडलस्टिक पैटर्न्स द्वारा उत्पन्न ट्रेड सिग्नल्स की पुष्टि के लिए, आपको एक क्लास लिखने की आवश्यकता है, जो CCandlePattern से ली गई हो और वहां आवश्यक विशेषताएं (उदाहरण के लिए, ऑस्सीलेटर द्वारा पुष्टि) जोड़ें।

यहां हम "बुलिश/बेयरिश मीटिंग लाइन्स" रिवर्सल कैंडलस्टिक पैटर्न्स के आधार पर सिग्नल्स पर चर्चा करेंगे, जिन्हें CCI (कमोडिटी चैनल इंडेक्स) इंडिकेटर द्वारा कन्फर्म किया जाता है। ट्रेड सिग्नल्स का मॉड्यूल CCandlePattern क्लास पर आधारित है, यह कैंडलस्टिक पैटर्न्स के साथ ट्रेड सिग्नल्स बनाने का एक सरल उदाहरण है।


1. "मीटिंग लाइन्स" रिवर्सल कैंडलस्टिक पैटर्न्स

1.1. बुलिश मीटिंग लाइन्स

यह पैटर्न दो कैंडलस्टिक्स (बेयरिश और बुलिश) से मिलकर बना होता है, जिनकी क्लोज़ प्राइसेस समान (या बहुत करीब) होती हैं। दो कैंडलस्टिक्स का बॉडी औसत बॉडी लंबाई से बड़ी होनी चाहिए।

"बुलिश मीटिंग लाइन्स" पैटर्न एक डाउनवर्ड ट्रेंड के उलटने का संकेत देता है।

Fig. 1.

Fig. 1. "बुलिश मीटिंग लाइन्स" पैटर्न

"बुलिश मीटिंग लाइन्स" पैटर्न की पहचान CheckPatternBullishMeetingLines() मेथड में की गई है CCandlePattern क्लास:

//+--------------------------------------------------------------------+
//| "बुलिश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न की पहचान करता है    |
//+--------------------------------------------------------------------+
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);
  }

"CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES)" मेथड का उपयोग "बुलिश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न की पहचान के लिए किया गया है।


1.2. बेयरिश मीटिंग लाइन्स

यह पैटर्न दो कैंडलस्टिक्स (बुलिश और बेयरिश) से मिलकर बना होता है, जिनकी क्लोज़ प्राइसेस समान (या बहुत करीब) होती हैं। दो कैंडलस्टिक्स का बॉडी औसत बॉडी लंबाई से बड़ी होनी चाहिए।

"बेयरिश मीटिंग लाइन्स" पैटर्न एक डाउनवर्ड ट्रेंड के उलटने का संकेत देता है।

Fig. 2.

Fig. 2. "बेयरिश मीटिंग लाइन्स" पैटर्न

"बेयरिश मीटिंग लाइन्स" पैटर्न की पहचान CheckPatternBearishMeetingLines() मेथड में की गई है CCandlePattern क्लास:

//+--------------------------------------------------------------------+
//| "बेयरिश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न की पहचान करता है    |
//+--------------------------------------------------------------------+
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);
  }

"CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES)" मेथड का उपयोग "बेयरिश मीटिंग लाइन्स" कैंडलस्टिक पैटर्न की पहचान के लिए किया गया है।


2. CCI इंडिकेटर द्वारा कन्फर्म किए गए ट्रेड सिग्नल्स

लॉन्ग या शॉर्ट पोज़िशन खोलने के लिए ट्रेडिंग सिग्नल्स को CCI इंडिकेटर द्वारा कन्फर्म किया जाना चाहिए। CCI का मान महत्वपूर्ण स्तरों (-50 लॉन्ग पोज़िशन के लिए और 50 शॉर्ट पोज़िशन के लिए) से अधिक/कम होना चाहिए।

खुले हुए पोज़िशन का क्लोज़िंग CCI के मानों पर निर्भर करता है। यह दो मामलों में किया जा सकता है:

  • यदि CCI लाइन विपरीत महत्वपूर्ण स्तर (लॉन्ग पोज़िशन के लिए 80 और शॉर्ट पोज़िशन के लिए -80) तक पहुँच गई है।
  • यदि रिवर्स सिग्नल कन्फर्म नहीं होता (जब CCI निम्नलिखित स्तरों पर पहुँचता है: -80 लॉन्ग पोज़िशन के लिए और 80 शॉर्ट पोज़िशन के लिए)

Fig. 3.

Figure 3. "बुलिश मीटिंग लाइन्स" पैटर्न, CCI इंडिकेटर द्वारा कन्फर्म किया गया

  • int CML_CCI::LongCondition() - लॉन्ग पोज़िशन खोलने की शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोज़िशन को बंद करता है (40 लौटाता है);
  • int CML_CCI::ShortCondition() - शॉर्ट पोज़िशन खोलने की शर्तों की जांच करता है (80 लौटाता है) और लॉन्ग पोज़िशन को बंद करता है (40 लौटाता है).

2.1. लॉन्ग पोज़िशन खोलना/शॉर्ट पोज़िशन बंद करना

  1. "बुलिश मीटिंग लाइन्स" पैटर्न की पहचान CCI इंडिकेटर द्वारा कन्फर्म की जानी चाहिए: CCI(1)<-50 (पिछले पूर्ण हुए बार का CCI का मान -50 से कम होना चाहिए)।

  2. शॉर्ट पोज़िशन को बंद किया जाना चाहिए यदि CCI इंडिकेटर ने महत्वपूर्ण स्तर -80 को ऊपर की ओर पार किया है या महत्वपूर्ण स्तर 80 को नीचे की ओर पार किया है।

//+------------------------------------------------------------------+
//| मार्केट में एंटर और एग्जिट के लिए शर्तों की जांच करता है                 |
//| 1) मार्केट एंटर (लॉन्ग पोज़िशन खोलना, परिणाम=80)                  |
//| 2) मार्केट एग्जिट (शॉर्ट पोज़िशन बंद करना, परिणाम=40)                 |
//+------------------------------------------------------------------+
int CML_CCI::LongCondition()
  {
   int result=0;
//--- idx का उपयोग एक्सपर्ट एडवाइजर के काम के मोड को निर्धारित करने के लिए किया जा सकता है
//--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है
//--- idx=1 - इस मामले में EA केवल न्यूज बार पर ट्रेड की शर्तों की जांच करता है
   int idx   =StartIndex();
//--- लॉन्ग पोज़िशन खोलने की शर्तों की जांच करना
//--- बुलिश मीटिंग लाइन्स पैटर्न और CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (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. शॉर्ट पोज़िशन खोलना/लॉन्ग पोज़िशन बंद करना

  1. "बेयरिश मीटिंग लाइन्स" पैटर्न की पहचान CCI इंडिकेटर द्वारा कन्फर्म की जानी चाहिए: CCI(1)>50 (पिछले पूर्ण हुए बार का CCI का मान 50 से अधिक होना चाहिए)।

  2. लॉन्ग पोज़िशन को बंद किया जाना चाहिए यदि CCI इंडिकेटर ने -80 या 80 स्तर को नीचे की ओर पार किया है।

//+------------------------------------------------------------------+
//| मार्केट में एंटर और एग्जिट के लिए शर्तों की जांच करता है                 |
//| 1) मार्केट एंटर (शॉर्ट पोज़िशन खोलना, परिणाम=80)                 |
//| 2) मार्केट एग्जिट (लॉन्ग पोज़िशन बंद करना, परिणाम=40)                  |
//+------------------------------------------------------------------+
int CML_CCI::ShortCondition()
  {
   int result=0;
//--- idx का उपयोग एक्सपर्ट एडवाइजर के काम के मोड को निर्धारित करने के लिए किया जा सकता है
//--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है
//--- idx=1 - इस मामले में EA केवल न्यूज बार पर ट्रेड की शर्तों की जांच करता है
   int idx   =StartIndex();
//--- शॉर्ट पोज़िशन खोलने की शर्तों की जांच करना
//--- बेयरिश मीटिंग लाइन्स पैटर्न और CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (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 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना

CML_CCI क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसका उपयोग करने के लिए, acml_cci.mqh फ़ाइल डाउनलोड करना आवश्यक है (संलग्नक देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजें। यही काम candlepatterns.mqh फ़ाइल के साथ भी करें। आप इसे MQL5 विजार्ड में MetaEditor के पुनरारंभ के बाद उपयोग कर सकते हैं।

एक एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें:

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

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

आइए एक्सपर्ट एडवाइजर का नाम निर्धारित करें:

Fig. 5. एक्सपर्ट एडवाइजर के सामान्य गुण

Fig. 5. एक्सपर्ट एडवाइजर के सामान्य गुण

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

Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल गुण

Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल गुण

हमारे मामले में हम केवल एक ट्रेड सिग्नल मॉड्यूल का उपयोग कर रहे हैं।

"CCI द्वारा कन्फर्म किए गए बुलिश/बेयरिश मीटिंग लाइन्स पर आधारित सिग्नल्स" ट्रेडिंग सिग्नल मॉड्यूल जोड़ना:

Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल गुण

Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल गुण

ट्रेड सिग्नल मॉड्यूल जोड़ दिया गया:

Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल गुण

Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल गुण

आप किसी भी ट्रेलिंग गुण का चयन कर सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का उपयोग करेंगे:

Fig. 9. एक्सपर्ट एडवाइजर के ट्रेलिंग गुण

Fig. 9. एक्सपर्ट एडवाइजर के ट्रेलिंग गुण

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

Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण

Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण

"फिनिश" बटन दबाकर, हमें जनरेट किए गए एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_AML_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, परीक्षण अवधि: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3) पर आधारित है।

एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया).

Fig. 11. CCI और मीटिंग लाइन्स पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम

Fig. 11. CCI और मीटिंग लाइन्स पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम


इनपुट पैरामीटर का सबसे अच्छा सेट स्ट्रेटेजी टेस्टर का उपयोग करके MetaTrader 5 क्लाइंट टर्मिनल में पाया जा सकता है।

जनरेट किए गए एक्सपर्ट एडवाइजर का कोड expert_aml_cci.mq5 में संलग्न है।


संबंधित पोस्ट

टिप्पणी (0)