Example #1
0
        public void ReturnsSameFeesForStableCoinsWithoutPairs()
        {
            IFeeModel feeModel = new BinanceFeeModel();

            var tz = TimeZones.NewYork;

            // Use a StableCoin without pair in Binance
            Security usdcusd = new Crypto(
                SecurityExchangeHours.AlwaysOpen(tz),
                new Cash("USD", 0, 10),
                new SubscriptionDataConfig(typeof(TradeBar), Symbol.Create("USDCUSD", SecurityType.Crypto, Market.Binance), Resolution.Minute, tz, tz, true, false, false),
                new SymbolProperties("USDCUSD", "USD", 1, 0.01m, 0.00000001m, string.Empty),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null
                );

            usdcusd.SetMarketPrice(new Tick(DateTime.UtcNow, usdcusd.Symbol, 100, 100));

            var time          = new DateTime(2019, 2, 1);
            var stableCoinFee = feeModel.GetOrderFee(
                new OrderFeeParameters(
                    usdcusd,
                    new MarketOrder(usdcusd.Symbol, 1, time)
                    )
                );

            var normalPairFee = feeModel.GetOrderFee(
                new OrderFeeParameters(
                    Security,
                    new MarketOrder(Security.Symbol, 1, time)
                    )
                );

            Assert.AreEqual(normalPairFee.Value.Amount, stableCoinFee.Value.Amount);
        }
Example #2
0
        public void ReturnLongOrderTakerFees(OrderTestParameters parameters)
        {
            IFeeModel feeModel = new BinanceFeeModel();

            var order = parameters.CreateLongOrder(Quantity);
            var price = order.Type == OrderType.Limit ? ((LimitOrder)order).LimitPrice : HighPrice;
            var fee   = feeModel.GetOrderFee(new OrderFeeParameters(Security, order));

            Assert.AreEqual(
                BinanceFeeModel.TakerTier1Fee * price * Math.Abs(Quantity),
                fee.Value.Amount);
            Assert.AreEqual("USDT", fee.Value.Currency);
        }
Example #3
0
        public void ReturnShortOrderCustomTakerFees(decimal mFee, decimal tFee, OrderTestParameters parameters)
        {
            IFeeModel feeModel = new BinanceFeeModel(mFee, tFee);

            var order = parameters.CreateShortOrder(Quantity);
            var price = order.Type == OrderType.Limit ? ((LimitOrder)order).LimitPrice : LowPrice;
            var fee   = feeModel.GetOrderFee(new OrderFeeParameters(Security, order));

            Assert.AreEqual(
                tFee * price * Math.Abs(Quantity),
                fee.Value.Amount);
            Assert.AreEqual("USDT", fee.Value.Currency);
        }