Exemplo n.º 1
0
        // 订单状态跟踪
        public void OnOrderStatusChange(Order order)
        {
            if (order != _order)
            {
                return;
            }

            _st.Print("==========订单变化===========");
            OrderHelper.PrintOrderStatus(_st, order);

            if (order.MQOrderStatus == EnumMQOrderStatus.全部成交)
            {
                if (_status == HedgeStatus.WaitOpenOrderComplete)
                {
                    _status = HedgeStatus.WaitClosePosition;
                }
                else if (_status == HedgeStatus.WaitCloseOrderComplete)
                {
                    _status = HedgeStatus.WaitOpenPosition;
                }

                _orderLock = false;
            }
            else if (order.MQOrderStatus == EnumMQOrderStatus.废单)
            {
                if (_status == HedgeStatus.WaitOpenOrderComplete)
                {
                    _openFailedTimes++;
                }
                else if (_status == HedgeStatus.WaitCloseOrderComplete)
                {
                    _closeFailedTimes++;
                }
            }
        }
Exemplo n.º 2
0
        public HedgeOrderTracer(StrategyEx st, Future future, int volume)
        {
            _st     = st;
            _future = future;
            _volume = volume;

            _orderLock = false;
            _status    = HedgeStatus.WaitOpenPosition;

            _openHitTimes  = 0;
            _closeHitTimes = 0;

            _openFailedTimes  = 0;
            _closeFailedTimes = 0;
        }
Exemplo n.º 3
0
        // 对冲方向平仓
        public void ClosePosition(double lastPrice, double priceDiff)
        {
            if (_orderLock || _status != HedgeStatus.WaitClosePosition)
            {
                return;
            }

            double      priceLimite = getClosePrice(lastPrice, priceDiff);
            EnumBuySell dir         = getClosePositionDir();

            _order = _st.SendOrder(_st.DefaultAccount, _future.ID, EnumMarket.期货, _future.ExchangeID,
                                   priceLimite, _volume, dir, EnumOpenClose.平今仓, EnumOrderPriceType.市价,
                                   EnumOrderTimeForce.当日有效, EnumHedgeFlag.投机);

            _orderLock = true;
            _status    = HedgeStatus.WaitCloseOrderComplete;
            _closeHitTimes++;

            _st.Print("===========》平今仓:");
            OrderHelper.PrintOrderStatus(_st, _order);
        }