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

MQL5 विजार्ड: बुलिश और बेयरिश एंगुल्फिंग पैटर्न पर आधारित ट्रेड सिग्नल

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

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

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

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

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


1. "बुलिश एंगुल्फिंग" और "बेयरिश एंगुल्फिंग" रिवर्सल कैंडलस्टिक पैटर्न

1.1. बुलिश एंगुल्फिंग

"बुलिश एंगुल्फिंग" रिवर्सल पैटर्न डाउनट्रेंड में तब बनता है जब एक छोटी काली कैंडलस्टिक के बाद एक बड़ी सफेद कैंडलस्टिक आती है, जो पूरी तरह से पिछले दिन की कैंडलस्टिक को "एंगुल्फ" कर देती है। छोटी कैंडलस्टिक के टेल्स छोटे होते हैं, जिससे बड़ी कैंडलस्टिक का बॉडी पिछले दिन की कैंडलस्टिक को कवर कर लेता है।

Fig. 1.

Fig. 1. "बुलिश एंगुल्फिंग" कैंडलस्टिक पैटर्न

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

//+------------------------------------------------------------------+
//| Checks formation of "Bullish Engulfing" candlestick pattern      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing
   if((Open(2)>Close(2))             &&  // previous candle is bearish
      (Close(1)-Open(1)>AvgBody(1))  &&  // body of the bullish candle is higher than average value of the body 
      (Close(1)>Open(2))             &&  // close price of the bullish candle is higher than open price of the bearish candle
      (MidOpenClose(2)<CloseAvg(2))  &&  // downtrend
      (Open(1)<Close(2)))                // open price of the bullish candle is lower than close price of the bearish
      return(true);
//---
   return(false);
  }

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


1.2. बेयरिश एंगुल्फिंग

"बेयरिश एंगुल्फिंग" रिवर्सल पैटर्न अपट्रेंड में तब बनता है जब एक छोटी सफेद कैंडलस्टिक के बाद एक बड़ी काली कैंडलस्टिक आती है, जो पूरी तरह से पिछले दिन की कैंडलस्टिक को "एंगुल्फ" कर देती है। छोटी कैंडलस्टिक के टेल्स छोटे होते हैं, जिससे बड़ी कैंडलस्टिक का बॉडी पिछले दिन की कैंडलस्टिक को कवर कर लेता है।

Fig. 2.

Fig. 2. "बेयरिश एंगुल्फिंग" कैंडलस्टिक पैटर्न

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

//+------------------------------------------------------------------+
//| Checks formation of "Bearish Engulfing" candlestick pattern      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing
   if((Open(2)<Close(2))            &&  // previous candle is bullish
      (Open(1)-Close(1)>AvgBody(1)) &&  // body of the candle is higher than average value of the body
      (Close(1)<Open(2))            &&  // close price of the bearish candle is lower than open price of the bullish candle
      (MidOpenClose(2)>CloseAvg(2)) &&  // uptrend
      (Open(1)>Close(2)))               // Open price of the bearish candle is higher than close price of the bullish candle
      return(true);
//---
   return(false);
  }

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


2. ट्रेड सिग्नल्स, जिन्हें स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की गई है

लॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेडिंग सिग्नल्स की पुष्टि स्टोकास्टिक ऑसिलेटर द्वारा होनी चाहिए। सिग्नल %D लाइन को संबंधित क्रिटिकल लेवल (30 या 70) से अधिक/कम होना चाहिए।

खुले हुए पोजीशन को बंद करने की प्रक्रिया %D इंडिकेटर के मानों पर निर्भर करती है। यह दो मामलों में किया जा सकता है:

  1. अगर %D लाइन विपरीत क्रिटिकल लेवल (लॉन्ग पोजीशन के लिए 80 और शॉर्ट पोजीशन के लिए 20) तक पहुँच गई है।
  2. अगर रिवर्स सिग्नल की पुष्टि नहीं होती (जब %D लाइन निम्न स्तरों तक पहुँचती है: 20 लॉन्ग पोजीशन के लिए और 80 शॉर्ट पोजीशन के लिए)।

Fig. 3.

Fig. 3. "बुलिश एंगुल्फिंग" पैटर्न, स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की गई

ट्रेड के लिए प्रवेश और निकासी की शर्तों की जांच दो मेथड्स में की जाती है:

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

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

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

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

//+------------------------------------------------------------------+
//| 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 CBE_BE_Stoch::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 Engulfing pattern and signal line<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (StochSignal(1)<30))
     result=80;
//--- checking of conditions to close short position
//--- signal line crossover of overbought/oversold levels (downward 20, upward 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- return result
   return(result);
  }

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

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

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

//+------------------------------------------------------------------+
//| 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 CBE_BE_Stoch::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 Engulfing pattern and signal line>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (StochSignal(1)>70))
     result=80;
//--- checking of conditions to close long position
//--- signal line crossover of overbought/oversold levels (downward 80, upward 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- return result
   return(result);
  }


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

CBE_BE_Stoch क्लास स्टैंडर्ड लाइब्रेरी क्लासेज में शामिल नहीं है, इसलिए इसे उपयोग करने के लिए आपको acbe_be_stoch.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. एक्सपर्ट एडवाइजर्स के सिग्नल प्रॉपर्टीज

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

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

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

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

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

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

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

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

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

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

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

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

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

"फिनिश" बटन दबाने पर, हमें जनरेटेड एक्सपर्ट एडवाइजर्स का कोड प्राप्त होता है, जो Expert_ABE_BE_Stoch.mq5 में स्थित होता है, और यह terminal_data_folder\MQL5\Experts\ में सेव होता है।

जनरेटेड एक्सपर्ट एडवाइजर्स के डिफ़ॉल्ट इनपुट पैरामीटर्स:

//--- inputs for main signal
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    // टेक प्रॉफिट स्तर (पॉइंट्स में)

इसे बदलकर होना चाहिए:

//--- inputs for main signal
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.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5)।

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


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

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


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

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


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

टिप्पणी (0)