想根据持仓信息进行移动止损,有什么方法可以在策略中获取当前账户的持仓信息吗?
想根据持仓信息进行移动止损,有什么方法可以在策略中获取当前账户的持仓信息吗?
CTA策略模块中请不要访问账户底层的资金和仓位数据,移动止损的功能可以参考AtrRsiStrategy,其中有相应的源代码实现,无需访问账户数据。
用Python的交易员 wrote:
CTA策略模块中请不要访问账户底层的资金和仓位数据,移动止损的功能可以参考AtrRsiStrategy,其中有相应的源代码实现,无需访问账户数据。
老大,我有个疑问,“CTA策略模块中请不要访问账户底层的资金和仓位数据”是基于什么考虑呢?是实盘不能太过频繁访问账户信息?
因为我现在下单的模块都是基于账户持仓、资金比例下单的,5分钟bar,应该没问题吧?
主要是因为某个合约上,你可能运行着多个策略同时在交易,甚至可能还有手动交易的持仓,此时访问就有可能导致各种很隐蔽的问题,比如A策略把B策略的仓位给平了。
底层持仓和CTP柜台是6秒执行一次同步,如果你确定每个合约上只跑一个策略,同时5分钟级别才执行一次,那么没什么问题。
用Python的交易员 wrote:
主要是因为某个合约上,你可能运行着多个策略同时在交易,甚至可能还有手动交易的持仓,此时访问就有可能导致各种很隐蔽的问题,比如A策略把B策略的仓位给平了。
底层持仓和CTP柜台是6秒执行一次同步,如果你确定每个合约上只跑一个策略,同时5分钟级别才执行一次,那么没什么问题。
额 我只跑一个策略,但是我想每次操作 查询下 是否成交,然后再进行下一步,也要6秒间隔么
可以尝试用策略持仓self.pos来写判断试试,这样应该不用等
如果 self.pos 也和实际仓位不一致,就可以判断是SimNow推送的信息有误了?
昨天晚上夜盘还一致,上午这就对不上了。
怎么去排查哪几笔的下单成交状态改变?
应该可以查询成交记录吧。如果怕之后也出现类似情况可以在策略中记录一下on_order/on_trade推送方便之后找问题
self.pos不是策略维护的,如果self.pos记录也对不上,可以确定整个系统都没有收到事件的推送吧?
我是用无限易连接Simnow作为交易回显终端,与vntrader一同运行。
为了这次差异,核对了一下两边的所有成交记录,基本上是无限易显示的成交时间比策略on_trade记录的时间提前2秒。
之前也发生一笔on_trade没通知,但是我收到了on_order的成交通知,这次on_order/on_trade都没有推送。
7笔都是9:00开市时候行情跳空的批量成交。我手工将这7笔状态在自己的策略里改成成交并且与开仓配对,
现在自己的db中的成交状态和交易终端显示一致,但是vntrader显示的pos还是差7笔的状态。
self.pos是策略维护的呀,想知道有没有收到推送就去接口对应函数下打印收到的data应该就行了;
如需手动修改pos,可以在对应的json文件中修改。比如CTA策略的持仓数据,会写入c:\users\administrator\cta_strategy_data.json这个文件中