コード例 #1
0
        /// <summary>
        /// Replays events for the LimitOrderBooks to rebuild them to their prior state
        /// </summary>
        public void ReplayOrderBooks(Exchange exchange, Journaler journaler)
        {
            exchange.TurnReplayModeOn();
            foreach (var exchangeEssential in exchange.ExchangeEssentials)
            {
                List <Order> ordersForReplay = journaler.GetOrdersForReplay(exchangeEssential.LimitOrderBook);

                if (ordersForReplay != null)
                {
                    Order[] deepCopy = (Order[])GetCopy(ordersForReplay.ToArray());
                    foreach (var order in deepCopy)
                    {
                        if (order.OrderState == OrderState.Accepted)
                        {
                            exchange.PlaceNewOrder(order);
                        }
                        else if (order.OrderState == OrderState.Cancelled)
                        {
                            exchange.CancelOrder(new OrderCancellation(order.OrderId, order.TraderId, order.CurrencyPair));
                        }
                    }
                }
            }
            exchange.TurnReplayModeOff();
        }