Exemplo n.º 1
0
        private void RecreateOrder(Order order, bool copyDeviationInfo = false)
        {
            var newOrder = CreateOrder(order.LeavesQty, order.GetOpenClose(true));

            if (copyDeviationInfo)
            {
                var info = OrderExtensions.GetOrderInfo(newOrder);
                var old  = OrderExtensions.GetOrderInfo(order);
                info.DeviationInfo = old.DeviationInfo;
            }
            if (OpenOrder == order)
            {
                ClearOrder(ref OpenOrder);
                OpenOrder = newOrder;
            }
            else if (CloseOrder == order)
            {
                ClearOrder(ref CloseOrder);
                CloseOrder = newOrder;
            }
            else if (CloseTodayOrder == order)
            {
                ClearOrder(ref CloseTodayOrder);
                CloseTodayOrder = newOrder;
            }
        }
Exemplo n.º 2
0
 private void Clear()
 {
     OrderExtensions.GetOrderInfo(Order).Processor = null;
     ClearOrder(ref OpenOrder);
     ClearOrder(ref CloseOrder);
     ClearOrder(ref CloseTodayOrder);
     Agent.RemoveProcessor(this);
 }
Exemplo n.º 3
0
 private void ClearOrder(ref Order order)
 {
     if (order != null)
     {
         OrderExtensions.GetOrderInfo(order).Processor = null;
         order = null;
     }
 }
 private void Clear()
 {
     OrderExtensions.GetOrderInfo(_order).processor = null;
     ClearOrder(ref openOrder);
     ClearOrder(ref closeOrder);
     ClearOrder(ref closeTodayOrder);
     _agent.RemoveProcessor(this);
 }
 private static void ClearOrder(ref Order order)
 {
     if (order == null)
     {
         return;
     }
     OrderExtensions.GetOrderInfo(order).processor = null;
     order = null;
 }
Exemplo n.º 6
0
 public OrderProcessor(OrderAgent agent, Order order, Logger logger)
 {
     Agent    = agent;
     Order    = order;
     Manager  = agent.GetPositionManager(order.strategyId);
     ListNode = agent.AddProcessor(this);
     _record  = new OrderRecord(order);
     _info    = OrderExtensions.GetOrderInfo(order);
     _logger  = logger;
     InitRules();
 }
 public OrderProcessor(OrderAgent agent, Order order, Logger logger)
 {
     _agent    = agent;
     _order    = order;
     _position = agent.GetPosition(order);
     _record   = new OrderRecord(order);
     _info     = OrderExtensions.GetOrderInfo(order);
     _logger   = logger;
     listNode  = agent.AddProcessor(this);
     InitRules();
 }
Exemplo n.º 8
0
        public virtual void OnReminder(DateTime dateTime, Order order)
        {
            var info = OrderExtensions.GetOrderInfo(order);

            if (CheckTryCount(info))
            {
                _logger.Debug($"{Order.Id}, time deviation {info.DeviationInfo.TryCount}.");
                Agent.Cancel(order);
            }
            else
            {
                DoFailed(order);
            }
        }
Exemplo n.º 9
0
        private void CheckPriceDeviation(Order order)
        {
            var price = Order.Instrument.Trade.Price;
            var ask   = Order.Instrument.Ask.Price;
            var bid   = Order.Instrument.Bid.Price;

            if (IsDone(order) || IsNotSent(order))
            {
                return;
            }
            var info = OrderExtensions.GetOrderInfo(order);

            if (Math.Abs(order.Price - price) > _info.DeviationInfo.Threshold)
            {
                Do();
            }

            if (_info.DeviationMode == OrderDeviationMode.QuoteAndTrade)
            {
                if ((order.Side == OrderSide.Buy && Math.Abs(order.Price - ask) > _info.DeviationInfo.Threshold) ||
                    (order.Side == OrderSide.Sell && Math.Abs(order.Price - bid) > _info.DeviationInfo.Threshold))
                {
                    Do();
                }
            }

            void Do()
            {
                if (CheckTryCount(info))
                {
                    _logger.Debug($"{Order.Id}, price deviation {info.DeviationInfo.TryCount}.");
                    Agent.Cancel(order);
                }
                else
                {
                    DoFailed(order);
                }
            }
        }
Exemplo n.º 10
0
        private Order CreateOrder(double qty, OpenCloseType openClose)
        {
            var order = Agent.CreateOrder(Order, qty);

            order.SetOpenClose(openClose);
            if (openClose == OpenCloseType.Open)
            {
                order.TimeInForce = Order.TimeInForce;
            }
            else
            {
                if (OpenOrder == null)
                {
                    order.TimeInForce = Order.TimeInForce;
                }
            }
            var info = OrderExtensions.GetOrderInfo(order);

            info.Processor     = this;
            info.ParentOrderId = Order.Id;
            info.DeviationInfo = _info.DeviationInfo;
            info.DeviationMode = _info.DeviationMode;
            return(order);
        }