Closed handsomu closed 7 years ago
@handsomu 这个属于RQAlpha enhancement 的内容,重新在RQAlpha 项目上开一个issue~
我想了一下,有两种方案:
维持现有的API 不变,增加 buy_close_tody
和 sell_close_today
API 来区分平今还是平昨,用户自行处理自己到底需要发的是什么单,因为像上期这种对今仓和昨仓做了区分的,用户也有选择自己要平什么仓位的业务场景。
第二种是增加一个只能开平的API,区别于现有 buy_open
/ buy_close
/ sell_open
/ sell_close
,比如 order(side, quantity, price=None, position_effect=None)
当不设置 price
就是 market_order
, 不设置 position_effect
就自动判断开平及昨仓今仓。
至于具体的方案,可能还需要讨论一下
VNPY的Close只能平上期所昨仓。平今仓需要设置为CloseToday。所以buy_close 以及 sell_close 需要对上期所合约智能识别。举例来说,当前昨仓5,今仓3.当平仓数量为6的时候,按照先进先出的方式,先平昨仓5,后平今仓1,发送2个平仓单。此时函数应返回order list。与此同时,cancel_order API也应当支持对于order list的cancel操作。如果平仓数量为10的时候,则将昨仓5、今仓3分别发送平仓单。