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

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

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

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

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

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

हम यहाँ "बुलिश हरामी" और "बियरिश हरामी" रिवर्सल कैंडलस्टिक पैटर्न पर चर्चा करेंगे, जिन्हें RSI संकेतक द्वारा पुष्टि की गई है। ट्रेड सिग्नल का मॉड्यूल CCandlePattern क्लास पर आधारित है, जो कैंडलस्टिक पैटर्न के साथ ट्रेड सिग्नल बनाने का एक सरल उदाहरण है।

1. "बुलिश हरामी" और "बियरिश हरामी" रिवर्सल कैंडलस्टिक पैटर्न

1.1. बुलिश हरामी

बुलिश हरामी पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक होती है, जिसका शरीर बड़ी कैंडलस्टिक के शरीर की ऊंचाई में होता है। यह पैटर्न संकेत देता है कि गिरती प्रवृत्ति (डाउनट्रेंड) उलटने वाली हो सकती है, यह संकेत देता है कि लंबी स्थिति में प्रवेश करने का अच्छा समय है। दूसरी कैंडलस्टिक एक गैप के साथ खुलती है।

दूसरी (सफेद) कैंडलस्टिक जितनी छोटी होगी, उलटने की संभावना उतनी ही अधिक होगी।

Fig. 1.

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

"बुलिश हरामी" पैटर्न की पहचान CheckPatternBullishHarami() मेथड में की जाती है:

//+------------------------------------------------------------------+
//| "बुलिश हरामी" कैंडलस्टिक पैटर्न की पहचान करता है         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- बुलिश हरामी
   if((Close(1)>Open(1))              && // अंतिम पूर्ण कैंडल बुलिश है (सफेद दिन)
     ((Open(2)-Close(2))>AvgBody(1))  && // पिछली कैंडल बियरिश है, इसका शरीर औसत से बड़ा है (लंबी काली)
     ((Close(1)<Open(2))              && // बुलिश कैंडल का क्लोज प्राइस बियरिश कैंडल के ओपन प्राइस से कम है
      (Open(1)>Close(2)))             && // बुलिश कैंडल का ओपन प्राइस बियरिश कैंडल के क्लोज प्राइस से अधिक है
      (MidPoint(2)<CloseAvg(2)))         // डाउनट्रेंड
      return(true);
//---
   return(false);
  }

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


1.2. बियरिश हरामी

बियरिश हरामी पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक होती है, जिसका शरीर बड़ी कैंडलस्टिक के शरीर की ऊंचाई में होता है। यह पैटर्न संकेत देता है कि बढ़ती प्रवृत्ति (अपट्रेंड) उलटने वाली हो सकती है, यह संकेत देता है कि शॉर्ट स्थिति में प्रवेश करने का अच्छा समय है। दूसरी कैंडलस्टिक एक गैप के साथ खुलती है।

दूसरी (काली) कैंडलस्टिक जितनी छोटी होगी, उलटने की संभावना उतनी ही अधिक होगी।

Fig. 2.

Fig. 2. "बियरिश हरामी" कैंडलस्टिक पैटर्न

"बियरिश हरामी" पैटर्न की पहचान CheckPatternBearishHarami() मेथड में की जाती है:

//+------------------------------------------------------------------+
//| "बियरिश हरामी" कैंडलस्टिक पैटर्न की पहचान करता है         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- बियरिश हरामी
   if((Close(1)<Open(1))              && // अंतिम पूर्ण कैंडल बियरिश है (काली दिन)
     ((Close(2)-Open(2))>AvgBody(1))  && // पिछली कैंडल बुलिश है, इसका शरीर औसत से बड़ा है (लंबी सफेद)
     ((Close(1)>Open(2))              && // क्लोज प्राइस बियरिश कैंडल के ओपन प्राइस से अधिक है
      (Open(1)<Close(2)))             && // ओपन प्राइस बियरिश कैंडल के क्लोज प्राइस से कम है
      (MidPoint(2)>CloseAvg(2)))         // अपट्रेंड
      return(true);
//---
   return(false);
  }

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


2. RSI संकेतक द्वारा पुष्टि किए गए ट्रेड सिग्नल

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

खुले हुए स्थिति को बंद करना RSI के मानों पर निर्भर करता है। यह दो मामलों में किया जा सकता है:

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

Figure 3.

Figure 3. "बुलिश हरामी" पैटर्न, पुष्टि किए गए RSI संकेतक

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

2.1. लंबी स्थिति खोलें/शॉर्ट स्थिति बंद करें

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

  2. यदि RSI संकेतक ने निर्णायक स्तर 70 या 30 को ऊपर की ओर पार कर लिया है, तो शॉर्ट स्थिति बंद होनी चाहिए।

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

CBH_BH_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. एक्सपर्ट एडवाइजर के सिग्नल प्रॉपर्टीज

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

"बुलिश हरामी/बियरिश हरामी द्वारा पुष्टि किए गए सिग्नल" ट्रेड सिग्नल के मॉड्यूल को जोड़ना:

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

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

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

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

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

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

Fig. 9. एक्सपर्ट एडवाइजर की मनी मैनेजमेंट प्रॉपर्टीज

Fig. 9. एक्सपर्ट एडवाइजर की मनी मैनेजमेंट प्रॉपर्टीज

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

Fig. 10. एक्सपर्ट एडवाइजर की मनी मैनेजमेंट प्रॉपर्टीज

Fig. 10. एक्सपर्ट एडवाइजर की मनी मैनेजमेंट प्रॉपर्टीज

"फिनिश" बटन दबाने पर हमें जनरेटेड एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_ABH_BH_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 ट्रेड सिग्नल के मॉड्यूल के साथ, इसलिए हमें थ्रेशोल्ड मानों के सेटिंग में इस तथ्य को ध्यान में रखना होगा। इस तथ्य के कारण थ्रेशोल्डOpen और थ्रेशोल्डClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए।

Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट किए गए हैं, इसका मतलब है कि स्थिति केवल तब बंद की जाएगी जब बंद करने की स्थितियाँ सही हों।


2.4. इतिहास बैकटेस्टिंग परिणाम

आइए ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.11, PeriodRSI=37, MA_period=7) पर एक्सपर्ट एडवाइजर की बैकटेस्टिंग पर ध्यान दें।

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

Fig. 11. बुलिश हरामी/बियरिश हरामी + RSI पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम

Fig. 11. बुलिश हरामी/बियरिश हरामी + RSI पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम


इनपुट पैरामीटर का सर्वोत्तम सेट स्ट्रैटेजी टेस्टर का उपयोग करके खोजा जा सकता है।

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


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

टिप्पणी (0)