당사 팬 페이지에 가입하십시오
The class for drawing the AMA using the ring buffer - MetaTrader 5용 지표
- 조회수:
- 6903
- 평가:
- 게시됨:
- 2013.01.08 14:46
- 업데이트됨:
- 2016.11.22 07:32
- 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
Description
The CAMAOnRingBuffer class is designed for calculation of the technical indicator Adaptive Moving Average (Adaptive Moving Average, AMA) using the algorithm of the ring buffer.
Declaration
class CAMAOnRingBuffer : public CArrayRing
Title
#include <IncOnRingBuffer\CAMAOnRingBuffer.mqh>
File of the CAMAOnRingBuffer.mqh class must be placed in the IncOnRingBuffer folder that need to be established in MQL5\Include\. Two files with the examples used by the class from this folder are attached to the description. File of the class of the ring buffer and the class of Efficiency Ratio also must be in this folder.
Class methods
//--- initialization method: bool Init( // if error it returns false, if successful - true int period = 10, // the period of AMA int fast_period = 2, // the period of fast EMA int slow_period = 30, // the period of slow EMA int size_buffer = 256, // the size of the ring buffer, the number of stored data bool as_series = false // true, if a time series, false - if a usual indexing of the input data );
//--- the method of calculation based on a time series or indicator buffer: int MainOnArray( // returns the number of processed elements const int rates_total, // the size of the array array[] const int prev_calculated, // processed elements on the previous call const double &array[] // the array of the input values );
//--- //--- the method of calculation based on the separate series elements of the array
double MainOnValue( // returns the AMA value for the set element
const int rates_total, // the size of the array
const int prev_calculated, // processed elements of the array
const int begin, // from where the significant data of the array starts
const double value, // the element value of the array
const int index // the element index
);
//--- methods of access to the data: int BarsRequired(); // Returns the necessary number of bars to draw the indicator string Name(); // Returns the name of the indicator string FastPeriod(); // Returns the period of fast EMA smoothing int SlowPeriod(); // Returns the period of slow EMA smoothing int Period(); // Returns the period of AMA int Size(); // Returns the size of the ring buffer
To get the calculated data of the indicator from the ring buffer is possible as from the usual array. For example:
//--- the class with methods of calculation of the AMA indicator: #include <IncOnRingBuffer\CAMAOnRingBuffer.mqh> CAMAOnRingBuffer ama; ... //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- calculation of the indicator based onprice time series: ama.MainOnArray(rates_total,prev_calculated,price); ... //--- use the data from the ring buffer "ama", // for example, copy the data in the indicator buffer: for(int i=start;i<rates_total;i++) AMA_Buffer[i] = ama[rates_total-1-i]; // indicator line //--- return value of prev_calculated for next call: return(rates_total); }
Please note that indexing in the ring buffer is the same as in the time series.
Examples
- The Test_AMA_OnArrayRB.mq5 file calculates the indicator based on price time series. The MainOnArray() method application is demonstrated
- The Test_AMA_OnValueRB.mq5 file demonstrates the use of the MainOnValue() method. At first the AMA indicator is calculated and drawn. Then on the basis of this indicator ring buffer one more AMA is drawn.
The result of the work of the Test_AMA_OnArrayRB.mq5 with the size of the ring buffer of 256 elements When writing code the developments of MetaQuotes Software Corp., Integer and GODZILLA were used.
The result of the work of the Test_AMA_OnValueRB.mq5 with the size of the ring buffer of 256 elements
MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/1375
The oscillator using T3 averaging from the Technical Analysis of Stocks and Commodities (Dec. 2004).
WcciPatternsThe Woodies CCI Paterns indicator
The class is designed for calculation of a technical indicator Money Flow Index (Money Flow Index, MFI) using the algorithm of the ring buffer.
MACDWaterlineCrossExpectator, the effectiveness of a MACD systemThis is the classical trading system which consists in buying when MACD crosses above the waterline line and selling when crosses below it. This EA works along with a monetary management system which has a positive mathematical expectation.