Example #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var obj  = JObject.Load(reader);
            var type = new SymbolFilterTypeConverter(false).ReadString(obj["filterType"].ToString());
            BinanceSymbolFilter result;

            switch (type)
            {
            case SymbolFilterType.LotSize:
                result = new BinanceSymbolLotSizeFilter
                {
                    MaxQuantity = (decimal)obj["maxQty"],
                    MinQuantity = (decimal)obj["minQty"],
                    StepSize    = (decimal)obj["stepSize"]
                };
                break;

            case SymbolFilterType.MarketLotSize:
                result = new BinanceSymbolMarketLotSizeFilter
                {
                    MaxQuantity = (decimal)obj["maxQty"],
                    MinQuantity = (decimal)obj["minQty"],
                    StepSize    = (decimal)obj["stepSize"]
                };
                break;

            case SymbolFilterType.MinNotional:
                result = new BinanceSymbolMinNotionalFilter
                {
                    MinNotional         = (decimal)obj["minNotional"],
                    ApplyToMarketOrders = (bool)obj["applyToMarket"],
                    AveragePriceMinutes = (int)obj["avgPriceMins"]
                };
                break;

            case SymbolFilterType.Price:
                result = new BinanceSymbolPriceFilter
                {
                    MaxPrice = (decimal)obj["maxPrice"],
                    MinPrice = (decimal)obj["minPrice"],
                    TickSize = (decimal)obj["tickSize"]
                };
                break;

            case SymbolFilterType.MaxNumberAlgorithmicOrders:
                result = new BinanceSymbolMaxAlgorithmicOrdersFilter
                {
                    MaxNumberAlgorithmicOrders = (int)obj["maxNumAlgoOrders"]
                };
                break;

            case SymbolFilterType.MaxNumberOrders:
                result = new BinanceSymbolMaxOrdersFilter
                {
                    MaxNumberOrders = (int)obj["maxNumOrders"]
                };
                break;

            case SymbolFilterType.IcebergParts:
                result = new BinanceSymbolIcebergPartsFilter
                {
                    Limit = (int)obj["limit"]
                };
                break;

            case SymbolFilterType.PricePercent:
                result = new BinanceSymbolPercentPriceFilter
                {
                    MultiplierUp        = (decimal)obj["multiplierUp"],
                    MultiplierDown      = (decimal)obj["multiplierDown"],
                    AveragePriceMinutes = (int)obj["avgPriceMins"]
                };
                break;

            default:
                Debug.WriteLine("Can't parse symbol filter of type: " + obj["filterType"]);
                result = new BinanceSymbolFilter();
                break;
            }
            result.FilterType = type;
            return(result);
        }
Example #2
0
        public override object ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer)
        {
            var obj = JObject.Load(reader);

#pragma warning disable 8604, 8602
            var type = new SymbolFilterTypeConverter(false).ReadString(obj["filterType"].ToString());
            BinanceFuturesSymbolFilter result;
            switch (type)
            {
            case SymbolFilterType.LotSize:
                result = new BinanceSymbolLotSizeFilter
                {
                    MaxQuantity = (decimal)obj["maxQty"],
                    MinQuantity = (decimal)obj["minQty"],
                    StepSize    = (decimal)obj["stepSize"]
                };
                break;

            case SymbolFilterType.MarketLotSize:
                result = new BinanceSymbolMarketLotSizeFilter
                {
                    MaxQuantity = (decimal)obj["maxQty"],
                    MinQuantity = (decimal)obj["minQty"],
                    StepSize    = (decimal)obj["stepSize"]
                };
                break;

            case SymbolFilterType.Price:
                result = new BinanceSymbolPriceFilter
                {
                    MaxPrice = (decimal)obj["maxPrice"],
                    MinPrice = (decimal)obj["minPrice"],
                    TickSize = (decimal)obj["tickSize"]
                };
                break;

            case SymbolFilterType.MaxNumberOrders:
                result = new BinanceSymbolMaxOrdersFilter
                {
                    MaxNumberOrders = (int)obj["limit"]
                };
                break;

            case SymbolFilterType.PricePercent:
                result = new BinanceSymbolPercentPriceFilter
                {
                    MultiplierUp      = (decimal)obj["multiplierUp"],
                    MultiplierDown    = (decimal)obj["multiplierDown"],
                    MultiplierDecimal = (int)obj["multiplierDecimal"]
                };
                break;

            case SymbolFilterType.MaxNumberAlgorithmicOrders:
                result = new BinanceSymbolMaxAlgorithmicOrdersFilter
                {
                    MaxNumberAlgorithmicOrders = (int)obj["limit"]
                };
                break;

            default:
                Debug.WriteLine("Can't parse symbol filter of type: " + obj["filterType"]);
                result = new BinanceFuturesSymbolFilter();
                break;
            }
#pragma warning restore 8604
            result.FilterType = type;
            return(result);
        }