MQL5 विजार्ड - तीन मूविंग एवरेजेस पर आधारित ट्रेड सिग्नल्स

Mike 2011.01.10 19:41 22 0 0
संलग्नक

MQL5 विजार्ड का उपयोग करके आप अपने एक्सपर्ट एडवाइजर्स का कोड अपने आप बना सकते हैं। अधिक जानकारी के लिए देखें MQL5 विजार्ड में तैयार-निर्मित एक्सपर्ट एडवाइजर्स बनाना.

यहां हम एक ट्रेंड रणनीति पर चर्चा करेंगे, जो तीन मूविंग एवरेजेस पर आधारित है। इस रणनीति को "तीन EMA पर आधारित सिग्नल्स" कहा जाता है। यह रणनीति तीन एक्सपोनेंशियल मूविंग एवरेजेस का उपयोग करती है: FastEMA, MediumEMA और SlowEMA।

ट्रेड सिग्नल्स:

  • खरीदने का सिग्नल: FastEMA > MediumEMA > SlowEMA (ऊपर की ओर ट्रेंड).
  • बेचने का सिग्नल: FastEMA < MediumEMA < SlowEMA (नीचे की ओर ट्रेंड).

यह रणनीति CSignal3EMA क्लास में लागू की गई है (signal3ema.mqh को terminal_data_folder\MQL5\Include\Expert\Signal\Signal3EMA.mqh में रखना होगा).

चित्र 1. तीन मूविंग एवरेजेस पर आधारित ट्रेड सिग्नल

चित्र 1. तीन मूविंग एवरेजेस पर आधारित ट्रेड सिग्नल

ट्रेड सिग्नल्स

यह ट्रेडिंग रणनीति CSignal3EMA क्लास में लागू की गई है, जिसमें तीन मूविंग एवरेजेस (फास्ट, मीडियम, स्लो) के मानों तक पहुंच को सरल बनाने के लिए कुछ सुरक्षित तरीके हैं:

double  FastEMA(int ind)      // बार का फास्ट EMA मान लौटाता है
double  MediumEMA(int ind)      // बार का मीडियम EMA मान लौटाता है
double  SlowEMA(int ind)      // बार का स्लो EMA मान लौटाता है
0वें (अपूर्ण) बार के संकेतक मान बदल सकते हैं, इसलिए ट्रेड की स्थिति की जांच करना आवश्यक है कि पूर्ण (बनाए गए) बार के डेटा का उपयोग करें।

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

ऊपर की ओर का ट्रेंड निम्नलिखित शर्तों से निर्धारित होता है: FastEMA > MediumEMA > SlowEMA:

  • FastEMA(1) > MediumEMA(1): फास्ट EMA, मीडियम EMA से ऊपर है (अंतिम पूर्ण बार);
  • MediumEMA(2) > SlowEMA(1): मीडियम EMA, स्लो EMA से ऊपर है (अंतिम पूर्ण बार);
//+------------------------------------------------------------------+
//| लंबी स्थिति खोलने की शर्तों की जांच करता है (खरीदें)              |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//--- अंतिम पूर्ण बार पर ऊपर की ओर के ट्रेंड की जांच: FastEMA(1) > MediumEMA(1) > SlowEMA(1)
    return(FastEMA(1)>medium && medium>SlowEMA(1));
  }


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

नीचे की ओर का ट्रेंड निम्नलिखित शर्तों से निर्धारित होता है: FastEMA < MediumEMA < SlowEMA:

  • FastEMA(1) < MediumEMA(1): फास्ट EMA, मीडियम EMA से नीचे है (अंतिम पूर्ण बार);
  • MediumEMA(2) < SlowEMA(1): मीडियम EMA, स्लो EMA से नीचे है (अंतिम पूर्ण बार);
//+------------------------------------------------------------------+
//| शॉर्ट स्थिति बंद करने की शर्तों की जांच करता है                     |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseLong(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- अंतिम पूर्ण बार पर ऊपर की ओर के ट्रेंड की जांच: FastEMA(1) < MediumEMA(1) < SlowEMA(1)
   return(FastEMA(1)1));
  }
आप लंबी स्थिति को बंद करने में सुधार कर सकते हैं: नीचे की ओर के ट्रेंड की प्रतीक्षा करने की आवश्यकता नहीं है, आप लंबी स्थितियों को तब बंद कर सकते हैं जब यह फ्लैट हो, जिसे निम्नलिखित शर्तों से निर्धारित किया जा सकता है: FastEMA < MediumEMA > SlowEMA.


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

//+------------------------------------------------------------------+
//| शॉर्ट स्थिति खोलने की शर्तों की जांच करता है (बेचें)              |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//--- अंतिम पूर्ण बार पर नीचे की ओर के ट्रेंड की जांच: FastEMA(1) < MediumEMA(1) < SlowEMA(1)
   return(FastEMA(1)1));
  }

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

//+------------------------------------------------------------------+
//| शॉर्ट स्थिति बंद करने की शर्तों की जांच करता है                    |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseShort(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- अंतिम पूर्ण बार पर ऊपर की ओर के ट्रेंड की जांच: FastEMA(1) > MediumEMA(1) > SlowEMA(1)
   return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

आप शॉर्ट स्थिति को बंद करने में सुधार कर सकते हैं: ऊपर की ओर के ट्रेंड की प्रतीक्षा करने की आवश्यकता नहीं है, आप शॉर्ट स्थितियों को तब बंद कर सकते हैं जब यह फ्लैट हो, जिसे निम्नलिखित शर्तों से निर्धारित किया जा सकता है: FastEMA > MediumEMA < SlowEMA.


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

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

चित्र 2. MQL5 विजार्ड में

चित्र 2. MQL5 विजार्ड में "तीन EMA पर आधारित सिग्नल्स" चुनें

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


टेस्टिंग परिणाम

चलिये एक्सपर्ट एडवाइजर के बैकटेस्टिंग पर चर्चा करते हैं, जो ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900) पर आधारित है।

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

चित्र 3. तीन EMA पर आधारित एक्सपर्ट एडवाइजर के ऐतिहासिक बैकटेस्टिंग परिणाम

चित्र 3. तीन EMA पर आधारित एक्सपर्ट एडवाइजर के ऐतिहासिक बैकटेस्टिंग परिणाम

संलग्नक: Signal3EMA.mqh, जिसमें CSignal3EMA क्लास है, को terminal_data_folder\MQL5\Include\Expert\Signal में रखा जाना चाहिए।

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


सूची
टिप्पणी 0