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

MQL5 विजार्ड: Dark Cloud Cover/Piercing Line और MFI पर आधारित ट्रेड सिग्नल

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

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

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

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

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

1. "Dark Cloud Cover" और "Piercing Line" रिवर्सल कैंडलस्टिक पैटर्न

1.1. Dark Cloud Cover

यह एक बेयरिश कैंडलस्टिक रिवर्सल है जो अपट्रेंड के अंत में होता है। पहले दिन एक लंबी सफेद कैंडल बनती है और दूसरे दिन एक गैप अप बनता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के मध्य बिंदु से नीचे होता है।

Fig. 1.

Fig. 1. "Dark Cloud Cover" कैंडलस्टिक पैटर्न

"Dark Cloud Cover" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में की जाती है।

//+------------------------------------------------------------------+
//| "Dark Cloud Cover" कैंडलस्टिक पैटर्न की पहचान करता है       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (लंबी सफेद)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (पिछली बॉडी के भीतर क्लोज)
      (MidOpenClose(2)>CloseAvg(1))  && // (अपट्रेंड)
      (Open(1)>High(2)))                // (नए हाई पर ओपन)
      return(true);
//---
   return(false);
  }

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

1.2. Piercing Line

दूसरे दिन का गैप डाउन डाउनट्रेंड को बढ़ाता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन की बॉडी के मध्य बिंदु से ऊपर होता है। इससे यह संकेत मिलता है कि एक बॉटम बन सकता है। कैंडलस्टिक चार्ट्स का प्रयोग करने पर यह प्राइस एक्शन अधिक स्पष्ट होता है।

Fig. 2.

Fig. 2. "Piercing Line" कैंडलस्टिक पैटर्न

"Piercing Line" पैटर्न की पहचान CheckPatternPiercingLine() मेथड में की जाती है।

//+------------------------------------------------------------------+
//| "Piercing Line" कैंडलस्टिक पैटर्न की पहचान करता है          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (लंबी सफेद)
      (Open(2)-Close(2)>AvgBody(1)) && // (लंबा काला)
      (Close(1)>Close(2))            && //  
      (Close(1)<Open(2))            && // (पिछली बॉडी के भीतर क्लोज) 
      (MidOpenClose(2)<CloseAvg(2)) && // (डाउनट्रेंड)
      (Open(1)<Low(2)))                // (पिछले लो से कम ओपन) 
      return(true);
//---
   return(false);
  }

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

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

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

खुली स्थिति का क्लोज MFI इंडिकेटर के मान पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है:

  • MFI ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 70 और शॉर्ट पोजिशन के लिए 30) को प्राप्त किया है।
  • यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब MFI इंडिकेटर निम्नलिखित स्तरों पर पहुँचता है: लॉन्ग पोजिशन के लिए 30 और शॉर्ट पोजिशन के लिए 70)

Fig. 3.

Fig. 3. "Dark Cloud Cover" पैटर्न, MFI इंडिकेटर द्वारा कन्फर्म किया गया


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

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

  1. "Morning Star" पैटर्न की पहचान MFI इंडिकेटर द्वारा की जानी चाहिए: MFi(1)<40 (अंतिम पूर्ण बार का MFI इंडिकेटर का मान 40 से कम होना चाहिए)।

  2. शॉर्ट पोजिशन को तब बंद किया जाना चाहिए जब MFI इंडिकेटर महत्वपूर्ण स्तरों (70 या 30) को पार कर गया है।

//+------------------------------------------------------------------+
//| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है                 |
//| 1) मार्केट प्रवेश (लॉन्ग पोजिशन खोलना, परिणाम=80)                  |
//| 2) मार्केट निकासी (शॉर्ट पोजिशन बंद करना, परिणाम=40)                 |
//+------------------------------------------------------------------+
int CDC_PL_MFI::LongCondition()
  {
   int result=0;
//--- idx का उपयोग एक्सपर्ट एडवाइजर की कार्य विधि निर्धारित करने के लिए किया जा सकता है
//--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है
//--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की शर्तों की जांच करता है
  int idx   =StartIndex();
//--- लॉन्ग पोजिशन खोलने की शर्तों की जांच
//--- Piercing Line पैटर्न और MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (MFI(1)<40))
     result=80;
//--- शॉर्ट पोजिशन को बंद करने की शर्तों की जांच
//--- ओवरबॉट/ओवरसोल्ड स्तरों (उपर 30, उपर 70) की सिग्नललाइन क्रॉसओवर
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- परिणाम लौटाएँ
   return(result);
  }


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

  1. "Dark Cloud Cover" पैटर्न की पहचान MFI इंडिकेटर द्वारा की जानी चाहिए: MFI(1)>60 (अंतिम पूर्ण बार का MFI इंडिकेटर का मान 60 से अधिक होना चाहिए)।

  2. लॉन्ग पोजिशन को तब बंद किया जाना चाहिए जब MFI इंडिकेटर महत्वपूर्ण स्तरों (70 या 30) को पार कर गया है।

