public void CanConsumeTradeMarginStream() { var tradeMarginListener = _streamingClient.BuildTradeMarginListener(); // set up a handler to respond to stream events var gate = new AutoResetEvent(false); TradeMarginDTO actual = null; Stopwatch sw = new Stopwatch(); sw.Start(); tradeMarginListener.MessageReceived += (s, e) => { Console.WriteLine( "-----------------------------------------------"); sw.Stop(); actual = e.Data; Console.WriteLine("event received in {0} seconds", TimeSpan.FromMilliseconds(sw.ElapsedMilliseconds)); Console.WriteLine(actual.ToStringWithValues()); Console.WriteLine( "-----------------------------------------------"); gate.Set(); }; // place a trade to give the margin listener something to listen to AccountInformationResponseDTO accounts = _authenticatedClient.AccountInformation.GetClientAndTradingAccount(); PriceDTO marketInfo = GetMarketInfo(80905); NewTradeOrderRequestDTO trade = new NewTradeOrderRequestDTO() { AuditId = marketInfo.AuditId, AutoRollover = false, BidPrice = marketInfo.Bid, Close = null, Currency = null, Direction = "buy", IfDone = null, MarketId = marketInfo.MarketId, OfferPrice = marketInfo.Offer, Quantity = 1, QuoteId = null, TradingAccountId = accounts.SpreadBettingAccount.TradingAccountId }; var response = _authenticatedClient.TradesAndOrders.Trade(trade); gate.WaitOne(50000); _streamingClient.TearDownListener(tradeMarginListener); // close the tradeMarginListener //marketInfo = GetMarketInfo(80905); //int orderId = response.OrderId; //trade = new NewTradeOrderRequestDTO() //{ // AuditId = marketInfo.AuditId, // AutoRollover = false, // BidPrice = marketInfo.Bid, // Close = new int[] { orderId }, // Currency = null, // Direction = "sell", // IfDone = null, // MarketId = marketInfo.MarketId, // OfferPrice = marketInfo.Offer, // Quantity = 1, // QuoteId = null, // TradingAccountId = accounts.SpreadBettingAccount.TradingAccountId //}; //_authenticatedClient.TradesAndOrders.Trade(trade); Assert.IsNotNull(actual, "did not get a streaming event"); }