示例#1
0
 public void SubscribeToSymbolTradeFeed(InstrInfo[] instr, LastTrdHndlr handler)
 {
     try
     {
         if (instr[0].type == InstrInfo.EType.EQUITY)
         {
             eqLastTrdClient.Subscribe(instr, handler);
         }
         else if (instr[0].type == InstrInfo.EType.OPTION)
         {
             optLastTrdClient.Subscribe(instr, handler);
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("Trade subscription error: " + e.Message);
     }
 }
示例#2
0
        public void LinkToClient()
        {
            var api     = new Mock <IBinanceApi>().Object;
            var client1 = new Mock <ITradeClient>().Object;
            var client2 = new TradeClient();
            var symbol1 = Symbol.BTC_USDT;
            var symbol2 = Symbol.LTC_BTC;

            client2.Subscribe(symbol1);

            var clientSubscribeStreams = client2.SubscribedStreams.ToArray();

            Assert.Equal(TradeClient.GetStreamName(symbol1), clientSubscribeStreams.Single());

            var cache = new TradeCache(api, client1)
            {
                Client = client2 // link client.
            };

            // Client subscribed streams are unchanged after link to unsubscribed cache.
            Assert.Equal(clientSubscribeStreams, client2.SubscribedStreams);

            cache.Client = client1; // unlink client.

            // Subscribe cache to symbol.
            cache.Subscribe(symbol2);

            // Cache is subscribed to symbol.
            Assert.Equal(TradeClient.GetStreamName(symbol2), cache.SubscribedStreams.Single());

            cache.Client = client2; // link to client.

            // Client has second subscribed stream from cache.
            Assert.True(client2.SubscribedStreams.Count() == 2);
            Assert.Contains(TradeClient.GetStreamName(symbol2), client2.SubscribedStreams);
        }