请问如何实现代码移仓换月?
问题很简单,回答却十分复杂,这里只能给出思路
首先,第一步是判断是否换月。这个可以通过rollover数据进行比对,如果读取基础数据中的rollover,今天和昨天不一样,或者直接读换月数据,比对日期发现是今天,那么开始执行移仓换月处理。
第二步执行换仓,首先要明确,移仓是移账户全部的老合约,还是只有当前策略的持仓。因为一个账户,可能有多个策略在运行,如果有的策略要移仓,有的不要,那就不能一把统统换掉。这里具体影响的是一个手数。如果是仅当前策略移仓,那么需要当前策略记录当前的图表信号或者自己头寸表的持仓情况,然后再根据基础数据中,老合约的symbol和新合约的symbol,用a函数去报单,分别平和开。这里建议使用onfill域,先检查所有老合约仓位平净了再开新合约的仓。注意,还有未成交的委托单不算平干净了。
如果是要全部平账户,那么需要通过getposition函数去查询当前账户总共有多少已建立的头寸,还有通过getorder等函数去查询有多少正在委托还没成交的委托单,确认是否要把这些订单算在换月的范围内,最后得到一个需要平然后再开的数额,接下来就和上面一样,通过a函数去平老合约,撤老合约,开新合约的单子。
这里思路讲一讲就已经有很多的技术要点了,难度是比较大的,建议量力而行,如果开发经验不够丰富,先多了解一下这里面涉及的概念再试图开发移仓换月模型。
谢谢