- 显示:
- 1823
- 等级:
- 已发布:
- 2014.02.07 07:54
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
描述
CADXWOnRingBuffer 类设计为使用环形缓冲区算法计算威尔德平均方向移动指数(Average Directional Movement Index Wilder, ADX Wilder) .
声明
class CADXWOnRingBuffer
标题
#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>
CADXWOnRingBuffer.mqh 类文件应该被放置在 IncOnRingBuffer 文件夹下, 而此文件夹需要被放置在MQL5\Include\目录下. 在描述部分附加了使用本类的两个例子文件. 环形缓冲区的类文件和移动平均的类文件也必须放置在此文件夹下.
类方法
//--- 初始化方法: bool Init( // 如果出错返回false,成功返回true int ma_period = 14, // 移动平均平滑周期数 ENUM_MA_METHOD ma_method = MODE_SMMA, // 移动平均平滑方法 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( // 返回集合元素的ADXW值 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 NameADXW(); // 返回指标名称 string NameNDI(); // 返回负向移动指标线的名称 string NamePDI(); // 返回正向移动指标线的名称string MAMethod(); //返回平滑方法的文本名称 int MAPeriod(); // 返回平滑周期数int Size(); // 返回环形缓冲区的大小
以通常数组的方式从环形缓冲区取得计算的指标值. 例子:
#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh> CADXWOnRingBuffer adxw; ... //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { //--- 计算指标: adxw.MainOnArray(rates_total,prev_calculated,high,low,close); ... //--- 把数据从 "adxw" 环形缓冲区复制到指标中: for(int i=start;i<rates_total;i++) { ADXW_Buffer[i] = adxw[rates_total-1-i]; // 威尔德平均动向指数指标 PDI_Buffer[i] = adxw.pdi[rates_total-1-i]; // 正向索引 NDI_Buffer[i] = adxw.ndi[rates_total-1-i]; // 负向索引 } ... }
请注意环形缓冲区的索引方式和时间序列相同.
例子
- The Test_ADXW_OnArrayRB.mq5 file calculates the indicator based on the price time series. 演示了 MainOnArray() 方法的应用
- Test_ADXW_OnValueRB.mq5 文件演示了 MainOnValue() 方法的使用. 首先计算和绘制 ADXW 指标. 之后在此指标环形缓冲区的基础上, 计算 ADXW 指标的三条指标线.
Test_ADXW_OnArrayRB.mq5 使用256个元素大小环形缓冲区的工作结果 在MetaQuotes 软件公司.开发过程中, 使用了Integer 和 GODZILLA的部分代码.
Test_ADXW_OnValueRB.mq5 使用256个元素大小环形缓冲区的工作结果
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/1356

差异指数(disparity index, difference index) 显示了收盘价和选定的移动平均差异的百分数. 推荐和其他烛形模式综合使用本指标

本指标允许改变烛形的颜色.

本脚本计算市场观察中全部交易品种的枢轴点(Pivot Point)并在html文件中显示结果.

本类设计为使用环形缓冲区算法计算技术指标MACD(Moving Average Convergence/Divergence, MACD).