MQL4中OnCalculate函数相关说明

// 该函数只能在指标中使用,每次价格变动时调用一次
int OnCalculate(const int rates_total,          // 图表上一共有多少根K线
                const int prev_calculated,      // 已经算过的K线的根数。首次加载时,所有K线都没算过,所以该值为0;
                                                // 当OnCalculate执行过一次后,prev_calculated == rates_total;
                                                // 当一根新的K线生成时,rates_total+1,此时只需计算新K线,rates_total > prev_calculated
                const datetime &time[],         // 每根K线的开盘时间序列数组,索引为0的元素为最新值,下同
                const double &open[],           // 开盘
                const double &high[],           // 最高
                const double &low[],            // 最低
                const double &close[],          // 收盘
                const long &tick_volume[],      // 报价
                const long &volume[],           // 真实交易量
                const int &spread[])            // 点差
{
//    printf("rates_total = %d, prev_calculated = %d", rates_total, prev_calculated);
    if(prev_calculated == 0)
    {
        // 首次运行
        for(int i = rates_total - 1; i >= 0; --i)
        {
            drawLineColorIndex(i, false);
        }
    }
    else if(rates_total > prev_calculated)
    {
        // 一条K线刚好形成
        // 这里要注意,K线刚好形成的时候,索引为0的K线是还没形成的新K线,刚形成的K线索引为1
        drawLineColorIndex(1);
    }
    else if(rates_total == prev_calculated)
    {
        // 新的K线已经出现,但还没有形成,价格还在变动
    //    drawLineColorIndex(0);
    }
    else
    {
        // 不会进入这个分支,进入说明错了
    }

    return(rates_total);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木千

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值