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

MQL5 विजार्ड: ऑलिगेटर संकेतक पर आधारित व्यापार सिग्नल

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

MQL5 विजार्ड आपको बिना किसी कोडिंग के स्वचालित रूप से एक्सपर्ट एडवाइजर्स बनाने की सुविधा देता है (देखें MQL5 विजार्ड: बिना प्रोग्रामिंग के एक्सपर्ट एडवाइजर्स बनाना).

अब बात करते हैं ऑलिगेटर तकनीकी संकेतक पर आधारित व्यापार सिग्नल्स की, जिसे B. Williams ने "ट्रेडिंग कैओस" में पेश किया था। इस रणनीति को "ऑलिगेटर पर आधारित संकेत" कहा जाता है, जो MQL5 विजार्ड में ईए बनाने के दौरान उपयोग की जाती है।

यह प्रणाली तीन मूविंग एवरेज (लिप्स, टीथ और जॉ लाइन) और ऑस्सीलेटर पर आधारित है, जो इनके बीच के अंतर को इस्तेमाल करती है। व्यापार सिग्नल तब उत्पन्न होते हैं जब ऑलिगेटर की लाइनें एक-दूसरे को क्रॉस करती हैं, जो कि इन लाइनों के क्रम द्वारा तय किए गए ट्रेंड पर निर्भर करता है। यदि ट्रेंड ऊपर की ओर है, तो लिप्स लाइन (न्यूनतम अवधि) सबसे ऊँची होती है, उसके बाद टीथ लाइन और सबसे नीची जॉ लाइन होती है। विपरीत स्थिति में, जब ट्रेंड नीचे की ओर होता है, तो यह क्रम उल्टा होता है।

व्यापार सिग्नल्स:

  • लंबी स्थिति खोलें: ऑलिगेटर की लाइनों का क्रॉसओवर और दूरी का बढ़ना यदि ट्रेंड ऊपर की ओर हो;
  • लंबी स्थिति बंद करें: लिप्स लाइन का जॉ लाइन के साथ ऊपर की ओर क्रॉसओवर;
  • शार्ट स्थिति खोलें: ऑलिगेटर की लाइनों का क्रॉसओवर और दूरी का बढ़ना यदि ट्रेंड नीचे की ओर हो;
  • शार्ट स्थिति बंद करें: लिप्स लाइन का जॉ लाइन के साथ नीचे की ओर क्रॉसओवर;

यह रणनीति CSignalAlligator क्लास में लागू की गई है।

चित्र 1. ऑलिगेटर तकनीकी संकेतक पर आधारित व्यापार सिग्नल

चित्र 1. ऑलिगेटर तकनीकी संकेतक पर आधारित व्यापार सिग्नल


व्यापार सिग्नल्स

यह व्यापार रणनीति CSignalAlligator में लागू की गई है, जिसमें संकेतक मानों को सरल बनाने के लिए कुछ विशेषताएँ मौजूद हैं:

double   Jaw(int ind)              // बार की जॉ लाइन का मान लौटाता है
double   Teeth(int ind)           // बार की टीथ लाइन का मान लौटाता है
double   Lips(int ind)            // बार की लिप्स लाइन का मान लौटाता है
double   LipsTeethDiff(int ind)   // लिप्स और टीथ लाइनों के बीच का अंतर लौटाता है
double   TeethJawDiff(int ind)    // टीथ और जॉ लाइनों के बीच का अंतर लौटाता है
double   LipsJawDiff(int ind)     // लिप्स और जॉ लाइनों के बीच का अंतर लौटाता है
bool     CheckCross();             // ऑलिगेटर लाइनों के क्रॉसओवर की जांच के लिए


1. लंबी स्थिति खोलें

लंबी स्थिति खोलने की शर्तों में कुछ विशेषताएँ हैं, जो लिप्स, टीथ और जॉ लाइनों के शिफ्ट के कारण होती हैं।

लंबी स्थिति खोलने की शर्तें:

  • CheckCross का उपयोग क्रॉसओवर और लाइनों के बीच के अंतर को बढ़ाने की पुष्टि के लिए किया जाता है;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) और LipsTeethDiff(-1)>=LipsTeethDiff(0); लिप्स और टीथ लाइनों के बीच के अंतर के बढ़ने की जांच;
  • LipsTeethDiff(0)>=0.0; लिप्स लाइन टीथ लाइन से ऊँची है;
  • TeethJawDiff(-2) >=TeethJawDiff(-1) और TeethJawDiff(-1) >=TeethJawDiff(0); टीथ और जॉ लाइनों के बीच के अंतर के बढ़ने की जांच;
  • TeethJawDiff(0) >=0.0; टीथ लाइन जॉ लाइन से ऊँची है।
//+------------------------------------------------------------------+
//| लंबी स्थिति (खरीद) खोलने की शर्तों की जांच करता है          |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
      TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


2. लंबी स्थिति बंद करें

