较热56.4

MT5自定义指标加载后图表空白,是不是代码里少了什么函数

XM 推荐平台

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

CySEC(塞浦路斯) / ASIC(澳洲) / IFSC(伯利兹) · 最低入金 $5
BlueOceani
BlueOceani 楼主
2026-8-13 22:41:09 484 4 1分钟 新汇友(注册会员) Lv.1 主题2 帖数7 积分711 汇币255
1楼
说实话,这个MT5自定义指标的问题真的快把我逼疯了。我写了个简单的均线交叉指标,编译都通过了,加载到图表上却一片空白,连个线影都看不到。我反复检查了代码,OnCalculate函数也写了,SetIndexBuffer也绑定了,甚至把指标窗口拖来拖去刷新了N次,就是不出图。😩
我试过的办法有:先删掉重装指标,不行;换成MT4同样的代码,居然能正常显示,说明逻辑应该没问题吧?然后我怀疑是MT5的数组方向问题,把Series数组改成普通数组,还是空白。最后我干脆把整个指标简化到只剩一条简单均线,结果还是老样子。最诡异的是,编译日志没有任何报错,加载时也不弹警告,就是图表上干干净净,像没加载一样。
我查过一些教程,说MT5的指标需要用到PlotIndexSetInteger或者SetIndexDrawBegin这些函数来设置绘制属性,但我看很多示例代码也没写这些啊,是不是MT5新版必须要加什么初始化函数?还有个细节,我的指标是用#property indicator_chart_window声明在主图显示的,但加载后连价格图都正常,就是我的指标线消失,会不会是缓冲区索引分配的问题?
有没有遇到过类似情况的朋友?能指点下到底是少了哪个关键函数,还是说MT5的指标必须用IndicatorSetInteger来注册绘图样式?我实在不想放弃这个策略,毕竟在MT4上跑得好好的,换到MT5就水土不服。先谢过各位了,这个问题困扰我两周了,真的急。🙏
0 回复 复制 众裁0
#1
KevinLue
KevinLue #5· 25 分钟前
25 分钟前
5楼
我理解你MT4正常但MT5空白的问题,核心可能不在绘制函数,而是OnCalculate里对rates_total和prev_calculated的处理。试试在开头加if(rates_total<1) return(0),然后循环里从rates_total-prev_calculated+1开始算,别用MT4那套从0遍历的逻辑。补充一下,数组方向记得用ArraySetAsSeries,不然索引错位也会静默失败。
回复 复制 众裁0
25 分钟前 #5
PythonQuantm
PythonQuantm #4· 3 天前
3 天前
4楼
看你说MT4正常但MT5空白,我怀疑是PlotIndexSetInteger里绘图类型没设,比如DRAW_LINE。我自己也遇到过类似情况,加了#property indicator_plots=1和indicator_buffers=1后就好了,试试这个组合。
回复 复制 众裁0
3 天前 #4
竹影清风
竹影清风 #3· 5 天前
5 天前
3楼
看了你说编译无报错但图表空白,重点怀疑你OnCalculate里返回值没写对,MT5必须返回prev_calculated之外的数值才会刷新。我自己也遇到过,检查下是不是返回0了。
回复 复制 众裁0
5 天前 #3
MossyMaple
MossyMaple #2· 6 天前
6 天前
2楼
说实话,你那个编译通过但图表空白的问题,我第一反应就是缓冲区索引没对上。你提到SetIndexBuffer绑定了,但没提是不是用了#property indicator_buffers,这俩必须配合,少一个MT5就静默罢工。我自己也踩过这坑,当时是忘了声明indicator_plots,MT4不用这玩意儿,MT5没有它绘图样式根本不注册。你试试加上PlotIndexSetInteger(0, PLOT_DRAW_LINE, DRAW_LINE),应该能解决。
回复 复制 众裁0
6 天前 #2
THE END
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。汇友之家合作的各家经纪商均为持有正规外汇牌照的经纪商,我们不参与经纪商的任何经营活动。经纪商在经营过程中可能出现破产清算、资不抵债、跑路或躲避责任等情况,这些问题汇友之家无法控制,亦不承诺任何经纪商资金的绝对安全。请知悉!
← 上一帖 VPS远程桌面连接优化正确打开方式(附实操步骤) 下一帖 → MT5移动端登录一直卡在“连接服务器”,防火墙设置到底哪一步错了