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

MQL5 विजार्ड से हैमर/हैंगिंग मैन CCI ट्रेड सिग्नल्स बनाना

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

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

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

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

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

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

1. "हैमर" और "हैंगिंग मैन" रिवर्सल कैंडलस्टिक पैटर्न

1.1. हैमर

"हैमर" एक कैंडलस्टिक है जिसमें एक छोटी बॉडी और लंबी निचली वीक होती है, जो नीचे की ओर कीमत के मूवमेंट के बाद बनती है। "हैमर" पैटर्न एक भेयरिश ट्रेंड के अंत को दर्शाता है।

कैंडलस्टिक बॉडी का रंग महत्वपूर्ण नहीं है, लेकिन बुलिश हैमर अधिक बुलिश पोटेंशियल को इंगित करता है। "हैमर" पैटर्न की बॉडी अक्सर पिछले कैंडल के न्यूनतम के करीब बनती है। लंबी निचली वीक और छोटी ऊपरी वीक रिवर्सल पैटर्न की उच्च संभावनाओं की ओर ले जाती है।


हैमर कैंडलस्टिक पैटर्न

चित्र 1. "हैमर" कैंडलस्टिक पैटर्न

"हैमर" पैटर्न की पहचान CheckPatternHammer() मेथड में की जाती है:

//+------------------------------------------------------------------+
//| "हैमर" कैंडलस्टिक पैटर्न की पहचान करता है          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- हैमर
   if((MidPoint(1)<CloseAvg(2))                              && // डाउन ट्रेंड
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // बॉडी अपर 1/3 में
      (Close(1)<Close(2)) && (Open(1)<Open(2)))                 // बॉडी गैप
      return(true);
//---
   return(false);
  }

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


1.2. हैंगिंग मैन

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

कैंडलस्टिक बॉडी का रंग महत्वपूर्ण नहीं है, लेकिन बेयरिश कैंडल अधिक बेयरिश पोटेंशियल को दर्शाता है। "हैंगिंग मैन" पैटर्न की बॉडी अक्सर पिछले कैंडल के अधिकतम के करीब बनती है। लंबी निचली वीक और छोटी ऊपरी वीक रिवर्सल पैटर्न की उच्च संभावनाओं की ओर ले जाती है।

हैंगिंग मैन कैंडलस्टिक पैटर्न

चित्र 2. "हैंगिंग मैन" कैंडलस्टिक पैटर्न

"हैंगिंग मैन" पैटर्न की पहचान CheckPatternHangingMan() मेथड में की जाती है:

//+------------------------------------------------------------------+
//| "हैंगिंग मैन" कैंडलस्टिक पैटर्न की पहचान करता है          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- हैंगिंग मैन
   if((MidPoint(1)>CloseAvg(2))                             && // अप ट्रेंड
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // बॉडी अपर 1/3 में
      (Close(1)>Close(2)) && (Open(1)>Open(2)))                  // बॉडी गैप
      return(true);
//---
   return(false);
  }

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


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

लंबी या छोटी स्थिति खोलने के लिए ट्रेडिंग सिग्नल्स को CCI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। CCI का मान महत्वपूर्ण स्तरों (-50 लंबी स्थिति के लिए और 50 छोटी स्थिति के लिए) से अधिक/कम होना चाहिए।

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

  1. अगर CCI लाइन विपरीत महत्वपूर्ण स्तर (80 लंबी स्थिति के लिए और -80 छोटी स्थिति के लिए) तक पहुँच गई है।
  2. अगर विपरीत सिग्नल की पुष्टि नहीं होती है (जब CCI निम्नलिखित स्तरों तक पहुँचता है: -80 लंबी स्थिति के लिए और 80 छोटी स्थिति के लिए)।

हैमर पैटर्न, CCI इंडिकेटर द्वारा पुष्टि की गई

चित्र 3. हैमर पैटर्न, CCI इंडिकेटर द्वारा पुष्टि की गई


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

2.1. लंबी स्थिति खोलना/छोटी स्थिति बंद करना

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

हैमर/हैंगिंग मैन + CCI पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम

चित्र 11. हैमर/हैंगिंग मैन + CCI पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम


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

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

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

टिप्पणी (0)