发布于vn.py社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2021-01-24
由KeKe(张杨飞)老师主讲的全新的《投资组合策略7天入门》入门课程已经正式开售。课程目标是帮助学员快速掌握PortfolioStrategy(投资组合策略)这一vn.py框架中自由度最高、可玩性最大的模块。
课程内容围绕一套针对商品期货的横截面趋势因子策略展开(和CTA策略的时序因子属于两个方向),覆盖从基础概念学习、回测数据准备、策略代码开发、参数结果优化的全流程内容,整体大纲如下:
课程定价为99元,购买请戳传送门,或者扫描下方二维码:
可参考该帖12楼和13楼
interval没有十五分钟这个频率,如果想导入十五分钟的K线数据做回测就在导入的地方选”1m"吧,但是要自己记住这是十五分钟的不是一分钟的
这是qt库版本不一致的底层报错,应该不影响运行的。等待程序响应中应该就是慢,一般这个是导入导出刷新数据的时候容易出现,别的应用场景应该不卡的。
是跑的遗传算法吧
原因就是你的数据的datetime不符合默认格式('2020-10-15 9:13:00),把默认格式改成你数据的格式就行了。如果修改后还报错,那就贴一下你的报错截图吧
PositionProfit不就是持仓盈亏吗?
逐日盯市平仓盈亏是CloseProfitByDate
应该是你的策略on_init里没有load_bar加载历史数据,或者可以看下on_init函数有没有打错字
可以在cmd中用python -m vnstation启动,看看cmd是否有任何报错
不是,on_trade是成交变动了再推。要是漏掉了on_trade推送self.pos就不对了,但是这种情况应该不常见的,建议如果遇到了就手动修改一下self.pos。
ctp接口的话,底层持仓是每秒钟查询更新的。但在cta_strategy模块里不与self.pos挂钩,只是在process_position_event函数下给OffsetConverter这个类更新了仓位。底层持仓是不会主动去与self.pos同步的,因为如果一个品种跑多个策略,这样是不能拿底层持仓去进行判断的。但是如果就想获取底层持仓,而且一个品种只跑一个策略,可以用get_pos函数获取底层持仓的。
是self.bg.update_tick(tick),没有(t)
是的。
基于分钟或者更低频交易的话,因为网络断开错过成交回报的情况应该不太常见。
底层持仓是会更新推送,可以用get_pos获取
详细描述一下你的问题。是什么时间点启动策略的?“没有tick数据“如何定义?是启动太早导致开盘了都没有tick数据推送(是指”行情“部分没有更新,还是策略没有tick或者bar更新)还是别的情况呢?
可以参考此帖试试看或者修改一下屏幕缩放试试
那应该就是多个python环境导致的报错了。
vnpy的python环境路径应该是C:\vnstudio\python.exe
可以升级rqdatac版本试试,现在最新版本不限制pandas版本了
在电脑的“设置”-“系统”-“显示”处将屏幕分辨率修改成1920x1080应该就可以了。如果使用1080的分辨率仍显示不正常,则在电脑的“设置”-“系统”-“显示”处将缩放比例改成100%缩放就可以了。
只有on_trade的时候,CTA引擎才会去修改self.pos字段,然后调用sync_strategy_data函数同步pos。
还有就是on_init初始化的时候,会从缓存文件中读取同步。停止策略时调用sync_strategy_data函数同步pos。
手动下单需要自行修改cta_strategy_data.json文件里对应的pos。
可参考https://www.vnpy.com/forum/topic/4775-qing-wen-self-posdao-di-shi-ru-he-ji-suan-chu-lai-de
是的。
minute,因为都是由一分钟K线合成的,bg初始化里填的Interval只是告诉bargenerator要合成的K线的频率,感兴趣可以自己去vnpy.trader.utility下看一下BarGenerator的代码