Пример #1
0
        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");
        }