Example #1
0
        private void HandleTraded(object sender, TradedEventArgs e)
        {
            var book = (OrderBook)sender;

            SendTradeUpdate(e.Security, e.Time, e.Fills);
            SendBookUpdate(e);
            SendVolumeUpdate(e, book);
        }
Example #2
0
        private void SendVolumeUpdate(TradedEventArgs e, OrderBook book)
        {
            var volumeUpdate = new IncrementalUpdate(MatchEventIndicator.LastVolume, e.Time);

            volumeUpdate.MDEntries.Add(MarketDataUpdateDataBlock.VolumeNew(e.Security,
                                                                           incrementalSeqNums[e.Security],
                                                                           book.SessionVolume));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(volumeUpdate);
        }
Example #3
0
        private void SendOpenInterestUpdate(TradedEventArgs e, OrderBook book)
        {
            var interestUpdate = new IncrementalUpdate(MatchEventIndicator.None, e.Time);

            interestUpdate.MDEntries.Add(MarketDataUpdateDataBlock.OpenInterestNew(e.Security,
                                                                                   incrementalSeqNums[e.Security],
                                                                                   book.PreviousSessionOpenInterest,
                                                                                   book.PreviousSessionDate));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(interestUpdate);
        }
Example #4
0
        private void SendOpenPriceUpdate(TradedEventArgs e, OrderBook book)
        {
            var tradeHighUpdate = new IncrementalUpdate(MatchEventIndicator.None, e.Time);

            tradeHighUpdate.MDEntries.Add(MarketDataUpdateDataBlock.OpenPriceNew(e.Security,
                                                                                 incrementalSeqNums[e.Security],
                                                                                 book.SessionOpenPrice.Value,
                                                                                 false));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(tradeHighUpdate);
        }
Example #5
0
        private void SendSettlementUpdate(TradedEventArgs e, OrderBook book)
        {
            var settlementUpdate = new IncrementalUpdate(MatchEventIndicator.None, e.Time);

            settlementUpdate.MDEntries.Add(MarketDataUpdateDataBlock.SettlePriceNew(e.Security,
                                                                                    incrementalSeqNums[e.Security],
                                                                                    book.PreviousSessionSettlementPrice,
                                                                                    SettlementPriceType.Final,
                                                                                    book.PreviousSessionDate));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(settlementUpdate);
        }
Example #6
0
        private void SendBookUpdate(TradedEventArgs e)
        {
            var bookUpdate = new IncrementalUpdate(MatchEventIndicator.LastRealQuote, e.Time);

            foreach (var bookLevelUpdate in GenerateBookUpdateDataBlock(e.Security))
            {
                bookLevelUpdate.RptSeq = incrementalSeqNums[e.Security];
                incrementalSeqNums[e.Security]++;
                bookUpdate.MDEntries.Add(bookLevelUpdate);
            }
            incrementalServer.Send(bookUpdate);
        }
Example #7
0
        public void OrderTraded()
        {
            var sec = new Security()
            {
                Id = 1, Type = SecurityType.Future, Group = "GC", Product = "GC", Contract = "GCZ6"
            };
            var book = new OrderBook(sec);

            book.SetStatus(SecurityTradingStatus.Open);

            TradedEventArgs firedArgs = null;

            book.Traded += (o, e) => { firedArgs = e; };

            book.CreateLimitOrder(1, TimeInForce.Day, null, Side.Buy, 100, 2);
            book.CreateLimitOrder(3, TimeInForce.Day, null, Side.Sell, 100, 5);

            Debug.Assert(firedArgs != null);
            //Debug.Assert(firedArgs.Price == 100);
            //Debug.Assert(firedArgs.AggressorSide == Side.Sell);
            //Debug.Assert(firedArgs.Quantity == 5);
        }
Example #8
0
        private void SendRangeUpdate(TradedEventArgs e, OrderBook book)
        {
            var tradeHighUpdate = new IncrementalUpdate(MatchEventIndicator.None, e.Time);

            tradeHighUpdate.MDEntries.Add(MarketDataUpdateDataBlock.TradeHighLowNew(e.Security,
                                                                                    incrementalSeqNums[e.Security],
                                                                                    true,
                                                                                    book.SessionMaxTradePrice.Value));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(tradeHighUpdate);

            var tradeLowUpdate = new IncrementalUpdate(MatchEventIndicator.None, e.Time);

            tradeLowUpdate.MDEntries.Add(MarketDataUpdateDataBlock.TradeHighLowNew(e.Security,
                                                                                   incrementalSeqNums[e.Security],
                                                                                   true,
                                                                                   book.SessionMinTradePrice.Value));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(tradeLowUpdate);

            var highBidUpdate = new IncrementalUpdate(MatchEventIndicator.None, e.Time);

            highBidUpdate.MDEntries.Add(MarketDataUpdateDataBlock.TradeHighBidLowAskNew(e.Security,
                                                                                        incrementalSeqNums[e.Security],
                                                                                        Side.Buy,
                                                                                        book.SessionMaxBidPrice.Value));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(highBidUpdate);

            var lowAskUpdate = new IncrementalUpdate(MatchEventIndicator.None, e.Time);

            lowAskUpdate.MDEntries.Add(MarketDataUpdateDataBlock.TradeHighBidLowAskNew(e.Security,
                                                                                       incrementalSeqNums[e.Security],
                                                                                       Side.Sell,
                                                                                       book.SessionMinAskPrice.Value));
            incrementalSeqNums[e.Security]++;
            incrementalServer.Send(lowAskUpdate);
        }