विवरण
CADXOnRingBuffer क्लास का उपयोग तकनीकी इंडिकेटर Average Directional Movement Index (Average Directional Movement Index, ADX) की गणना के लिए किया जाता है। यह रिंग बफर के एल्गोरिदम का उपयोग करता है।
घोषणा
class CADXOnRingBufferशीर्षक
#include <IncOnRingBuffer\CADXOnRingBuffer.mqh>CADXOnRingBuffer.mqh क्लास की फाइल को MQL5\Include में बनाए जाने वाले IncOnRingBuffer फ़ोल्डर में रखा जाना चाहिए। इस फ़ोल्डर से क्लास द्वारा उपयोग किए जाने वाले उदाहरणों की दो फाइलें विवरण में संलग्न हैं। रिंग बफर की क्लास और Moving Average की क्लास भी इस फ़ोल्डर में होनी चाहिए।
क्लास के तरीके
//--- प्रारंभिककरण विधि: bool Init( // यदि त्रुटि है तो यह false लौटाता है, यदि सफल - true int ma_period = 14, // मूविंग एवरेज स्मूथिंग की अवधि ENUM_MA_METHOD ma_method = MODE_EMA, // मूविंग एवरेज स्मूथिंग की विधि 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( // सेट तत्व के लिए ADX मान लौटाता है 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 NameADX(); // इंडिकेटर का नाम लौटाता है string NameNDI(); // नकारात्मक दिशा गति इंडिकेटर लाइन का नाम लौटाता है string NamePDI(); // सकारात्मक दिशा गति इंडिकेटर लाइन का नाम लौटाता है string MAMethod(); // स्मूथिंग विधि का नाम पाठ में लौटाता है int MAPeriod(); // स्मूथिंग की अवधि लौटाता है int Size(); // रिंग बफर का आकार लौटाता है
रिंग बफर से इंडिकेटर का गणना किया गया डेटा सामान्य एरे की तरह प्राप्त किया जा सकता है। उदाहरण के लिए:
#include <IncOnRingBuffer\CADXOnRingBuffer.mqh> CADXOnRingBuffer adx; ... //+------------------------------------------------------------------+ //| कस्टम इंडिकेटर पुनरावृत्ति फ़ंक्शन | //+------------------------------------------------------------------+ 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[]) { //--- इंडिकेटर की गणना: adx.MainOnArray(rates_total,prev_calculated,high,low,close); ... //--- "adx" रिंग बफर से डेटा को इंडिकेटर में कॉपी करें: for(int i=start;i<rates_total;i++) { ADX_Buffer[i]=adx[rates_total-1-i]; // औसत दिशा गति सूचकांक PDI_Buffer[i]=adx.pdi[rates_total-1-i]; // सकारात्मक दिशा सूचकांक NDI_Buffer[i]=adx.ndi[rates_total-1-i]; // नकारात्मक दिशा सूचकांक } ... }
कृपया ध्यान दें कि रिंग बफर में अनुक्रमण समय श्रृंखला की तरह ही है।
उदाहरण
- Test_ADX_OnArrayRB.mq5 फ़ाइल मूल्य समय श्रृंखला के आधार पर इंडिकेटर की गणना करती है। MainOnArray() विधि का उपयोग प्रदर्शित किया गया है।
- Test_ADX_OnValueRB.mq5 फ़ाइल MainOnValue() विधि के उपयोग का प्रदर्शन करती है। सबसे पहले ADX इंडिकेटर की गणना और चित्रण किया जाता है। फिर इस इंडिकेटर के रिंग बफर के आधार पर ADX इंडिकेटर की तीन रेखाएँ गणना की जाती हैं।

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

Test_ADX_OnValueRB.mq5 के काम का परिणाम, रिंग बफर का आकार 256 तत्व है
कोड लिखने में MetaQuotes Software Corp., Integer और GODZILLA के विकासों का उपयोग किया गया था।
संबंधित पोस्ट
- ओपन रेंज ब्रेकआउट इंडिकेटर: ट्रेडिंग में लाभ उठाने का तरीका
- Volume Profile + Range v6.0: MetaTrader 5 के लिए नया इंडिकेटर
- iSpread: मेटा ट्रेडर 5 के लिए स्प्रेड इंडिकेटर जो पेयर ट्रेडिंग को आसान बनाता है
- Volume Profile + Range v6.0: MetaTrader 5 के लिए एक बेहतरीन संकेतक
- बोलिंजर स्क्वीज़ एडवांस्ड MT5 - आपके ट्रेडिंग के लिए परफेक्ट इंडिकेटर