为了方便用 set_target_volume() 来管理实盘交易,上次发生过一次开仓后,紧接着平仓,再开仓,再平仓,一共循环了4次才稳定下来,浪费了点差和手续费,但是上次没有详细罗列每一步的数据,无法确定原因,后面2次交易又正常了,不过最近一次又发现同样的重复开平问题,这次罗列了每一步的数据,才证实了 api.get_position(SYMBOL).pos_long/short 与api.get_position(SYMBOL).open_price_long/short 居然不是同步更新的,api.get_position(SYMBOL).pos_long/short 取到开仓数据后,进入平仓模块,此时的api.get_position(SYMBOL).open_price_long/short 居然读数为0,以此数据加减止损点差来判断平仓条件的话,就可能会立即触发,从而造成了反复的开平,直到某个点,这两个数据同时更新了才会停下来。用 set_target_volume() 来管理实盘交易的话,这是一个麻烦的问题,希望能解决一下。
lookis 已回答的问题 2020年7月25日
PS. 在你这个场景下一个最简单的解决方案就是去判断是否需要平仓时可以考虑增加一个判断
if position.open_price_long > 0 or position.open_price_short > 0: #平仓逻辑判断
YF WANG 发表新评论 2020年7月25日
对,这个应对方法简单,谢谢!