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); }
private void HandleSnapshotTimerInterval(object state) { return; if (snapshotSecurityIterator == 0) { // take snapshot of all books // i.e. generate all kinds of messages // x Book Quotes – Bids and Offers // x Implied Book Quotes – Bids and Offers // Last Trade // Opening Prices // Session High and Low Trade Prices // Session High Bid and Session Low Offer // Fixing Price // Settlement Price // Cleared Trade Volume // Open Interest // Electronic Volume // Threshold Limits //SendRangeUpdate(e, book); //SendOpenPriceUpdate(e, book); //SendClearedVolumeUpdate(e, book); //SendOpenInterestUpdate(); //SendSettlementUpdate(e, book); snapshotTime = DateTime.UtcNow; } var sec = securities[snapshotSecurityIterator]; var update = new IncrementalUpdate(MatchEventIndicator.LastMessage, snapshotTime); update.MDEntries.Add(MarketDataUpdateDataBlock.VolumeNew(sec, incrementalSeqNums[sec], 0)); incrementalSeqNums[sec]++; snapshotServer.Send(update); // move iterator on snapshotSecurityIterator++; if (snapshotSecurityIterator >= securities.Count) { snapshotSecurityIterator = 0; } }