模拟回测时平仓经常报ERR_INVALID_POSITION,请问是什么问题 下面是代码
# 下单交易
if mp > 0: # 如果当前持有多单
if price < long_stop_loss: # 如果当前价格小于多头止损线
exchange.SetDirection("closebuy") # 设置交易方向和类型
exchange.Sell(price - 1, mp) # 平多单
elif mp < 0: # 如果当前持有空单
if price > short_stop_loss: # 如果当前价格大于空头止损线
exchange.SetDirection("closesell") # 设置交易方向和类型
exchange.Buy(price + 1, -mp) # 平空单
elif mp == 0: # 如果当前无持仓
if price > last_high: # 如果当前价格大于上一根k线最高价
exchange.SetDirection("buy") # 设置交易方向和类型
exchange.Buy(price + 1, 1) # 开多单
elif price < last_low: # 如果价格小于上一根k线最低价
exchange.SetDirection("sell") # 设置交易方向和类型
exchange.Sell(price - 1, 1) # 开空单
# 获取持仓
real_position = _C(exchange.GetPosition) # 获取持仓数组
if len(real_position) > 0: # 如果持仓数组长度大于0
real_position = real_position[0]
if real_position['ContractType'] == 'p2005': # 如果持仓品种等于订阅品种
if real_position['Type'] == 0 or real_position['Type'] == 2: # 如果是多单
mp = real_position['Amount'] # 赋值持仓为正数
elif real_position['Type'] == 1 or real_position['Type'] == 3:
mp = -real_position['Amount'] # 赋值持仓为负数
else:
mp = 0 # 赋值持仓为0