请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
指标

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

显示:
1310
等级:
(19)
已发布:
2014.02.07 08:23
已更新:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\ \MQL5\Indicators\IncOnRingBuffer\
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

描述

CMomentumOnRingBuffer 类设计为使用环形缓冲区算法计算动量技术指标(Momentum). 

声明

class CMomentumOnRingBuffer : public CArrayRing

标题

#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>

CMomentumOnRingBuffer.mqh 类文件必须放置在 IncOnRingBuffer 文件夹下, 而该文件夹需要在 MQL5\Include\ 目录下创建. 在描述部分附加了使用本类的两个例子文件. 环形缓冲区的类文件也必须在此文件夹下.

类方法

//--- 初始化方法:
bool Init(                  // 如果出错返回 false, 成功返回 true
   int  period      = 14,   // 动量指标周期数
   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(               // 返回元素动量   const int    rates_total,      // 数组的大小
   const int    prev_calculated,  // 数组中处理过的元素数量
   const int    begin,            // 数组中的数据起点
   const long   value,            // 数组中的元素值
   const int    index             // 元素索引
   );
//--- 访问数据的方法:
int                 BarsRequired(); // 返回绘制指标所需的柱数
string              Name();         // 返回指标名称
int                 Period();       // 返回周期数
int                 Size();         // 返回环形缓冲区大小

以通常数组的方式从环形缓冲区取得计算的指标值. 例子:

//--- 计算动量指标的方法类:
#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>
CMomentumOnRingBuffer momentum;

...

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // price[] 数组大小
                 const int prev_calculated,  // 前一次调用处理过的柱数
                 const int begin,            // 数据起点
                 const double& price[])      // 用于计算的数组
  {
//--- 基于时间序列计算指标:
   momentum.MainOnArray(rates_total,prev_calculated,price);

...
 
//--- 使用 "momentum" 环形缓冲区的数据,
//    例如复制指标缓冲区中的数据:
   for(int i=start;i<rates_total && !IsStopped();i++)
      Momentum_Buffer[i] = momentum[rates_total-1-i]; // 指标线

...

//--- 返回 prev_calculated 的值以便下次调用:
   return(rates_total);
  }

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

例子

  1. Test_Momentum_OnArrayRB.mq5 文件基于价格时间序列计算指标. 演示了 MainOnArray() 方法的应用
  2. Test_Momentum_OnValueRB.mq5 文件演示了 MainOnValue() 方法的使用. 首先计算和绘制动量指标. 然后基于此指标的环形缓冲区绘制另外一条动量指标. 


Test_Momentum_OnArrayRB.mq5 使用256个元素大小环形缓冲区的运行结果



Test_Momentum_OnValueRB.mq5 使用256个元素大小环形缓冲区的运行结果

 

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

由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/1396

使用环形缓冲区绘制MFI指标的类 使用环形缓冲区绘制MFI指标的类

本类设计为使用环形缓冲区算法计算资金流指数技术指标(Money Flow Index, MFI).

使用环形缓冲区绘制RSI指标的类 使用环形缓冲区绘制RSI指标的类

本类设计为使用环形缓冲区算法计算相对强弱指数技术指标 (Relative Strength Index, RSI).

突破柱趋势 EA 突破柱趋势 EA

本EA交易基于突破柱趋势v2指标. 它依赖的进场设置是在趋势反转的时候, 在一些误差信号之后.

四色АО指标 四色АО指标

四色AO指标.