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

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

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

विवरण

CFractalsOnRingBuffer फ्रैक्टल्स तकनीकी संकेतक (फ्रैक्टल्स) की गणना के लिए डिज़ाइन किया गया है, जो रिंग बफर के एल्गोरिदम का उपयोग करता है।

घोषणा

class CFractalsOnRingBuffer

शीर्षक

#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>

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

कक्षा के तरीके

//--- प्रारंभिककरण विधि:
bool Init(                      // यदि त्रुटि है तो false लौटाता है, यदि सफल - true
   int  bars_right  = 2,        // चरम बिंदु से दाईं ओर की बार की संख्या
   int  bars_left   = 2,        // चरम बिंदु से बाईं ओर की बार की संख्या
   int  size_buffer = 256,        // रिंग बफर का आकार
   bool as_series   = false     // true, यदि समय श्रृंखला, अन्यथा - false
   );
//--- समय श्रृंखला या संकेतक बफर के आधार पर गणना करने की विधि:
int MainOnArray(                  // संसाधित तत्वों की संख्या लौटाता है
   const int     rates_total,     // ऐरे का आकार
   const int     prev_calculated, // पिछली कॉल में संसाधित तत्व
   const double& high[],          // अधिकतम का ऐरे
   const double& low[],           // न्यूनतम का ऐरे
   );
//--- अलग श्रृंखला तत्वों के आधार पर ऊपर के फ्रैक्टल की गणना करने की विधि:
double MainOnHigh(               // index-bars_right तत्व (बार) के लिए ऊपर का फ्रैक्टल मान लौटाता है
   const int    rates_total,     // ऐरे का आकार
   const int    prev_calculated, // ऐरे के संसाधित तत्व
   const int    begin,           // ऐरे के महत्वपूर्ण डेटा से शुरू होता है
   const double high,            // वर्तमान बार अधिकतम
   const int    index            // वर्तमान तत्व (बार) इंडेक्स
   );
//--- अलग श्रृंखला तत्वों के आधार पर नीचे के फ्रैक्टल की गणना करने की विधि:
double MainOnLow(                // index-bars_right तत्व (बार) के लिए नीचे का फ्रैक्टल मान लौटाता है
   const int    rates_total,     // ऐरे का आकार
   const int    prev_calculated, // ऐरे के संसाधित तत्व
   const int    begin,           // ऐरे के महत्वपूर्ण डेटा से शुरू होता है
   const double low,             // वर्तमान बार न्यूनतम, वर्तमान ऐरे तत्व अधिकतम
   const int    index            // वर्तमान तत्व (बार) इंडेक्स
   );
//--- डेटा तक पहुँचने के तरीके:
int    BarsRequired();  // संकेतक को खींचने के लिए आवश्यक बार की संख्या लौटाता है
string Name();          // संकेतक का नाम लौटाता है
string NameUpper()      // ऊपर के फ्रैक्टल का नाम लौटाता है
string NameLower()      // नीचे के फ्रैक्टल का नाम लौटाता है
int    BarsRight()      // चरम बिंदु से दाईं ओर की बार की संख्या लौटाता है
int    BarsLeft()       // चरम बिंदु से बाईं ओर की बार की संख्या लौटाता है
int    Size();          // रिंग बफर का आकार लौटाता है

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

//--- फ्रैक्टल संकेतक की गणना करने वाली कक्षा:
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>
CFractalsOnRingBuffer fractals;

...

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

...

//--- "फ्रैक्टल्स" रिंग बफर से डेटा का उपयोग करें,
//    उदाहरण के लिए, डेटा को संकेतक बफर में कॉपी करें:
   for(int i=start;i<rates_total-BarsRight && !IsStopped();i++)
     {
      UpperBuffer[i] = fractals.upper[rates_total-1-i]; // ऊपर फ्रैक्टल
      LowerBuffer[i] = fractals.lower[rates_total-1-i]; // नीचे फ्रैक्टल
     }

...

//--- अगली कॉल के लिए prev_calculated का लौटने का मान:
   return(rates_total);
  }

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

उदाहरण

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


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



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

 

कोड लिखते समय MetaQuotes Software Corp.Integer  और GODZILLA के विकास का उपयोग किया गया था।

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

टिप्पणी (0)