public override TransactionFillDetails GetTransactionFillDetails( IOrderSizeBased order, Price price, DateTime settlementDate, IFeeFactory feeFactory, decimal fillRatio, IExchange exchange) { TransactionFillDetails details = base.GetTransactionFillDetails(order, price, settlementDate, feeFactory, fillRatio, exchange); // accrued interest if (DoesPayInterest) { AccruedInterestDetails calc = AccruedInterest(details.Size, settlementDate, exchange); if (calc.IsRelevant) details.AccruedInterest = calc.AccruedInterest.Abs() * (decimal)order.Side * -1M; } return details; }
public virtual TransactionFillDetails GetTransactionFillDetails( IOrderSizeBased order, Price price, DateTime settlementDate, IFeeFactory feeFactory, decimal fillRatio, IExchange exchange) { Money serviceCharge = null; Money commission = null; decimal serviceChargePercentageforOrder = getServiceChargePercentage(order, exchange); // Use the Value of the child order -> difference will go to Crumble account InstrumentSize size = order.Value * fillRatio; Money amount = size.CalculateAmount(price); if (serviceChargePercentageforOrder != 0M) serviceCharge = (amount * serviceChargePercentageforOrder).Abs().Negate(); TransactionFillDetails details = new TransactionFillDetails(size, amount, null, serviceCharge, serviceChargePercentageforOrder, commission, order.GrossAmount, order.Side); details.SetSign(order.Side); return details; }
/// <summary> /// Constructor, creates an aggregated order from a child order /// </summary> /// <param name="account">User account</param> /// <param name="childOrder">Child order</param> public AggregateSizeOrder(IAccountTypeInternal account, IOrderSizeBased childOrder) : base(account, childOrder.Value.Clone(0M), childOrder.IsClosure, null, true) { base.Side = childOrder.Side; }