लंबी स्थिति बंद करने की शर्तें (लाइन के शिफ्ट को नोट करें):

  • LipsTeethDiff(-1)<0; अगले बार की लिप्स लाइन (शिफ्ट के कारण) टीथ लाइन से नीची है;
  • LipsTeethDiff(0)>=0; वर्तमान बार की लिप्स लाइन टीथ लाइन से ऊँची/बराबर है;
  • LipsTeethDiff(1)>0; पिछले (पूर्ण) बार की लिप्स लाइन टीथ लाइन से ऊँची है।
//+------------------------------------------------------------------+

//| शार्ट स्थिति बंद करने की शर्तों की जांच करता है                 |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
  }


3. शार्ट स्थिति खोलें

शार्ट स्थिति खोलने की शर्तें:

  • CheckCross का उपयोग क्रॉसओवर और लाइनों के बीच के अंतर को बढ़ाने की पुष्टि के लिए किया जाता है;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) और LipsTeethDiff(-1)<=LipsTeethDiff(0); लिप्स और टीथ लाइनों के बीच के अंतर के बढ़ने की जांच;
  • LipsTeethDiff(0)<=0.0; वर्तमान बार की लिप्स लाइन टीथ लाइन से नीची है;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) और TeethJawDiff(-1)<=TeethJawDiff(0); टीथ और जॉ लाइनों के बीच के अंतर के बढ़ने की जांच;
  • TeethJawDiff(0) <=0.0; वर्तमान बार की टीथ लाइन जॉ लाइन से नीची है;
//+------------------------------------------------------------------+
//| शार्ट स्थिति (सेल) खोलने की शर्तों की जांच करता है           |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
      TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


4. शार्ट स्थिति बंद करें

शार्ट स्थिति बंद करने की शर्तें:

  • LipsTeethDiff(-1)>0; अगले बार की लिप्स लाइन (शिफ्ट के कारण) टीथ लाइन से ऊँची है;
  • LipsTeethDiff(0)<=0; वर्तमान बार की लिप्स लाइन टीथ लाइन से नीची/बराबर है;
  • LipsTeethDiff(1)<0; पिछले (पूर्ण) बार की लिप्स लाइन टीथ लाइन से नीची है।
//+------------------------------------------------------------------+

//| शार्ट स्थिति बंद करने की शर्तों की जांच करता है                |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
  }

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

इस रणनीति पर आधारित ट्रेडिंग रोबोट बनाने के लिए, आपको ऑलिगेटर पर आधारित संकेत को चुनना होगा "तैयार-से-निर्मित एक्सपर्ट एडवाइजर्स" विकल्प में MQL5 विजार्ड में:

चित्र 2. MQL5 विजार्ड में ऑलिगेटर पर आधारित संकेत चुनें

चित्र 2. MQL5 विजार्ड में ऑलिगेटर पर आधारित संकेत चुनें

इसके बाद, आपको आवश्यक ट्रेलिंग स्टॉप एल्गोरिदम और पैसे और जोखिम प्रबंधन प्रणाली को निर्दिष्ट करना होगा। एक्सपर्ट एडवाइजर का कोड स्वचालित रूप से बनाया जाएगा, आप इसे संकलित कर सकते हैं और स्ट्रेटेजी टेस्टर में परीक्षण कर सकते हैं, जो मेटाट्रेडर 5 क्लाइंट टर्मिनल का हिस्सा है।


परीक्षण परिणाम

चलिये, एक्सपर्ट एडवाइजर का बैकटेस्टिंग करते हैं, जो ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5) पर आधारित है।

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

चित्र 3. ऑलिगेटर संकेतक पर आधारित व्यापार सिग्नल के साथ एक्सपर्ट एडवाइजर के परीक्षण परिणाम

चित्र 3. ऑलिगेटर संकेतक पर आधारित व्यापार सिग्नल के साथ एक्सपर्ट एडवाइजर के परीक्षण परिणाम


यदि आप डील फ़िल्ट्रेशन का उपयोग करेंगे और समय के अनुसार बाजार की विशेषताओं को ध्यान में रखेंगे, तो लाभ को बढ़ाया जा सकता है। CSignalITF क्लास आपको इंट्राडे टाइम फ़िल्टर जोड़ने की अनुमति देगी। सबसे अच्छे समयों को आप स्ट्रेटेजी टेस्टर का उपयोग करके खोज सकते हैं। उदाहरण के लिए देखें MQL5 विजार्ड - दो EMA के क्रॉसओवर के आधार पर व्यापार संकेतों के साथ इंट्राडे टाइम फ़िल्टर.


संलग्नक: SignalAlligator.mqh में CSignalAlligator क्लास को टर्मिनल डेटा फ़ोल्डर\MQL5\Include\Expert\Signal फ़ोल्डर में रखा जाना चाहिए।

expert_alligator.mq5 में वह कोड है जो MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर की रचना करता है।


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

टिप्पणी (0)