示例#1
0
        public SymbolFeed(BinanceClient client, CombinedWebSocketClient websocket, BinanceTradeBarsRepository hist, string market, SymbolInfo symbol, DateTime timeNow)
        {
            HistoryDb            = hist;
            this.Client          = client;
            this.WebSocketClient = websocket;
            this.Symbol          = symbol;
            this.Market          = market;
            this.Time            = timeNow;
            Logger = LogManager.GetLogger("Bin" + Symbol + "Feed");

            HistoryId = new SymbolHistoryId(this.Market, Symbol.Key, TimeSpan.FromSeconds(60));
        }
        public static void Run()
        {
            BinanceMarketApi api = new BinanceMarketApi(null, null, ".\\Data2");


            CombinedWebSocketClient cli = new CombinedWebSocketClient();
            var       symbols           = api.GetSymbols().ToArray();
            Stopwatch sw = new Stopwatch();

            List <string> remaining  = new List <string>(symbols.Select(s => s.Key));
            var           subscriber = new asd();

            foreach (var sym in symbols)
            {
                //cli.SubscribePartialDepthStream(sym.Symbol, BinanceExchange.API.Enums.PartialDepthLevels.Five,
                //      d => Console.WriteLine(sym.Symbol + "data"));

                //cli.SubscribeKlineStream(sym.Symbol, KlineInterval.OneMinute, d =>
                //{
                //    if (d.Kline.IsBarFinal)
                //    {
                //        Console.WriteLine($"{DateTime.Now:mm.ss.fff} - {sym.Symbol}");
                //        if (remaining.Contains(d.Symbol))
                //            remaining.Remove(d.Symbol);
                //        sw.Restart();
                //    }
                //});
                cli.SubscribeKlineStream(sym.Key, KlineInterval.OneMinute, subscriber.Handle);
            }

            while (true)
            {
                Thread.Sleep(50);

                if (sw.ElapsedMilliseconds > 5000)
                {
                    foreach (var sym in remaining)
                    {
                        Console.Write(sym + ",");
                    }
                    Console.WriteLine();
                    remaining = new List <string>(symbols.Select(s => s.Key));
                    sw.Reset();
                    cli.Unsubscribe <BinanceKlineData>(subscriber.Handle);
                }
            }
        }