public override void ComputeCapitalRealization(RealizedProfit realizedProfit) { Net net = realizedProfit.For(Instrument); if (net.Quantity < Quantity) { net.Profit -= new Price(net.Quantity * UnitPrice.Value + Tax + Brokerage); net.Quantity = 0; } else { // TODO: We probably want EffectiveTransactionAmount here net.Profit -= Amount(); net.Quantity -= Quantity; } }
public override void ComputeCapitalRealization(RealizedProfit realizedProfit) { realizedProfit.For(Instrument).Quantity -= Quantity; }
public override void ComputeCapitalRealization(RealizedProfit realizedProfit) { Net net = realizedProfit.For(Instrument); net.Profit += Amount(); net.Quantity += Quantity; }
public RealizedProfit RealizedProfit() { RealizedProfit realizedProfit = new RealizedProfit(); List<Transaction> sellTransactions = TransactionList.FindAll(transaction => !(transaction is BuyTransaction)); foreach (var transaction in sellTransactions) { transaction.ComputeCapitalRealization(realizedProfit); } List<Transaction> buyTransactions = TransactionList.FindAll(transaction => transaction is BuyTransaction); foreach (var transaction in buyTransactions) { if (realizedProfit.For(transaction.Instrument).Quantity ==0 ) continue; transaction.ComputeCapitalRealization(realizedProfit); } return realizedProfit; }
public override void ComputeCapitalRealization(RealizedProfit realizedProfit) { realizedProfit.For(Instrument).Profit += Amount(); }