冷清0.3

MT5自定义指标加载后白屏,数组越界问题求助

ChartReadere ChartReadere
2026-8-11 21:05
3 0 1分钟
XM 推荐平台

覆盖品种全,新手友好,支持多种入金方式

CySEC(塞浦路斯) / ASIC(澳洲) / IFSC(伯利兹) · 最低入金 $5
Lv.2 活跃汇友 等级 Lv.2 主题 1 帖数 2 积分 1589
ChartReadere
ChartReadere 楼主
2 小时前
1楼
我查了代码,用的是iCustom调用自己写的子函数,里面有个循环是从rates_total开始往前推的,判断背离时用了iRSI和iBands,但问题可能出在数据缓冲区的索引上。我怀疑是MT5的OnCalculate里,prev_calculated在历史数据重新下载或者新价格跳动时没有正确同步,导致数组下标超过了bars的总数。更奇怪的是,只有加载到EURUSD才触发,黄金和镑美都没事,感觉像是这个品种的tick数据量特别大,缓冲区扩容时出了岔子。

有没有人遇到过类似的情况?我试过把指标改成只计算当前K线,不再扫描历史,白屏倒是消失了,但这样背离信号就完全不准了,等于废掉。我想保留完整的扫描逻辑,又不想每次新报价都去碰历史数组,是不是应该在OnCalculate里加个保护,比如检查rates_total和prev_calculated的差值,或者干脆用ArrayResize强制锁定缓冲区大小?另外,白屏是不是MT5的图形引擎因为指标崩溃而拒绝重绘,有没有办法在不重启终端的情况下强制刷新图表?

主要卡在怎么让指标在数据量大的品种上稳定运行,又不牺牲计算精度。哪位懂底层机制的帮看看,是iCustom的调用方式有问题,还是OnCalculate的返回值设置不对?我用的MT5 build 4450,不知道是不是版本兼容性的坑。
0 回复 复制
#1
💬
暂无回复,来抢沙发吧!
- THE END -
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。
← 上一帖 MT5回测数据与实盘差异巨大,这三项参数设置错了吗? 下一帖 → EA回测与实盘差异排查心得