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

MQL5 विजार्ड: सुबह/शाम के तारे के आधार पर ट्रेड सिग्नल + CCI के साथ एक्सपर्ट एडवाइजर

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

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

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

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

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

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

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

1.1. सुबह का तारा

यह पैटर्न डाउनट्रेंड के उलटने का संकेत देता है, इसमें तीन कैंडल होती हैं (चित्र 1)। एक लंबी काली कैंडल के बाद एक कैंडल (जिसका रंग महत्वपूर्ण नहीं है) आती है, जिसका शरीर छोटा होता है, जो काली कैंडल के शरीर के बाहर स्थित होता है। कैंडल का छोटा शरीर यह दर्शाता है कि बैल और भालू की ताकत समान है और बाजार ट्रेंड बदलने के लिए तैयार है।

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

यदि दूसरी कैंडल डोजी जैसी कैंडल है, तो इस मॉडल को "सुबह डोजी स्टार" कहा जाता है।

चित्र 1.

चित्र 1. "सुबह का तारा" और "सुबह डोजी कैंडलस्टिक पैटर्न"

"सुबह का तारा" पैटर्न की पहचान CheckPatternMorningStar() और CheckPatternMorningDoji() मेथड्स से की जाती है, जो CCandlePattern क्लास में हैं:

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

"सुबह का तारा" पैटर्न की पहचान CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) और CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) मेथड्स से की जाती है।

1.2. शाम का तारा

यह पैटर्न अपट्रेंड के उलटने का संकेत देता है, इसमें तीन कैंडल होती हैं (चित्र 2)। एक लंबी सफेद कैंडल के बाद एक कैंडल (जिसका रंग महत्वपूर्ण नहीं है) आती है, जिसका शरीर छोटा होता है, जो सफेद कैंडल के शरीर के बाहर स्थित होता है। कैंडल का छोटा शरीर यह दर्शाता है कि बैल और भालू की ताकत समान है और बाजार ट्रेंड बदलने के लिए तैयार है।

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

यदि दूसरी कैंडल डोजी जैसी कैंडल है, तो इस मॉडल को "शाम डोजी स्टार" कहा जाता है।

चित्र 2.

चित्र 2. "शाम का तारा" और "शाम डोजी कैंडलस्टिक पैटर्न"

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

//+------------------------------------------------------------------+
//| "शाम का तारा" पैटर्न के गठन की जांच करें                    |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- शाम का तारा
   if((Close(3)-Open(3)>AvgBody(1))             && // बुलिश कैंडल जिसका शरीर औसत शरीर से अधिक है
      (MathAbs(Close(2)-Open(2)<AvgBody(1)*0.5) && // दूसरी कैंडल का शरीर छोटा है (औसत से कम)
      (Close(2)>Close(3))                       && // दूसरी कैंडल की बंद कीमत पहली कैंडल से अधिक है
      (Open(2)>Open(3))                         && // दूसरी कैंडल का ओपन पहली कैंडल के ओपन से अधिक है
      (Close(1)<MidOpenClose(3)))                  // अंतिम पूर्ण कैंडल की बंद कीमत पहले की मध्य से कम है
      return(true);
//---
   return(false);
  }

"शाम का तारा" पैटर्न की पहचान CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) और CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) मेथड्स से की जाती है।

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

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

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

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

चित्र 3.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

टिप्पणी (0)