vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 21
声望: 0

想根据持仓信息进行移动止损,有什么方法可以在策略中获取当前账户的持仓信息吗?

Administrator
avatar
加入于:
帖子: 4360
声望: 248

CTA策略模块中请不要访问账户底层的资金和仓位数据,移动止损的功能可以参考AtrRsiStrategy,其中有相应的源代码实现,无需访问账户数据。

Member
avatar
加入于:
帖子: 23
声望: 2

用Python的交易员 wrote:

CTA策略模块中请不要访问账户底层的资金和仓位数据,移动止损的功能可以参考AtrRsiStrategy,其中有相应的源代码实现,无需访问账户数据。

老大,我有个疑问,“CTA策略模块中请不要访问账户底层的资金和仓位数据”是基于什么考虑呢?是实盘不能太过频繁访问账户信息?
因为我现在下单的模块都是基于账户持仓、资金比例下单的,5分钟bar,应该没问题吧?

Administrator
avatar
加入于:
帖子: 4360
声望: 248

主要是因为某个合约上,你可能运行着多个策略同时在交易,甚至可能还有手动交易的持仓,此时访问就有可能导致各种很隐蔽的问题,比如A策略把B策略的仓位给平了。

底层持仓和CTP柜台是6秒执行一次同步,如果你确定每个合约上只跑一个策略,同时5分钟级别才执行一次,那么没什么问题。

Member
avatar
加入于:
帖子: 12
声望: 0

用Python的交易员 wrote:

主要是因为某个合约上,你可能运行着多个策略同时在交易,甚至可能还有手动交易的持仓,此时访问就有可能导致各种很隐蔽的问题,比如A策略把B策略的仓位给平了。

底层持仓和CTP柜台是6秒执行一次同步,如果你确定每个合约上只跑一个策略,同时5分钟级别才执行一次,那么没什么问题。

额 我只跑一个策略,但是我想每次操作 查询下 是否成交,然后再进行下一步,也要6秒间隔么

Member
avatar
加入于:
帖子: 1389
声望: 84
  1. 如果查询应该是的;
  2. 可以尝试用策略持仓self.pos来写判断试试
Member
avatar
加入于:
帖子: 12
声望: 0

xiaohe wrote:

  1. 如果查询应该是的;
  2. 可以尝试用策略持仓self.pos来写判断试试

这样的情况下 是否我都做不了 高频了 假如需要3-6秒的时间 去反馈 成交情况

Member
avatar
加入于:
帖子: 1389
声望: 84

可以尝试用策略持仓self.pos来写判断试试,这样应该不用等

Member
avatar
加入于:
帖子: 18
声望: 0

如果 self.pos 也和实际仓位不一致,就可以判断是SimNow推送的信息有误了?
昨天晚上夜盘还一致,上午这就对不上了。
怎么去排查哪几笔的下单成交状态改变?

description

Member
avatar
加入于:
帖子: 1389
声望: 84

应该可以查询成交记录吧。如果怕之后也出现类似情况可以在策略中记录一下on_order/on_trade推送方便之后找问题

Member
avatar
加入于:
帖子: 18
声望: 0

self.pos不是策略维护的,如果self.pos记录也对不上,可以确定整个系统都没有收到事件的推送吧?

Member
avatar
加入于:
帖子: 18
声望: 0

我是用无限易连接Simnow作为交易回显终端,与vntrader一同运行。
为了这次差异,核对了一下两边的所有成交记录,基本上是无限易显示的成交时间比策略on_trade记录的时间提前2秒。
之前也发生一笔on_trade没通知,但是我收到了on_order的成交通知,这次on_order/on_trade都没有推送。

7笔都是9:00开市时候行情跳空的批量成交。我手工将这7笔状态在自己的策略里改成成交并且与开仓配对,
现在自己的db中的成交状态和交易终端显示一致,但是vntrader显示的pos还是差7笔的状态。

Member
avatar
加入于:
帖子: 1389
声望: 84

self.pos是策略维护的呀,想知道有没有收到推送就去接口对应函数下打印收到的data应该就行了;
如需手动修改pos,可以在对应的json文件中修改。比如CTA策略的持仓数据,会写入c:\users\administrator\cta_strategy_data.json这个文件中

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3