ricequant / rqalpha-mod-vnpy

RQAlpha 对接 vnpy 的扩展 Mod。通过启用该 Mod 来实现期货策略的实盘交易
Apache License 2.0
298 stars 59 forks source link

发送平仓单时针对上期所平今的处理 #19

Closed handsomu closed 7 years ago

handsomu commented 7 years ago

VNPY的Close只能平上期所昨仓。平今仓需要设置为CloseToday。所以buy_close 以及 sell_close 需要对上期所合约智能识别。举例来说,当前昨仓5,今仓3.当平仓数量为6的时候,按照先进先出的方式,先平昨仓5,后平今仓1,发送2个平仓单。此时函数应返回order list。与此同时,cancel_order API也应当支持对于order list的cancel操作。如果平仓数量为10的时候,则将昨仓5、今仓3分别发送平仓单。

wh1100717 commented 7 years ago

@handsomu 这个属于RQAlpha enhancement 的内容,重新在RQAlpha 项目上开一个issue~

我想了一下,有两种方案:

维持现有的API 不变,增加 buy_close_todysell_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 就自动判断开平及昨仓今仓。

至于具体的方案,可能还需要讨论一下