(1)如果同时持有多空,pos是单向的,该怎么处理? 例如:如果持有1手多单,sell卖平的委托没有成交,紧接着的short卖开的单子成交了,pos 是几呢 ?
(2)假如策略下了1手多单,人通过Vntrader下了1手多单,pos 是几 ?
(3)假如策略下了2手多单,人通过Vntrader平仓1手,pos 是几 ?
(4)两个策略都在跑同一个代码,应该是各自有各自的pos 吧 ?
(5) 框架对pos值的更新,是在onTrade 和 onOrder推送动作前,还是推送动作后?
(1)如果同时持有多空,pos是单向的,该怎么处理? 例如:如果持有1手多单,sell卖平的委托没有成交,紧接着的short卖开的单子成交了,pos 是几呢 ?
(2)假如策略下了1手多单,人通过Vntrader下了1手多单,pos 是几 ?
(3)假如策略下了2手多单,人通过Vntrader平仓1手,pos 是几 ?
(4)两个策略都在跑同一个代码,应该是各自有各自的pos 吧 ?
(5) 框架对pos值的更新,是在onTrade 和 onOrder推送动作前,还是推送动作后?
对于CTA策略模块来说,策略的持仓,是基于策略本身发出去的委托成交维护的逻辑持仓(而非账户底层的实际持仓):
用Python的交易员 wrote:
对于CTA策略模块来说,策略的持仓,是基于策略本身发出去的委托成交维护的逻辑持仓(而非账户底层的实际持仓):
- pos会为0
- 人手工下的单子无影响
- 人手工下的单子无影响
- 对的,这两个逻辑持仓互相无关
- onTrade推送前更新,保证策略收到onTrade回调的时候,pos已经是最新数据
那就是某个策略的pos,Vntrader前端是没法干预的
第3条,如果策略持有2手多单,人工在Vntrader平仓1手,策略遇到自己的平仓逻辑触发平仓2手的话,委托推送就会返回 “拒单” ,是这样的吧 ?
谢谢群主
没错,策略持仓数据在程序退出后会保存在MongoDB数据库里,你可以在其中进行修改,下次启动程序时策略持仓就会变成你修改后的。
但是在VnTrader运行的过程中,你是不能修改的,确实也不应该改。
用Python的交易员 wrote:
没错,策略持仓数据在程序退出后会保存在MongoDB数据库里,你可以在其中进行修改,下次启动程序时策略持仓就会变成你修改后的。
但是在VnTrader运行的过程中,你是不能修改的,确实也不应该改。
谢谢~~Thanks♪(・ω・)ノ
用Python的交易员 wrote:
对于CTA策略模块来说,策略的持仓,是基于策略本身发出去的委托成交维护的逻辑持仓(而非账户底层的实际持仓):
- pos会为0
- 人手工下的单子无影响
- 人手工下的单子无影响
- 对的,这两个逻辑持仓互相无关
- onTrade推送前更新,保证策略收到onTrade回调的时候,pos已经是最新数据
为什么不基于 账户底层的实际持仓来更新仓位呢? 这样策略和真实账户一直是一致的。
杨切 wrote:
用Python的交易员 wrote:
对于CTA策略模块来说,策略的持仓,是基于策略本身发出去的委托成交维护的逻辑持仓(而非账户底层的实际持仓):
- pos会为0
- 人手工下的单子无影响
- 人手工下的单子无影响
- 对的,这两个逻辑持仓互相无关
- onTrade推送前更新,保证策略收到onTrade回调的时候,pos已经是最新数据
为什么不基于 账户底层的实际持仓来更新仓位呢? 这样策略和真实账户一直是一致的。
因为单个合约上可能跑多个策略