示例#1
0
文件: Bond.cs 项目: kiquenet/B4F
        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;
        }
示例#2
0
        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;
        }
示例#3
0
 /// <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;
 }