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

MQL5 विज़ार्ड - हैमर/हैंगिंग मैन और स्टोकास्टिक पर आधारित ट्रेड सिग्नल

संलग्नक
314.zip (6.58 KB, डाउनलोड 3 बार)

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

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

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

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

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

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

1.1. हैमर

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

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

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

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

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

//+------------------------------------------------------------------+
//| "हैमर" कैंडलस्टिक पैटर्न की पहचान करता है          |
//+------------------------------------------------------------------+
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. हैंगिंग मैन

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

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

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

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

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

//+------------------------------------------------------------------+

//| "हैंगिंग मैन" कैंडलस्टिक पैटर्न की पहचान करता है          |
//+------------------------------------------------------------------+
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. ट्रेड सिग्नल्स, जो स्टोकास्टिक इंडिकेटर द्वारा पुष्टि किए गए हैं

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

CH_HM_Stoch क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे उपयोग करने के लिए ach_hm_stoch.mqh फ़ाइल को डाउनलोड करना आवश्यक है (देखें अटैचमेंट) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजें। कैंडलपैटर्न्स.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_AH_HM_Stoch.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.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5) पर आधारित है।

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


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

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


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

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


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

टिप्पणी (0)