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

CArrayRing256 环形缓冲区简化类 - MetaTrader 5程序库

显示:
1147
等级:
(30)
已发布:
2014.02.07 08:15
\MQL5\Include\IncOnRingBuffer\
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

描述

CArrayRing256 类是CArrayRing环形缓冲区的简化类, 但是它更快, 并且允许在EA交易或者指标中作为迷你时间序列, 指标迷你缓冲区, 以及用于保存中间过程流数据的小缓冲区. 

简化基于一个无符号字符型变量属性, 它用作数组索引. 举例, 如以下代码

double array[UCHAR_MAX+1];  // 环形缓冲区数据
uchar  index=0;             // 缓冲区元素索引

while(!IsStopped())
  {
   array[++index];          // 至缓冲区中的下一个元素
   ...
  }

数组索引永远在0到255范围之内, 从不会超过数组维度范围. 这使得可以在有关索引越界引起退出的方法中移除所有的检查而简化这些方法本身, 以及提高运行效率. 但是缓冲区的大小将是个常量并且只能是256个元素大小. 对于很多任务来说, 与通用类CArrayRing相比这是个可以接受的选择, 以交换运行的效率.

声明

сlass CArrayRing256

标题

#include <IncOnRingBuffer\CArrayRing256.mqh>

CArrayRing256.mqh 类文件应当被放置在 IncOnRingBuffer 文件夹下, 而此文件夹需要在 MQL5\Include\ 目录下创建.

类方法 

//--- 缓冲区初始化方法:
void Init(
   double volue=EMPTY_VALUE // 缓冲区空值
   );
//--- 把新元素加入缓冲区:
void Add(
   const double element     // 增加元素值
   ); 
//--- 使用集合索引重写元素值:
void Update(                // 如果出错返回false, 如果成功返回true
   const double element,    // 元素的新值
   const uchar  index=0     // 元素索引
   );  
//--- 根据集合索引返回元素值的方法:
double At(                  // 返回元素值
   const uchar index        // 元素索引
   ) const;
//--- 返回缓冲区最新元素值:
double Last() const;
//--- 覆盖缓冲区最新元素值:
void Last(
   const double element     // 元素新值
   );  
//--- 返回环形缓冲区大小:
int Size();

注意:

  • 环形缓冲区的大小是个常数, 永远等于256
  • 在环形缓冲区的视线中, 索引是时间序列, 方向和通常索引相反 

例子

本类的使用与CArrayRing类似 . 以下是一些不同点:

  • Init() 方法用于确定的数值初始化缓冲区;
  • Resize() 方法不存在, 因为缓冲区大小永远是常数.

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

突破柱趋势 v2 突破柱趋势 v2

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

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

本类设计为使用环形缓冲区算法计算自适应移动平均技术指标 (Adaptive Moving Average, AMA).

本例用于操作CSV文件和表格 本例用于操作CSV文件和表格

CSV 文件用于写经济新闻, 但是有个问题, 终端无法区分行数, 特别是操作CSV文件时的数字. 这就是为什么分享我分享解决此问题的方案.

X-bars 分形 X-bars 分形

X-bars 分形指标用于设置分形左右的柱数. 它对局部或者全局的极值都很有帮助