public override void OnOrderRejected(Order order) { double LeavesQty = order.LeavesQty; double flag = order.Side == OrderSide.Buy ? 1 : -1; EnumOpenClose OpenClose = DualPosition.OrderRejected(order); lock (this) { if (EnumOpenClose.OPEN == OpenClose) { // 开仓被拒绝,不再新开仓 // 有可能是钱不够 // 有可能是超出持仓限制 // 有可能是非交易时间 TargetPosition -= flag * LeavesQty; return; } EnumError error = TextResponse.FromText(order.Text); // 无法平仓,不重发单 // 能出现这个问题是持仓计算错误,这已经是策略持仓计算错误了 if (error == EnumError.OVER_CLOSETODAY_POSITION || error == EnumError.OVER_CLOSEYESTERDAY_POSITION || error == EnumError.OVER_CLOSE_POSITION) { TargetPosition -= flag * LeavesQty; return; } // 当前状态禁止此项操作,时间不对,应当等下次操作 } }
public override void OnOrderRejected(Order order) { DualPosition.OrderRejected(order); // 当前状态禁止此项操作,时间不对,应当等下次操作 }