如何从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
相关产品推荐
相关产品推荐

