在读套利模块源码时,有几个有疑惑的地方
问题一:
在legData.update_trade()里,为什么不需要处理new_pos<0的情况?
如果trade没有完全把旧仓位给平掉,那么不是会产生new_pos < 0的情况吗?
还是说直接默认了算法里会直接把旧仓位给全平?
问题二:
1.leg.net_position是根据contract.net_pos来获得的,而contract.net_pos包含了账户其他策略的净持仓,这样是否会跟其他策略的持仓混淆?
2.leg.net_pos_price是根据position.price来获得的,同样的也包含了账户其他策略的持仓的持仓价,这样是否会跟其他策略的持仓混淆?
问题三:关于套利模块的设计
为什么不采用类似CTA的递进层级设计(st_engine - st_strategy - st_algo),而是使用平行式的层级设计?
stengine - dataengine
- strategyEngine - st_strategy
- algoEngine - st_algo
我在使用过程中感觉第一种更容易管理和理解,而第二种虽然稍微灵活一点但是更加复杂且容易出错,所以有点疑惑为什么要采用这种设计?