可以贴一下截图;
你的账户性质是(实盘/模拟账户)?
可以试试pip install matplotlib --force-reinstall
检查一下你的策略变量列表里是否有out_range,但是没有定义
paperaccount模块不提供资金计算功能
之前有报4040的都是和4097在一起,解决dll问题之后就没了。但是从图上看你这里行情接口还是没连上,可以咨询一下期货公司工作人员看看
如果有需要可以自己按需进行个性化修改呀
发布于vn.py社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2021-06-22
《30天掌握Python数据分析课程》更新到第40集,最新的5集重点讲解了如何基于pandas实现时间序列数据的各种操作处理,解决策略研究中对于多合约和多类型数据的排序对齐问题。详细课程大纲请戳我~~~
本周一发布了vn.py的2.4.0版本,本次更新的内容主要是实现了多进程模式的遗传算法优化,在保留遗传算法对于参数优化时智能任务调度的同时,大幅提高计算性能,降低整体的优化耗时。
和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VN Studio-2.4.0,体验一键安装的量化交易Python发行版,下载链接:
https://download.vnpy.com/vnstudio-2.4.0.exe
一点背景
在之前版本的vn.py中,针对策略参数优化的需求提供了两套算法工具,分别是暴力穷举优化(Brutal Force)和遗传算法优化(Genetic Algorithm)。
其中暴力穷举优化在运行的过程中,由于每轮执行的计算任务互相之间不存在任何状态依赖,可以非常方便的使用multiprocessing库扩展到多进程模式执行,从而充分利用CPU所有核心的算力来加速。
而遗传算法优化在运行的过程中,每轮执行的计算任务中会存在相当比例的重复部分(源于优秀参数的交叉生成),因此采用了lru_cache的缓存机制来实现加速。同时lru_cache的结果缓存只能在单进程中生效,扩展到multiprocessing的多进程模式后,因为缓存失效反而会导致最终的速度变慢。
改进方案
社区里有极少数vn.py的资深用户,自行改造实现了基于Redis内存数据库缓存的重量级多进程遗传算法优化功能。但由于Redis本身安装较为麻烦,且内存开销很大,使得这个方案对于普通用户来说几乎没有可行性。
在2.4.0的更新中,我们采用multiprocessing库的Manager数据服务进程作为缓存方案,将vn.py内置的遗传算法优化功能升级到了多进程版本,实现数十倍优化速度提升的同时,还无需依赖任何外部工具,对于新手小白来说都是【开箱即用】!
实际操作
对于vn.py的用户来说,在实际操作上和之前的版本完全一致。打开【CTA回测】模块的【参数优化】对话框后,配置好要执行优化的参数空间,点击下图红框中的【遗传算法优化】按钮即可启动优化任务:
唯一的区别在于此时打开Windows系统的【任务管理器】查看CPU占用情况,会发现所有的CPU核心都已经跑满(对比之前的单进程遗传算法优化,最高只会占满一个核心):
标准化改造
之前不少用户反映过一个问题:只有CTA策略(cta_strategy)模块内置了优化功能,而价差交易(spread_trading)和组合策略(portfolio_strategy)都需要用户自行实现(比如在Jupyter Notebook里写一个for循环来执行优化)。
所以本次更新中,我们将暴力穷举和遗传算法两套优化工具统一进行了标准化改造,从CTA策略模块中剥离,放置到了vnpy.trader.optimize模块下,后续会基于它们来实现其他策略模块的参数优化功能。
RestClient和WebsocketClient是目前vn.py框架中针对各类REST API和Websocket API统一开发的标准化客户端工具,在之前的版本中采用【同步调用 + 多线程】的模式来实现高性能通讯。
但由于GIL全局锁的存在,线程多了难免会出现性能下降的情况,尤其对于需要加载多个接口运行套利类策略的用户说更加敏感。因此在2.4.0版本中新增了基于aiohttp实现的【异步调用 + 协程】模式客户端,只需一个线程(运行事件循环)即可实现所有相关接口的异步事件驱动。
整体的组件替换如下:
考虑到潜在的兼容性问题,两个新的客户端放到了全新的vnpy_rest和vnpy_websocket项目中,接下来会在剥离各个相关的交易接口时逐步替换。同时老的客户端依旧位于vnpy.api.rest和vnpy.api.websocket下,可以继续使用。
XTP交易接口
剥离到vnpy_xtp项目中,升级到2.2.27版本的API,新增了:
新增
调整
修复
可能是传进了非交易时段的tick导致的,可以过滤一下传进来的tick试试
可以附一下完整报错截图,这样看不清楚。调节显示的方法已经在另一个帖子回复了
请先把屏幕分辨率改成1920x1080将缩放调好再试看看吧。若1080的分辨率仍显示不正常,缩放比例改成100%缩放试试看。
StopOrder是没有datetime这个字段的
看你配置图是uft接口,脚本上又连的是ctp接口。请问到底是需要连接哪个接口?是什么类型的账户(实盘或模拟)?
ctptest是做穿透式测试用的。
ctp接口不提供历史数据,如果需要在回测界面下载国内期货历史数据需要配置rqdata数据服务。
这些文档里都有写,请先看看文档吧。
https://www.vnpy.com/docs/cn/data_manager.html
是不是策略里load_bar函数没改成load_tick
可能是有非交易时间的数据进来了,可以在process_tick_event下面过滤试试
请问VN Trader的版本是?
检查一下你的参数列表吧,应该是在参数列表里写了一个没有声明的参数名strategy_name
可以自己在策略里打印一下策略变量、策略交易状态和交易信号看看