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

如何从High/Low数组获取更多历史K线数据?代码报错求助

解决MQL中无法访问High[2000]的问题

核心原因

当前图表加载到内存的历史K线数量不足2001根(MQL中Bar索引从0开始,High[2000]对应第2001根历史Bar)。ChartNavigate函数仅控制图表视图跳转,不会主动加载更多历史数据到内存。

具体解决方法

  • 调整图表历史数据加载设置
    打开MT4/MT5终端的工具菜单,进入选项 -> 图表,找到“最大柱数”设置,将数值调至大于2000(比如设为5000)。重启图表或刷新后,系统会加载更多历史数据到内存。

  • 用iHigh函数直接请求指定周期的历史数据
    不依赖当前图表加载的Bar,直接通过函数从服务器获取指定位置的High值,示例代码:

    void OnTick()
    {
        // 参数:货币对、周期、偏移量(0是最新Bar,2000是往前第2001根)
        double highValue = iHigh(_Symbol, _Period, 2000);
        if(!IsStopped() && highValue != EMPTY_VALUE)
        {
            Print(highValue);
        }
        else
        {
            Print("无法获取指定位置的High值");
        }
    }
    

    该方法不受当前图表加载Bar数量限制,只要服务器存在对应历史数据就能获取。

  • 手动加载更多历史数据到图表
    在图表上右键点击,选择数据窗口,拖动图表左侧滚动条到更早的时间,终端会自动从服务器加载更多历史Bar到内存。之后运行代码,High[2000]即可正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:51:08