होम तकनीकी संकेतक पोस्ट

MetaTrader 5 पर ATR का उपयोग करने के लिए रिंग बफर से संकेतक बनाना

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

नमस्कार दोस्तों! आज हम बात करेंगे एक ऐसे क्लास की, जिसका उपयोग हम Average True Range (ATR) संकेतक को रिंग बफर की मदद से निकालने के लिए कर सकते हैं। यह क्लास, CATROnRingBuffer, MetaTrader 5 पर ATR की गणना करने के लिए डिजाइन की गई है।

विवरण

CATROnRingBuffer क्लास ATR संकेतक की गणना करने के लिए रिंग बफर के एल्गोरिदम का उपयोग करती है। ATR एक महत्वपूर्ण संकेतक है, जो हमें बाजार की अस्थिरता को समझने में मदद करता है।

घोषणा

class CATROnRingBuffer

फाइल सेटअप

CATROnRingBuffer.mqh फाइल को MQL5\Include\IncOnRingBuffer फोल्डर में रखा जाना चाहिए। इस फोल्डर में इस क्लास का उपयोग करने के लिए कुछ उदाहरण फाइलें भी शामिल हैं। रिंग बफर और Moving Average की क्लास भी इस फोल्डर में होनी चाहिए।

क्लास के तरीके

//--- प्रारंभिककरण विधि:
bool Init(                                // यदि त्रुटि है तो false लौटाता है, यदि सफल - true
   int            ma_period   = 14,       // Moving Average की अवधि
   ENUM_MA_METHOD ma_method   = MODE_SMA, // Moving Average का तरीका
   int            size_buffer = 256,      // रिंग बफर का आकार
   bool           as_series   = false     // यदि समय श्रृंखला है, तो true
   );            
//--- समय श्रृंखला या संकेतक बफर पर आधारित गणना की विधि:          
int MainOnArray(                  // लौटाता है संसाधित तत्वों की संख्या  
   const int     rates_total,     // ऐरे का आकार
   const int     prev_calculated, // पिछले कॉल में संसाधित तत्व
   const double &high[]           // अधिकतम मान ऐरे
   const double &low[]            // न्यूनतम मान ऐरे
   const double &close[]           // बंद कीमत ऐरे
   );

डेटा तक पहुँचने की विधियाँ

//--- डेटा तक पहुँचने की विधियाँ:
int    BarsRequired();   // संकेतक को खींचने के लिए आवश्यक बार की संख्या लौटाता है
string Name();           // संकेतक का नाम लौटाता है
string MAMethod();       // स्मूथिंग का तरीका लौटाता है
int    MAPeriod();       // स्मूथिंग की अवधि लौटाता है
int    Size();           // रिंग बफर का आकार लौटाता है

आप रिंग बफर से संकेतक का डेटा सामान्य ऐरे की तरह प्राप्त कर सकते हैं। उदाहरण के लिए:

#include <IncOnRingBuffer\CATROnRingBuffer.mqh>
CATROnRingBuffer atr;

...

//+------------------------------------------------------------------+
//| कस्टम संकेतक इटरेशन फ़ंक्शन                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
//--- संकेतक की गणना:
   atr.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...

//--- "atr" रिंग बफर से संकेतक में डेटा कॉपी करें:  
   for(int i=start;i<rates_total;i++)
     {
      ATR_Buffer[i]=atr[rates_total-1-i];
     }
   return(rates_total);
  }

ध्यान दें कि रिंग बफर में अनुक्रमण समय श्रृंखला के समान है।

उदाहरण

  1. Test_ATR_OnArrayRB.mq5 फाइल कीमत समय श्रृंखला के आधार पर संकेतक की गणना करती है। यहां MainOnArray() विधि का उपयोग दिखाया गया है।
  2. Test_ATR_OnValueRB.mq5 फाइल MainOnValue() विधि के उपयोग को दर्शाती है। पहले ATR संकेतक की गणना और चित्रण किया जाता है। फिर इस संकेतक के रिंग बफर के आधार पर ATR संकेतक की एक और रेखा की गणना की जाती है।


Test_ATR_OnArrayRB.mq5 के कार्य का परिणाम, जिसमें रिंग बफर का आकार 256 तत्व है



Test_ATR_OnValueRB.mq5 के कार्य का परिणाम, जिसमें रिंग बफर का आकार 256 तत्व है


इस कोड लेखन में MetaQuotes Software Corp.Integer  और GODZILLA के विकास का उपयोग किया गया है।

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

टिप्पणी (0)