Example #1
0
        /// <summary>
        /// Downloads all symbols from the exchanges and filters out the coins with enough 24hr Volume
        /// </summary>
        /// <returns></returns>
        private void FindCoinsWithEnoughVolume()
        {
            _symbols = new List <ExtendedSymbol>();
            var allSymbolsMeta = _api.GetMarketSymbolsMetadataAsync().Result;
            var allTickers     = _api.GetTickersAsync().Result;

            // for each symbol
            foreach (var metadata in allSymbolsMeta)
            {
                string symbol = metadata.MarketSymbol.ToUpperInvariant();
                if (!IsValidCurrency(symbol))
                {
                    // ignore, symbol has wrong currency
                    continue;
                }

                // check 24hr volume
                var ticker = allTickers.FirstOrDefault(e => e.Key == symbol).Value;
                var volume = ticker.Volume.QuoteCurrencyVolume;
                if (_api is ExchangeBittrexAPI)
                {
                    // bittrex reports wrong volume :-(
                    volume = ticker.Volume.BaseCurrencyVolume;
                }

                if (volume < _settings.Min24HrVolume)
                {
                    // ignore since 24hr volume is too low
                    continue;
                }

                if (ticker.Ask < _settings.MinPrice)
                {
                    Trace.WriteLine($"Ignoring because price is too low: {ticker.Ask}");
                    continue;
                }

                SymbolTrend fourHourTrend = new SymbolTrend(4);
                SymbolTrend oneHourTrend  = new SymbolTrend(1);

                // add to list
                ExtendedSymbol extendedSymbol = new ExtendedSymbol()
                {
                    Symbol = metadata,
                    Ticker = ticker,
                    Trends = new SymbolTrend[2]
                };

                extendedSymbol.Trends[0] = fourHourTrend;
                extendedSymbol.Trends[1] = oneHourTrend;

                _symbols.Add(extendedSymbol);
            }
            _symbols = _symbols.OrderBy(e => e.Symbol.MarketSymbol).ToList();
        }
Example #2
0
 public void FinalizeTrendCandlesLookup(bool wasSuccesful)
 {
     // schedule the next time
     if (wasSuccesful)
     {
         SymbolTrend  firstTrend = _symbols[0].Trends[0];
         MarketCandle candle     = firstTrend.Candle;
         nextFetchCandlesTime = candle.Timestamp.AddHours(firstTrend.TimeframeInHours);
     }
     else
     {
         nextFetchCandlesTime = DateTime.UtcNow.AddMinutes(5);
     }
 }