विवरण
COsMAOnRingBuffer क्लास का उद्देश्य तकनीकी संकेतक मूविंग एवरेज ऑफ ओस्सीलेटर (मूविंग एवरेज ऑफ ओस्सीलेटर, OsMA) की गणना करना है, जो कि रिंग बफर के एल्गोरिदम का उपयोग करता है।
घोषणा
class COsMAOnRingBuffer : public CArrayRing
शीर्षक
#include <IncOnRingBuffer\COsMAOnRingBuffer.mqh>COsMAOnRingBuffer.mqh क्लास की फाइल को MQL5\Include\ में स्थापित होने वाले IncOnRingBuffer फ़ोल्डर में रखा जाना चाहिए। इस फ़ोल्डर से क्लास द्वारा उपयोग किए गए उदाहरणों की दो फाइलें विवरण के साथ संलग्न हैं। रिंग बफर, MACD और मूविंग एवरेज क्लास की फाइलें भी इस फ़ोल्डर में होनी चाहिए।
क्लास विधियाँ
//--- आरंभिककरण विधि: bool Init( // यदि त्रुटि हुई तो false लौटाता है, यदि सफल - true int fast_period = 12, // तेज मूविंग एवरेज का अवधि int slow_period = 26, // धीमी मूविंग एवरेज का अवधि int signal_period = 9, // सिग्नल मूविंग एवरेज का अवधि ENUM_MA_METHOD fast_method = MODE_EMA, // तेज मूविंग एवरेज का विधि ENUM_MA_METHOD slow_method = MODE_EMA, // धीमी मूविंग एवरेज का विधि ENUM_MA_METHOD signal_method = MODE_SMA, // सिग्नल मूविंग एवरेज का विधि int size_buffer = 256, // रिंग बफर का आकार bool as_series = false // true, यदि समय श्रृंखला है, false यदि सामान्य डेटा है );
//--- समय श्रृंखला या संकेतक बफर पर आधारित गणना विधि: int MainOnArray( // संसाधित तत्वों की संख्या लौटाता है const int rates_total, // ऐरे का आकार const int prev_calculated, // पिछले कॉल पर संसाधित तत्व const double &array[] // इनपुट मानों का ऐरे );
//--- ऐरे के अलग-अलग श्रृंखला तत्वों पर आधारित गणना विधि double MainOnValue( // सेट तत्व के लिए OsMA मान लौटाता है const int rates_total, // ऐरे का आकार const int prev_calculated, // ऐरे के संसाधित तत्व const int begin, // ऐरे के महत्वपूर्ण डेटा की शुरुआत const double value, // ऐरे के महत्वपूर्ण तत्व const int index // तत्व का अनुक्रमांक );
//--- डेटा तक पहुँचने के विधियाँ: int BarsRequired(); // संकेतक को खींचने के लिए आवश्यक बार की संख्या लौटाता है string Name() // संकेतक का नाम लौटाता है string FastMethod() // तेज रेखा के स्मूथिंग विधि को टेक्स्ट में लौटाता है string SlowMethod() // धीमी रेखा के स्मूथिंग विधि को टेक्स्ट में लौटाता है string SignalMethod() // सिग्नल रेखा के स्मूथिंग विधि को टेक्स्ट में लौटाता है int FastPeriod() // तेज रेखा के स्मूथिंग अवधि लौटाता है int SlowPeriod() // धीमी रेखा के स्मूथिंग अवधि लौटाता है int SignalPeriod() // सिग्नल रेखा के स्मूथिंग अवधि लौटाता है int Size(); // रिंग बफर का आकार लौटाता है
रिंग बफर से संकेतक के गणनांकित डेटा को सामान्य ऐरे की तरह प्राप्त किया जा सकता है। उदाहरण के लिए:
//--- संकेतक गणना के विधियों के साथ क्लास OsMA: #include <IncOnRingBuffer\COsMAOnRingBuffer.mqh> COsMAOnRingBuffer osma; ... //+------------------------------------------------------------------+ //| कस्टम संकेतक इटरेशन फ़ंक्शन | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- मूल्य समय श्रृंखला के आधार पर संकेतक की गणना: osma.MainOnArray(rates_total,prev_calculated,price); ... //--- "osma" रिंग बफर से डेटा का उपयोग करें, // संकेतक बफर में डेटा कॉपी करें: for(int i=start;i<rates_total;i++) OsMABuffer[i]=osma[rates_total-1-i]; // संकेतक हिस्टोग्राम //--- अगले कॉल के लिए prev_calculated का लौटने वाला मान: return(rates_total); }
कृपया ध्यान दें कि रिंग बफर में अनुक्रमण वही है जैसा कि समय श्रृंखला में है।
उदाहरण
- Test_OsMA_OnArrayRB.mq5 फ़ाइल मूल्य समय श्रृंखला के आधार पर संकेतक की गणना करती है। MainOnArray() विधि का अनुप्रयोग प्रदर्शित किया गया है।
- Test_OsMA_OnValueRB.mq5 फ़ाइल MainOnValue() विधि का उपयोग प्रदर्शित करती है। पहले OsMA संकेतक की गणना की जाती है और खींची जाती है। फिर इस संकेतक के रिंग बफर के आधार पर एक और OsMA संकेतक खींचा जाता है।

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

Test_OsMA_OnValueRB.mq5 के कार्य का परिणाम, जिसमें रिंग बफर का आकार 256 तत्व हैं।
कोड लिखने में MetaQuotes Software Corp., Integer और GODZILLA के विकास का उपयोग किया गया था।
संबंधित पोस्ट
- ओपन रेंज ब्रेकआउट इंडिकेटर: ट्रेडिंग में लाभ उठाने का तरीका
- Master Tools: MetaTrader 4 के लिए बेहतरीन इंडिकेटर
- FX Multi-Meter II: एक सम्पूर्ण ट्रेडिंग संकेतक
- नेचुरल नेटवर्क का उपयोग करके अगली कीमत की भविष्यवाणी कैसे करें
- iSpread: मेटा ट्रेडर 5 के लिए स्प्रेड इंडिकेटर जो पेयर ट्रेडिंग को आसान बनाता है