周末的时候继续码代码,把我之前的一个通道策略移植到了重构后的系统中,在用pyinstaller进行打包exe时遇到了一个问题:打包正常,但exe运行报错,错误信息如下:
通过错误提示可以看到,打包后的exe文件在运行时导入talib包的时候发生了引入错误。因为之前只写了网格策略,而网格策略中并未用到Talib这个指标库,所以没遇到类似问题。
看了看网上关于pyinstaller的文章,这类问题经常出现在自己手动安装的第三方模块上,我不清楚我的问题是否于此有关,但我的Talib确实是通过whl手动安装的。
解决该问题需要用到pyinstaller的隐含导入参数,问题之前我们编译exe时的命令行是这样的:
pyinstaller -F -w -i icons/ico.ico qthinker.py
编译命令调整为:
pyinstaller --hidden-import talib.stream -F -w -i icons/ico.ico qthinker.py
编译完成后运行exe,问题解决。
文章评论
大佬,请教一下,SKDJ指标是用talib.STOCHF生成吗?好像生成的数据与主流软件的数值不一样
@ap 这个指标我没用过,从别的指标计算的结果看,和主流证券软件是有一点点差别,我认为主要原因是数据精度造成的,不过整体结果是吻合的。不知道你的计算结果差别是不是很大,如果区别比较大,那就得看看参数了。另外Talib这个库已经很多年没有更新过了,可以考虑用一些现在还活跃更新的技术指标库。
@qthinker 感谢,有什么好的第三方库推荐?
@ap pandas-ta,可以试试这个,一个基于pandas的技术指标扩展。或者QuantConnect我记得也有python的工具包,印象里面也有少指标。
@qthinker pandas_ta这个试过了,费时比talib多,速度没有talib快
@ap 这个执行效率我没有和talib对比过,不过实盘上,如果是基于K线的交易策略,交易信号基于技术指标的话,我觉得执行效率上的影响并不大。比如5分钟k线拉回来,计算完毕,触发信号,这个过程也长不到那里去,而信号基于K线周期基础上的生成的,所以我感觉如果是这样,那效率倒不是最重要的。
@qthinker 我监控的目标数量多,还是有影响的。方便交流一下吗?可以QQ,Q号看邮箱