Exemple #1
0
        protected bool processTicker(BaseTicker ticker)
        {
            // true - тікер обробили, його потрібно вивести
            // false - тікер не змінився
            bool processed = false;

            if (ticker.Symbol != string.Empty && ticker.BidPrice != 0 && ticker.AskPrice != 0 && ticker.TotalTradedVolume != 0)
            {
                if (totalTicker.dictionaryTicker.ContainsKey(ticker.Symbol))
                {
                    BaseTicker updatedTicker;
                    processed = calculateTicker(ticker, out updatedTicker);
                    if (processed)
                    {
                        //totalTicker.dictionaryTicker[ticker.Symbol] = updatedTicker;
                        totalTicker.dictionaryTicker.AddOrUpdate(ticker.Symbol, updatedTicker, (k, v) => updatedTicker);
                    }
                }
                else
                {
                    processed = true;
                    //totalTicker.dictionaryTicker[ticker.Symbol] = ticker;
                    totalTicker.dictionaryTicker.TryAdd(ticker.Symbol, ticker);
                }
            }
            return(processed);
        }
Exemple #2
0
        protected override void OnMessage(string data)
        {
            BinanceStreamTick eventData = JsonConvert.DeserializeObject <BinanceStreamTick>(data);
            BaseTicker        ticker    = new BaseTicker();

            ticker.Symbol            = _mappings[ProviderId].getSymbol(eventData.Data.SymbolApi);
            ticker.AskPrice          = eventData.Data.BestAskPrice;
            ticker.BidPrice          = eventData.Data.BestBidPrice;
            ticker.TotalTradedVolume = eventData.Data.TotalTradedQuoteAssetVolume;

            if (processTicker(ticker))
            {
                Console.WriteLine($"[{ProviderName}] {ticker.Symbol} : Ask = {ticker.AskPrice}  Bid = {ticker.BidPrice} Volume = {ticker.TotalTradedVolume}");
            }
            else
            {
                Console.WriteLine($"[{ProviderName}] {ticker.Symbol}: data not changed");
            }
        }
Exemple #3
0
        protected bool calculateTicker(BaseTicker newTicker, out BaseTicker resultTicker)
        {
            // true - прийшов новий тікер
            // false - тікер рівний тікеру в dictionaryTicker
            bool       changed    = false;
            BaseTicker lastTicker = totalTicker.dictionaryTicker[newTicker.Symbol];

            if (lastTicker.AskPrice != newTicker.AskPrice ||
                lastTicker.BidPrice != newTicker.BidPrice ||
                lastTicker.TotalTradedVolume != newTicker.TotalTradedVolume)
            {
                resultTicker = newTicker;
                changed      = true;
            }
            else
            {
                resultTicker = new BaseTicker();
            }

            return(changed);
        }
        protected override void OnMessage(string data)
        {
            // get socket data
            BinanceStreamTick eventData = JsonConvert.DeserializeObject <BinanceStreamTick>(data);
            BaseTicker        ticker    = new BaseTicker()
            {
                Symbol            = eventData.Data.Symbol,
                AskPrice          = eventData.Data.BestAskPrice,
                BidPrice          = eventData.Data.BestBidPrice,
                TotalTradedVolume = eventData.Data.TotalTradedQuoteAssetVolume
            };

            // check the data has changed
            if (!EqualsTicker(ticker))
            {
                Console.WriteLine($"{ticker.Symbol} : Ask = {ticker.AskPrice}  Bid = {ticker.BidPrice} Volume = {ticker.TotalTradedVolume}");
            }
            else
            {
                Console.WriteLine($"{ticker.Symbol}: data not changed");
            }
        }