Beispiel #1
0
        public async Task <XTicker> GetTicker(string symbolId)
        {
            string symbol = GetSymbol(symbolId);
            var    res    = await m_client.GetTickerAsync(new string[] { symbol });

            return(new XTicker(res.Data[0]));
        }
Beispiel #2
0
        private void DoUpdateMarketPrices(object aState)
        {
            try
            {
                var lChanged = new ConcurrentBag <string>();
                using (var lClient = new BitfinexClient())

                {
                    var lMarketsData = lClient.GetTickerAsync(symbols: "ALL").Result;
                    if (!lMarketsData.Success)
                    {
                        throw new Exception("Unable to get updated market prices info");
                    }
                    Parallel.ForEach(lMarketsData.Data, (lMarketData) =>
                    {
                        string lMarketPairID = lMarketData.Symbol.Remove(0, 1).ToLowerInvariant();
                        MarketPriceInfo lRemoteMarketPrice = new MarketPriceInfo
                        {
                            Last = lMarketData.LastPrice,
                            Bid  = lMarketData.Bid,
                            Ask  = lMarketData.Ask
                        };

                        if ((FMarketPrices.TryGetValue(lMarketPairID, out MarketPriceInfo lPrice) && lPrice != lRemoteMarketPrice) || lPrice == null)
                        {
                            FMarketPrices.AddOrUpdate(lMarketPairID, lRemoteMarketPrice, (key, oldValue) => lRemoteMarketPrice);
                            lChanged.Add(lMarketPairID);
                        }
                    });
                }
Beispiel #3
0
        /// <summary>Gets the bitfinex prices asynchronous.</summary>
        /// <param name="pairs">The pairs.</param>
        /// <param name="stoppingToken">The stopping token.</param>
        /// <returns>Task of IEnumerable of BitfinexSymbolOverview.</returns>
        /// <exception cref="Exception">processed.</exception>
        public async Task <IEnumerable <BitfinexSymbolOverview> > GetBitfinexPricesAsync(IEnumerable <Pair> pairs, CancellationToken stoppingToken)
        {
            int pricesRequestMaxTry = 5;

            do
            {
                var pricesRequest = await _bitfinexClient.GetTickerAsync(stoppingToken, $"symbols=fUSD,t{string.Join(",t", pairs.Select(p => p.Name))}");

                if (!pricesRequest.Success)
                {
                    pricesRequestMaxTry -= 1;

                    if (pricesRequestMaxTry == 0)
                    {
                        await _loggerService.CreateLog(new Log(LogType.Error, $"AutoTrader v{_assemblyVersion}, GetBitfinexPricesAsync()", pricesRequest.Error.Message));

                        throw new Exception("processed");
                    }

                    await Task.Delay(1000 * 20 * 1, stoppingToken);
                }
                else
                {
                    return(pricesRequest.Data);
                }
            }while (true);
        }
Beispiel #4
0
        public async Task <XTicker> GetTicker(string symbolId)
        {
            string            symbol = GetSymbol(symbolId);
            CancellationToken ct     = default;
            var res = await m_client.GetTickerAsync(ct, new string[] { symbol });

            var data = res.Data;
            var res2 = await m_client.GetSymbolsAsync(ct);

            var data2 = res2.Data;
            var first = data.First();

            return(new XTicker(first));
        }
Beispiel #5
0
        private async Task DoUpdatemarketCoins()
        {
            if (FLastMarketCoinsRetrieval == DateTime.MinValue || FLastMarketCoinsRetrieval < DateTime.UtcNow.AddHours(-1))
            {
                using (var lClient = new BitfinexClient())
                {
                    var lCurrenciesResponse = await lClient.GetCurrenciesAsync();

                    var lMarketsResponse = await lClient.GetTickerAsync(symbols : "ALL");

                    var lSymbolDetails = await lClient.GetSymbolDetailsAsync();

                    if (!lCurrenciesResponse.Success || !lMarketsResponse.Success || !lSymbolDetails.Success)
                    {
                        throw new Exception("Failed to retrieve Bitfinex Markets");
                    }
                    BitfinexPair.ExchangeCurrencies = lCurrenciesResponse.Data;
                    FMarkets = lMarketsResponse.Data.Select(lMarket => new BitfinexPair(lMarket.Symbol, lSymbolDetails.Data.Where(lSymbol => string.Equals(lSymbol.Pair, lMarket.Symbol.Remove(0, 1), StringComparison.OrdinalIgnoreCase)).FirstOrDefault())).ToArray();
                }
                FLastMarketCoinsRetrieval = DateTime.UtcNow;
                FLocalCacheOfMarkets.Clear();
            }
        }