Ejemplo n.º 1
0
        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;
                }

                // 当前状态禁止此项操作,时间不对,应当等下次操作
            }
        }
Ejemplo n.º 2
0
        public override void OnOrderRejected(Order order)
        {
            DualPosition.OrderRejected(order);

            // 当前状态禁止此项操作,时间不对,应当等下次操作
        }