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

ADX Wilder इंडिकेटर के लिए रिंग बफर का उपयोग कैसे करें - MetaTrader 5 के लिए क्लास

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

विवरण

CADXWOnRingBuffer क्लास का उद्देश्य तकनीकी इंडिकेटर Average Directional Movement Index Wilder (Average Directional Movement Index Wilder, ADX Wilder) की गणना करना है, जो रिंग बफर एल्गोरिदम का उपयोग करता है।

घोषणा

class CADXWOnRingBuffer

शीर्षक

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>

CADXWOnRingBuffer.mqh क्लास की फ़ाइल को MQL5\Include\ में स्थापित करने की आवश्यकता है। इस फ़ोल्डर में उपयोग के लिए क्लास से संबंधित दो फ़ाइलें शामिल हैं। रिंग बफर और मूविंग एवरेज क्लास की फ़ाइल भी इस फ़ोल्डर में होनी चाहिए।

क्लास विधियाँ

//--- प्रारंभिककरण विधि:
bool Init(                                 // यदि त्रुटि है तो false, यदि सफल - true लौटाता है
   int            ma_period   = 14,        // मूविंग एवरेज समतलन की अवधि
   ENUM_MA_METHOD ma_method   = MODE_SMMA, // मूविंग एवरेज समतलन की विधि
   int            size_buffer = 256,       // रिंग बफर का आकार, संग्रहीत डेटा की संख्या
   bool           as_series   = false      // सही, यदि समय श्रृंखला, गलत - यदि सामान्य डेटा का अनुक्रमण
   );             
//--- समय श्रृंखला या संकेतक बफर पर आधारित गणना की विधि:          
int MainOnArray(                  // संसाधित तत्वों की संख्या लौटाता है  
   const int     rates_total,     // ऐरे का आकार
   const int     prev_calculated, // पिछले कॉल में संसाधित तत्व
   const double &high[]           // अधिकतम मूल्य ऐरे
   const double &low[]            // न्यूनतम मूल्य ऐरे
   const double &close[]           // क्लोज प्राइस ऐरे
   );
//--- ऐरे में अलग-अलग श्रृंखला तत्वों के आधार पर गणना की विधि           
double MainOnValue(              // सेट किए गए तत्व के लिए ADXW मान लौटाता है
   const int    rates_total,     // ऐरे का आकार
   const int    prev_calculated, // ऐरे के संसाधित तत्व
   const int    begin,           // ऐरे के महत्वपूर्ण डेटा की शुरुआत
   const double high,            // अधिकतम मूल्य
   const double low,             // न्यूनतम मूल्य
   const double close,           // क्लोज प्राइस
   const int    index            // तत्व का अनुक्रमांक
   );
//--- डेटा तक पहुँचने की विधियाँ:
int    BarsRequired();   // संकेतक को खींचने के लिए आवश्यक बार की संख्या लौटाता है
string NameADXW();       // संकेतक का नाम लौटाता है
string NameNDI();        // नकारात्मक दिशात्मक आंदोलन संकेतक रेखा का नाम लौटाता है
string NamePDI();        // सकारात्मक दिशात्मक संकेतक रेखा का नाम लौटाता है
string MAMethod();       // समतलन की विधि को पाठ पंक्ति के रूप में लौटाता है  
int    MAPeriod();       // समतलन की अवधि लौटाता है
int    Size();           // रिंग बफर का आकार लौटाता है

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

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>
CADXWOnRingBuffer adxw;

...

//+------------------------------------------------------------------+
//| कस्टम संकेतक पुनरावृत्ति कार्य                              |
//+------------------------------------------------------------------+
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[])
  {
//--- संकेतक की गणना:
   adxw.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...
     
//--- संकेतक में "adxw" रिंग बफर से डेटा कॉपी करें:
   for(int i=start;i<rates_total;i++)
     {
      ADXW_Buffer[i] = adxw[rates_total-1-i];      // औसत दिशात्मक आंदोलन इंडेक्स वाइल्डर
      PDI_Buffer[i]  = adxw.pdi[rates_total-1-i];  // सकारात्मक दिशात्मक इंडेक्स
      NDI_Buffer[i]  = adxw.ndi[rates_total-1-i];  // नकारात्मक दिशात्मक इंडेक्स
     }

   ...
  }

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

उदाहरण

  1. The Test_ADXW_OnArrayRB.mq5 फ़ाइल मूल्य समय श्रृंखला के आधार पर संकेतक की गणना करती है। MainOnArray() विधि का उपयोग प्रदर्शित किया गया है।
  2. The Test_ADXW_OnValueRB.mq5 फ़ाइल MainOnValue() विधि के उपयोग को प्रदर्शित करती है। पहले ADXW संकेतक की गणना की जाती है और खींची जाती है। फिर इस संकेतक के रिंग बफर के आधार पर ADXW संकेतक की तीन रेखाओं की गणना की जाती है।


Test_ADXW_OnArrayRB.mq5 का कार्य का परिणाम, रिंग बफर का आकार 256 तत्व



Test_ADXW_OnValueRB.mq5 का कार्य का परिणाम, रिंग बफर का आकार 256 तत्व

 

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

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

टिप्पणी (0)