Esempio n. 1
0
            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")));
            }
Esempio n. 2
0
 /// <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")));
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 /// <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)));
 }
Esempio n. 8
0
 public override OrderFee GetOrderFee(OrderFeeParameters parameters)
 {
     return(OrderFee.Zero);
 }