public override OrderFee GetOrderFee(OrderFeeParameters parameters) { // custom fee math var fee = Math.Max( 1m, parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00001m); _algorithm.Log("CustomFeeModel: " + fee); return(new OrderFee(new CashAmount(fee, "USD"))); }
/// <summary> /// Get the fee for this order /// </summary> /// <param name="parameters">A <see cref="OrderFeeParameters"/> object /// containing the security and order</param> /// <returns>The cost of the order in units of the account currency</returns> public override OrderFee GetOrderFee(OrderFeeParameters parameters) { using (Py.GIL()) { if (_extendedVersion) { try { return(_model.GetOrderFee(parameters)); } catch (PythonException) { _extendedVersion = false; } } decimal fee = _model.GetOrderFee(parameters.Security, parameters.Order); return(new OrderFee(new CashAmount(fee, "USD"))); } }
public void CalculateOrderFeeForLongOrShortEquity(int quantity) { var security = SecurityTests.GetSecurity(); security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100)); var feeModel = new AlphaStreamsFeeModel(); var parameters = new OrderFeeParameters( security, new MarketOrder(security.Symbol, quantity, DateTime.UtcNow) ); var fee = feeModel.GetOrderFee(parameters); Assert.AreEqual(Currencies.USD, fee.Value.Currency); var expected = 0m * security.Price * quantity; Assert.AreEqual(expected, fee.Value.Amount); }
/// <summary> /// Get the fee for this order /// </summary> /// <param name="parameters">A <see cref="OrderFeeParameters"/> object /// containing the security and order</param> /// <returns>The cost of the order in units of the account currency</returns> public override OrderFee GetOrderFee(OrderFeeParameters parameters) { using (Py.GIL()) { if (_extendedVersion) { try { return((_model.GetOrderFee(parameters) as PyObject).GetAndDispose <OrderFee>()); } catch (PythonException) { _extendedVersion = false; } } var fee = (_model.GetOrderFee(parameters.Security, parameters.Order) as PyObject).GetAndDispose <decimal>(); return(new OrderFee(new CashAmount(fee, "USD"))); } }
public void CalculateOrderFeeForLongOrShortOptions(int quantity) { var tz = TimeZones.NewYork; var security = new Option(Symbols.SPY_C_192_Feb19_2016, SecurityExchangeHours.AlwaysOpen(tz), new Cash("USD", 0, 0), new OptionSymbolProperties(SymbolProperties.GetDefault("USD")), ErrorCurrencyConverter.Instance ); security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100)); var feeModel = new AlphaStreamsFeeModel(); var parameters = new OrderFeeParameters( security, new MarketOrder(security.Symbol, quantity, DateTime.UtcNow) ); var fee = feeModel.GetOrderFee(parameters); Assert.AreEqual(Currencies.USD, fee.Value.Currency); Assert.AreEqual(Math.Abs(quantity) * 0.50m, fee.Value.Amount); }
public override OrderFee GetOrderFee(OrderFeeParameters parameters) { return(new OrderFee(new CashAmount(1m, "ETH"))); }
public override OrderFee GetOrderFee(OrderFeeParameters parameters) { return(new OrderFee(new CashAmount(FeeAmount, FeeCurrency))); }
public override OrderFee GetOrderFee(OrderFeeParameters parameters) { return(OrderFee.Zero); }