SymbolInformation CreateSymbolInformation(Binance.Market market)
        {
            var priceFilter       = market.filters.SingleOrDefault((f) => f.filterType == Binance.FilterType.PRICE_FILTER.ToString());
            var lotSizeFilter     = market.filters.SingleOrDefault((f) => f.filterType == Binance.FilterType.LOT_SIZE.ToString());
            var minNotionalFilter = market.filters.SingleOrDefault((f) => f.filterType == Binance.FilterType.MIN_NOTIONAL.ToString());
            var cmcEntry          = GetCmcEntry(market.baseAsset);

            return(new SymbolInformation
            {
                BaseAsset = market.baseAsset,
                QuoteAsset = market.quoteAsset,
                Symbol = market.symbol,
                Status = market.status,
                MinPrice = priceFilter.minPrice,
                MaxPrice = priceFilter.maxPrice,
                TickSize = priceFilter.tickSize,
                PriceDecimals = DigitsCount(priceFilter.tickSize),
                MinQuantity = lotSizeFilter.minQty,
                MaxQuantity = lotSizeFilter.maxQty,
                StepSize = lotSizeFilter.stepSize,
                OrderTypes = market.orderTypes,
                QuantityDecimals = DigitsCount(lotSizeFilter.stepSize),
                MinNotional = minNotionalFilter.minNotional,
                TotalDecimals = DigitsCount(minNotionalFilter.minNotional),
                IsMarginTradingAllowed = market.isMarginTradingAllowed,
                CmcId = cmcEntry != null ? cmcEntry.id : -1,
                CmcName = cmcEntry != null ? cmcEntry.name : market.baseAsset,
                CmcSymbol = cmcEntry != null ? cmcEntry.symbol : market.symbol
            });
        }
Esempio n. 2
0
        SymbolInformation CreateSymbolInformation(Binance.Market market)
        {
            var priceFilter   = market.filters.SingleOrDefault((f) => f.filterType == Binance.FilterType.PRICE_FILTER.ToString());
            var lotSizeFilter = market.filters.SingleOrDefault((f) => f.filterType == Binance.FilterType.LOT_SIZE.ToString());

            return(new SymbolInformation()
            {
                BaseAsset = market.baseAsset,
                QuoteAsset = market.quoteAsset,
                Symbol = market.symbol,
                Status = market.status,
                MinPrice = priceFilter.minPrice,
                MaxPrice = priceFilter.maxPrice,
                PriceDecimals = DigitsCount(priceFilter.tickSize),
                MinQuantity = priceFilter.minQty,
                MaxQuantity = priceFilter.maxQty,
                QuantityDecimals = DigitsCount(lotSizeFilter.stepSize),
            });
        }
        SymbolInformation CreateSymbolInformation(Binance.Market market)
        {
            var priceFilter   = market.filters.SingleOrDefault((f) => f.filterType == Binance.FilterType.PRICE_FILTER.ToString());
            var lotSizeFilter = market.filters.SingleOrDefault((f) => f.filterType == Binance.FilterType.LOT_SIZE.ToString());
            var cmcEntry      = cmc_listing.FirstOrDefault(x => CorrectAssetName(market.baseAsset).Equals(x.symbol, StringComparison.CurrentCultureIgnoreCase));

            Debug.WriteLineIf(cmcEntry == null, $"Missing {market.baseAsset}");
            return(new SymbolInformation()
            {
                BaseAsset = market.baseAsset,
                QuoteAsset = market.quoteAsset,
                Symbol = market.symbol,
                Status = market.status,
                MinPrice = priceFilter.minPrice,
                MaxPrice = priceFilter.maxPrice,
                PriceDecimals = DigitsCount(priceFilter.tickSize),
                MinQuantity = priceFilter.minQty,
                MaxQuantity = priceFilter.maxQty,
                QuantityDecimals = DigitsCount(lotSizeFilter.stepSize),
                CmcId = cmcEntry != null ? cmcEntry.id : -1,
                CmcName = cmcEntry != null ? cmcEntry.name : market.baseAsset,
                CmcSymbol = cmcEntry != null ? cmcEntry.symbol : market.symbol
            });
        }