- 显示:
- 1475
- 等级:
- 已发布:
- 2014.02.07 08:10
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
描述
CEROnRingBuffer 类使用环形缓冲区算法自适应移动平均(Adaptive Moving Average, AMA) 中使用的技术指标效率比率(ER).
声明
class CEROnRingBuffer : public CArrayRing
标题
#include <IncOnRingBuffer\CEROnRingBuffer.mqh>
CEROnRingBuffer.mqh 类文件必须放置在 IncOnRingBuffer 文件夹下, 该文件夹需要在 MQL5\Include\ 目录下创建. 在描述部分附加了使用本类的两个例子文件. 环形缓冲区的类文件也必须在此文件夹下.
类方法
//--- initialization method: bool Init( // 如果失败返回false, 如果成功返回true int period = 34, // 计算ER的周期数 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( // 返回集合元素的 ER 数值
const int rates_total, // 数组的大小
const int prev_calculated, // 处理过的数组元素数量
const int begin, // 数组元素起点
const double value, // 数组中的元素数
const int index // 元素索引
);
//--- 访问数据的方法: int BarsRequired(); // 返回绘制指标所需的柱数 string Name() // 返回指标名称 int Period() // 返回 ER 计算周期数 int Size(); // 返回环形缓冲区大小
以通常数组的方式从环形缓冲区取得计算的指标值. 例子:
//--- 用于计算ER指标方法的类: #include <IncOnRingBuffer\CEROnRingBuffer.mqh> CEROnRingBuffer er; ... //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- 基于价格时间序列的计算: er.MainOnArray(rates_total,prev_calculated,price); ... //--- 使用来自环形缓冲区 "er" 的数据, // 例如把数据复制到指标缓冲区: for(int i=start;i<rates_total;i++) { ER_Buffer[i] = er[rates_total-1-i]; // indicator line } //--- 返回 prev_calculated 值用于下次调用: return(rates_total); }
请注意环形缓冲区的索引方式和时间序列相同.
例子
- Test_ER_OnArrayRB.mq5 文件基于价格时间序列计算指标. 演示了 MainOnArray() 方法的应用
- Test_ER_OnValueRB.mq5 演示了 MainOnValue() 方法的使用. 首先计算和绘制 ER 指标. 然后基于指标的环形缓冲区绘制另外一条 ER 线.
Test_ER_OnArrayRB.mq5 使用256个元素大小的环形缓冲区的运行结果 在MetaQuotes 软件公司.开发过程中, 使用了Integer 和 GODZILLA的部分代码.
Test_ER_OnValueRB.mq5 使用256个元素大小的环形缓冲区的运行结果
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/1374
![使用环形缓冲区绘制随机振荡指标的类](https://c.mql5.com/i/code/indicator.png)
本类设计为使用环形缓冲区计算技术指标随机振荡指标 (Stochastic Oscillator).
![Schnick [支持矢量机器学习工具测试期 - 演示]](https://c.mql5.com/i/code/expert.png)
本脚本用于演示矢量机器在解决分类类型难题中的强大作用. 本版本的代码专门用于和MQL5市场中的免费版支持矢量学习工具做演示.
![使用环形缓冲区绘制AMA的类](https://c.mql5.com/i/code/indicator.png)
本类设计为使用环形缓冲区算法计算自适应移动平均技术指标 (Adaptive Moving Average, AMA).
![突破柱趋势 v2](https://c.mql5.com/i/code/indicator.png)
基于突破柱和极值距离定义的趋势指标的第二版 (编辑并增添版). 增加了突破水平和前面趋势的大小参数.