- 显示:
- 1799
- 等级:
- 已发布:
- 2014.02.07 08:12
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
描述
CAMAOnRingBuffer 类设计为使用环形缓冲区算法计算自适应移动平均技术指标 (Adaptive Moving Average, AMA).
声明
class CAMAOnRingBuffer : public CArrayRing
标题
#include <IncOnRingBuffer\CAMAOnRingBuffer.mqh>
CAMAOnRingBuffer.mqh 类文件必须放置在 IncOnRingBuffer 文件夹下, 而该文件夹需要在 MQL5\Include\ 目录下创建. 在描述部分附加了使用本类的两个例子文件. 环形缓冲区类文件和效率比率类文件也必须在此文件夹下.
类方法
//--- 初始化方法: bool Init( // 如果出错返回false, 如果成功返回true int period = 10, // AMA 周期数 int fast_period = 2, // 快速 EMA 周期数 int slow_period = 30, // 慢速 EMA 周期数 int size_buffer = 256, // 环形缓冲区大小, 储存的数据数 bool as_series = false // 如果是时间序列为true, 如果是通常数据的索引方式则为false );
//--- 基于时间序列或指标缓冲区的计算的方法: int MainOnArray( // 返回处理过的元素数量 const int rates_total, // 数组 array[] 的大小 const int prev_calculated, // 前一次调用处理的元素数量 const double &array[] // 输入数值的数组 );
//--- //--- 基于数组中独立序列元素计算的方法
double MainOnValue( // 返回集合元素的 AMA 值
const int rates_total, // 数组的大小
const int prev_calculated, // 数组中处理过的元素数量
const int begin, // 数据在数组中的起点
const double value, // 数组中的元素值
const int index // 元素索引
);
//--- 访问数据的方法: int BarsRequired(); // 返回绘制指标所需的柱数 string Name(); // 返回指标名称 string FastPeriod(); // 返回快速EMA平滑周期数 int SlowPeriod(); // 返回慢速EMA平滑周期数 int Period(); // 返回AMA周期数 int Size(); // 返回环形缓冲区的大小
以通常数组的方式从环形缓冲区取得计算的指标值. 例子:
//--- 包含计算 AMA 指标方法的类: #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[]) { //--- 基于价格时间序列计算指标: ama.MainOnArray(rates_total,prev_calculated,price); ... //--- 使用环形缓冲区 "ama", // 例如把数据复制到指标缓冲区: for(int i=start;i<rates_total;i++) AMA_Buffer[i] = ama[rates_total-1-i]; // 指标线 //--- 返回 prev_calculated 的值以便下次调用: return(rates_total); }
请注意环形缓冲区的索引方式和时间序列相同.
例子
- Test_AMA_OnArrayRB.mq5 文件基于价格时间序列计算指标. 演示了 MainOnArray() 方法的应用
- Test_AMA_OnValueRB.mq5 文件演示了 MainOnValue() 方法的使用. 首先计算和绘制AMA指标. 然后在指标环形缓冲区基础上绘制另外一条AMA.
Test_AMA_OnArrayRB.mq5 使用256个元素大小环形缓冲区的运行结果 在MetaQuotes 软件公司.开发过程中, 使用了Integer 和 GODZILLA的部分代码.
Test_AMA_OnValueRB.mq5 使用256个元素大小环形缓冲区的运行结果
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/1375

本类使用环形缓冲区算法绘制效率比率技术指标(Efficiency Ratio, ER).

本类设计为使用环形缓冲区计算技术指标随机振荡指标 (Stochastic Oscillator).

基于突破柱和极值距离定义的趋势指标的第二版 (编辑并增添版). 增加了突破水平和前面趋势的大小参数.

本类是 CArrayRing 类的简化版本: 它预定义了 256 个元素的固定大小, 它更快, 并且允许在EA交易或指标中作为迷你时间序列, 指标迷你缓冲区, 以及用于保存中间过程流数据的小缓冲区.