You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MQL4中创建自动移位数组?自定义指标开发技术问询

MQL 指标缓冲区自动右移机制与高效计算技巧

做MQL自定义指标开发的话,你肯定会发现一个特别省心的设计——用IndexBuffers声明的Double类型指标缓冲区数组,会在每次新K线生成时自动右移,就连Open[]、Close[]这类内置的价格常量数组也是同样的行为。

这个设计的用意其实很直白:不管是首次加载图表,还是图表实时更新的时候,你都能复用同一套代码逻辑,完全不用重新计算已经存在的旧K线数据,既省资源又能避免重复计算带来的错误。

下面是最经典的start()函数实现,完美利用了这个特性来只处理未计算的K线:

int start() {
    int Counted_bars;
    Counted_bars=IndicatorCounted(); // 获取已经计算完成的K线数量
    i=Bars-Counted_bars-1; // 定位到需要开始计算的首个未处理K线
    while(i>=0) {
        IndicatorBuffer[i] = [Some-calculations]; // 替换成你的具体指标计算逻辑
        i--;
    }
    return (1);
}

再补充几个关键点帮你理解:

  • IndicatorCounted()是核心:它会返回图表中已经被当前指标计算过的K线数量,这样我们就能直接跳过这些已处理的部分,只聚焦在新增的或者未计算的K线上。
  • 倒序遍历的原因:MQL里数组索引0对应的是最新的K线,从Bars-Counted_bars-1开始倒着往0遍历,能确保我们从最老的未处理K线开始计算,配合缓冲区自动右移的特性,让每一根K线的计算结果都能精准对应到正确的位置上。

内容的提问来源于stack exchange,提问作者Lorry Laurence mcLarry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:29:30