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

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

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

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

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

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

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

यहाँ हम "बुलिश मीटिंग लाइन्स" रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल्स पर विचार करेंगे, जिसे RSI (रिलेटिव स्ट्रेंथ इंडेक्स) इंडिकेटर द्वारा कन्फर्म किया जाता है। ट्रेड सिग्नल्स का मॉड्यूल 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.1. बेयरिश मीटिंग लाइन्स

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

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

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. ट्रेड सिग्नल्स, जिन्हें RSI इंडिकेटर द्वारा कन्फर्म किया गया है

लॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेड सिग्नल्स को RSI इंडिकेटर द्वारा कन्फर्म किया जाना चाहिए। RSI का मान क्रिटिकल लेवल्स (लॉन्ग पोजीशन के लिए 40 और शॉर्ट पोजीशन के लिए 60) से कम/ज्यादा होना चाहिए।

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

  1. यदि RSI विपरीत क्रिटिकल लेवल (लॉन्ग पोजीशन के लिए 70 और शॉर्ट पोजीशन के लिए 30) तक पहुँच गया है।
  2. यदि रिवर्स सिग्नल की पुष्टि नहीं की जाती है (जब RSI निम्नलिखित लेवल्स पर पहुँचता है: लॉन्ग पोजीशन के लिए 30 और शॉर्ट पोजीशन के लिए 70)

Figure 3.

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


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

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

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

  2. शॉर्ट पोजीशन को बंद करना चाहिए यदि RSI इंडिकेटर ने क्रिटिकल लेवल 70 या 30 को उपर की तरफ पार किया है।

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

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

  2. लॉन्ग पोजीशन को बंद करना चाहिए यदि RSI इंडिकेटर ने क्रिटिकल लेवल्स 70 या 30 को नीचे की तरफ पार किया है।

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

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

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

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

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

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

Fig. 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएँ

Fig. 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएँ

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

Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल विशेषताएँ

Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल विशेषताएँ

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

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

Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल विशेषताएँ

Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल विशेषताएँ

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

Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल विशेषताएँ

Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल विशेषताएँ

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

Fig. 9. एक्सपर्ट एडवाइजर की पैसे प्रबंधन विशेषताएँ

Fig. 9. एक्सपर्ट एडवाइजर की पैसे प्रबंधन विशेषताएँ

पैसे प्रबंधन की विशेषताओं के संबंध में, हम "निश्चित ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे:

Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन विशेषताएँ

Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन विशेषताएँ

"फिनिश" बटन दबाकर, हमें जनरेटेड एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_AML_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, टेस्टिंग पीरियड: 2000.01.01-2011.03.01, PeriodRSI=11, MA_period=3) पर।

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

Fig. 11. एक्सपर्ट एडवाइजर के टेस्टिंग परिणाम, जो बुलिश/बेयरिश मीटिंग लाइन्स + RSI के आधार पर हैं

Fig. 11. एक्सपर्ट एडवाइजर के टेस्टिंग परिणाम, जो बुलिश/बेयरिश मीटिंग लाइन्स + RSI के आधार पर हैं


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

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


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

टिप्पणी (0)