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

MQL5指标转EA:OnCalculate中rates_total与prev_calculated等效项咨询

在MQL5的OnTick函数中替代OnCalculate的rates_total和prev_calculated的方法

在EA的OnTick()函数里,没有直接对应指标OnCalculate()中rates_total和prev_calculated的内置参数,需通过函数自行获取或维护:

1. 替代rates_total的方式

rates_total代表当前K线数组的总数量,可通过Bars()函数直接获取:

int rates_total = Bars(_Symbol, _Period);

也可通过复制K线时间数组后取长度,确保严谨性:

datetime time_array[];
CopyTime(_Symbol, _Period, 0, Bars(_Symbol, _Period), time_array);
int rates_total = ArraySize(time_array);

2. 替代prev_calculated的方式

prev_calculated用于记录上一次已处理的K线数量,避免重复计算。EA中需自定义全局变量维护该值:

// 全局变量:存储上一次处理完成的K线总数
int g_prev_calculated = 0;

void OnTick()
{
    int current_bars = Bars(_Symbol, _Period);
    // 首次运行初始化
    if(g_prev_calculated == 0)
    {
        g_prev_calculated = current_bars;
        return;
    }
    // 计算新增K线数量
    int new_bars = current_bars - g_prev_calculated;
    if(new_bars > 0)
    {
        // 此处编写新增K线的处理逻辑
        // ...
        
        // 更新已处理K线总数记录
        g_prev_calculated = current_bars;
    }
}

注意:当品种、周期切换或图表重新加载时,需在OnInitialize()或OnChartEvent()中重置g_prev_calculated的值。

内容的提问来源于stack exchange,提问作者lancegoh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:39:51