现在是利用指数合约999,通过主力合约映射去操作具体商品合约。每到换月,主力合约代码变化,出现不同步的情况。
目前我的解决办法是人工从监控器里检查,如果主力合约换月切换,手动从监控器里同步。但是这样比较麻烦。
想在代码里自动检测并实现同步操作。但不知道怎么写,老师能指点一下吗?
比如现在是通过RelativeSymbol获取,如何提取前主力合约的代码?这样发现主力合约该持仓未持仓时,先把前主力合约平仓,再把主力合约同步,这样思路对吗
帮助文档里提到enum_data_autoswapposition,自动换月设置。看了帮助,没太看明白。比如我在init里设置了enum_data_autoswapposition。
然后在实盘里,不是在回测,是实时交易里,每次当换月导致主力合约变化时,比如晚上开盘21:00,那一刻,设置了enum_data_autoswapposition的代码,会立马自动执行平仓前主力合约,开仓主力合约,实现自动同步换仓吗?是这样吗?还是enum_data_autoswapposition只是在历史回测里对连续合约有用,对实盘自动换月无效?请老师指点。
思路是没错,只是想的太简单了。
如果你账户只有程序仓,没有手工仓,会简单点。有手工仓的情况下你必须把两边的头寸理清楚。
实际上核心只需要两个数据,一个是合约的symbol。一个是合约的数量,新老合约都要。symbol可以通过读基础数据的形式,读换月数据。数量要在策略里自行确认。
这一部分业务逻辑只能通过a函数编写,图表信号系统做不了。这其中可能还要考虑什么时候执行,放在什么域,执行完如果没成交怎么处理。总之,有很多的异常处理要考虑
帮助手册里的enum_data_autoswapposition,这个老师能解释一下吗?是只是对连续合约的历史回测能自动换月,还是对实盘实时交易,可以做到自动换月的效果,如果是这样,那我这种999指数合约映射主力合约的场景,解决主力换月的问题,是不是只要设置enum_data_autoswapposition就行了?会这样简单吗?
新老合约的发单价格,怎么获取。
首先,获得合约价格,就必须订阅这个合约数据源,要订阅合约数据源,就必须有symbol。所以问题就变成了先获取symbol,所以要查基础数据,查到新合约,就订阅,然后读新老合约的价格