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

MetaTrader 5 के लिए रिंग बफर का उपयोग करके Stochastic ऑस्सीलेटर कैसे बनाएं

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

विवरण

CStochasticOnRingBuffer क्लास का उपयोग स्टोकास्टिक ऑस्सीलेटर (Stochastic Oscillator) तकनीकी संकेतक की गणना के लिए किया जाता है। यह रिंग बफर के एल्गोरिदम का उपयोग करता है।

घोषणा

class CStochasticOnRingBuffer

शीर्षक

#include <IncOnRingBuffer\CStochasticOnRingBuffer.mqh>

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

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

//--- प्रारंभिककरण विधि:
bool Init(  // यदि त्रुटि है तो false लौटाएगा, यदि सफल - true
  int period_k  = 5, // %K की अवधि
  int period_d  = 3, // %D की अवधि
  int period_s  = 3, // %K की धीमी अवधि
  ENUM_MA_METHOD method = MODE_SMA, // %D का तरीका
  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[] // न्यूनतम मूल्य ऐरे
  const double &close[] // बंद मूल्य ऐरे
  );
//--- ऐरे के अलग-अलग श्रृंखला तत्वों पर आधारित गणना विधि:
double MainOnValue( // लौटाता है कि सेट तत्व के लिए स्टोकास्टिक मान
  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 Name(); // संकेतक का नाम लौटाता है
string NameSignal(); // संकेतक की सिग्नल लाइन का नाम लौटाता है
string Method(); // स्मूथिंग का तरीका टेक्स्ट लाइन के रूप में लौटाता है
int PeriodK() // %K की अवधि लौटाता है
int PeriodS() // %K की धीमी अवधि लौटाता है
int PeriodD() // %D की अवधि लौटाता है
int Size(); // रिंग बफर का आकार लौटाता है

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

//--- स्टोकास्टिक संकेतक की गणना करने के तरीके के साथ क्लास:
#include <IncOnRingBuffer\CStochasticOnRingBuffer.mqh>
CStochasticOnRingBuffer st;

...

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

...

//--- रिंग बफर से "st" के डेटा का उपयोग करें,
//    उदाहरण के लिए, संकेतक बफर में डेटा की नकल करें:
   for(int i=start; i<rates_total && !IsStopped(); i++)
   {
     MainBuffer[i] = st[rates_total-1-i];         // संकेतक की मुख्य लाइन
     SignalBuffer[i] = st.signal[rates_total-1-i]; // संकेतक की सिग्नल लाइन
   }

...

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

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

उदाहरण

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


Test_Stochastic_OnArrayRB.mq5 का परिणाम, रिंग बफर का आकार 256 तत्व है



Test_Stochastic_OnValueRB.mq5 का परिणाम, रिंग बफर का आकार 256 तत्व है

 

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

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

टिप्पणी (0)