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); }
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); }
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); }