下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

2014.02.07 07:54
指标

使用环形缓冲区绘制ADX Wilder指标的类 - MetaTrader 5脚本

| Chinese English Русский Español Deutsch 日本語 Português

显示:
410
等级:
投票: 16
\MQL5\Include\IncOnRingBuffer\\MQL5\Indicators\IncOnRingBuffer\

描述

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];  // 负向索引
     }

   ...
  }

请注意环形缓冲区的索引方式和时间序列相同.

例子

  1. The Test_ADXW_OnArrayRB.mq5 file calculates the indicator based on the price time series. 演示了 MainOnArray() 方法的应用
  2. Test_ADXW_OnValueRB.mq5 文件演示了 MainOnValue() 方法的使用. 首先计算和绘制 ADXW 指标. 之后在此指标环形缓冲区的基础上, 计算 ADXW 指标的三条指标线. 


Test_ADXW_OnArrayRB.mq5 使用256个元素大小环形缓冲区的工作结果



Test_ADXW_OnValueRB.mq5 使用256个元素大小环形缓冲区的工作结果

 

MetaQuotes 软件公司.开发过程中, 使用了Integer 和 GODZILLA的部分代码.

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/1356

差异指数 差异指数

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

改变烛形的颜色 改变烛形的颜色

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

枢轴点至 Html 枢轴点至 Html

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

使用环形缓冲区绘制MACD的类 使用环形缓冲区绘制MACD的类

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