//+------------------------------------------------------------------+
//| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है                 |
//| 1) मार्केट प्रवेश (शॉर्ट पोजिशन खोलना, परिणाम=80)                 |
//| 2) मार्केट निकासी (लॉन्ग पोजिशन बंद करना, परिणाम=40)                  |
//+------------------------------------------------------------------+
int CDC_PL_MFI::ShortCondition()
  {
   int result=0;
//--- idx का उपयोग एक्सपर्ट एडवाइजर की कार्य विधि निर्धारित करने के लिए किया जा सकता है
//--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है
//--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की शर्तों की जांच करता है
  int idx   =StartIndex();
//--- शॉर्ट पोजिशन खोलने की शर्तों की जांच
//--- Dark Cloud Cover पैटर्न और MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (MFI(1)>60))
     result=80;
//--- लॉन्ग पोजिशन को बंद करने की शर्तों की जांच
//--- ओवरबॉट/ओवरसोल्ड स्तरों (उपर 70, नीचे 30) की सिग्नललाइन क्रॉसओवर
  if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- परिणाम लौटाएँ
   return(result);
  }


2.3. MQL5 विजार्ड का उपयोग करके Expert Advisor बनाना

CDC_PL_MFI क्लास स्टैण्डर्ड लाइब्रेरी क्लासेज में शामिल नहीं है, इसका उपयोग करने के लिए, adc_pl_mfi.mqh फाइल डाउनलोड करें और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सेव करें। वही acandlepatterns.mqh फाइल के साथ भी करें। आप इसे MQL5 विजार्ड में MetaEditor के रिस्टार्ट के बाद उपयोग कर सकते हैं।

Expert Advisor बनाने के लिए MQL5 विजार्ड लॉन्च करें:

Fig. 4. Creating Expert Advisor using MQL5 Wizard

Fig. 4. MQL5 विजार्ड का उपयोग करके Expert Advisor बनाना

Expert Advisor का नाम निर्धारित करें:

Fig. 5. General properties of the Expert Advisor

Fig. 5. Expert Advisor की सामान्य विशेषताएँ

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

Fig. 6. Signal properties of the Expert Advisor

Fig. 6. Expert Advisor की सिग्नल विशेषताएँ

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

"Dark Cloud Cover/Piercing Line द्वारा कन्फर्म किए गए सिग्नल" ट्रेड सिग्नल मॉड्यूल जोड़ना:

Fig. 7. Signal properties of the Expert Advisor

Fig. 7. Expert Advisor की सिग्नल विशेषताएँ

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

Fig. 8. Signal properties of the Expert Advisor

Fig. 8. Expert Advisor की सिग्नल विशेषताएँ

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

Fig. 9. Trailing properties of the Expert Advisor

Fig. 9. Expert Advisor की ट्रेलिंग विशेषताएँ

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

Fig. 10. Money management properties of the Expert Advisor

Fig. 10. Expert Advisor की पैसे प्रबंधन विशेषताएँ

"फिनिश" बटन दबाने पर, हमें जनरेटेड Expert Advisor का कोड मिलेगा, जो Expert_ADC_PL_MFI.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सेव होगा।

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

//--- मुख्य सिग्नल के लिए इनपुट
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 विजार्ड द्वारा जनरेटेड Expert Advisor "वोट्स" का उपयोग करके पोजिशन खोलता और बंद करता है। मुख्य मॉड्यूल का वोट (कंटेनर के रूप में, इसमें सभी जोड़े गए मॉड्यूल शामिल हैं) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं।

मुख्य मॉड्यूल के वोट के परिणामों का भी "वोट्स" की औसत में उपयोग होता है। हमारे मामले में, मुख्य मॉड्यूल + 1 ट्रेड सिग्नल मॉड्यूल है, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस कारण थ्रेशोल्डOpen और थ्रेशोल्डClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट करना चाहिए।

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


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

Expert Advisor के बैकटेस्टिंग पर विचार करें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11)।

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

Fig. 11. Testing results of the Expert Advisor, based on Dark Cloud Cover/Piercing Line + MFI

Fig. 11. "Dark Cloud Cover/Piercing Line + MFI" पर आधारित Expert Advisor के परीक्षण परिणाम


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

MQL5 विजार्ड द्वारा बनाए गए Expert Advisor का कोड expert_adc_pl_mfi.mq5 में संलग्न किया गया है।


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

टिप्पणी (0)