public void sell(IAsset asset, int number) { // manage C# portfolio double price = asset.getPrice(); Hedging_Portfolio.removeAsset(asset, number); cash += price * number; Operations_History.AddFirst(new Operation.Operation(DateTime.Now, "sell", asset, number, asset.getPrice())); // manage BD portfolio if (asset is Equity) { int asset_id = Access.GetIdFromName(asset.getName()); double total = Access.getPortfolioComposition(asset_id, DateTime.Today); AccessBD.Write.storePortfolioComposition(DateTime.Today, asset_id, total - number); AccessDB.setHedgingPortfolioValue(DateTime.Today, (Hedging_Portfolio.getPrice() + cash)); Write.storeCashValue(DateTime.Today, cash); } else if (asset is Currency) { int cur_id = Access.getForexIdFromCurrency(((Currency)asset).getEnum()); double total = Access.getPortfolioComposition(cur_id, DateTime.Today); Write.storePortfolioComposition(DateTime.Today, cur_id, total - number); AccessDB.setHedgingPortfolioValue(DateTime.Today, Hedging_Portfolio.getPrice() + cash); Write.storeCashValue(DateTime.Today, cash); } }
public void buy(IAsset asset, int number) { double price = asset.getPriceEuro(DateTime.Today); if (price * number < cash) { // manage C# portfolio Hedging_Portfolio.addAsset(asset, number); cash -= price * number; Operations_History.AddFirst(new Operation.Operation(DateTime.Now, "buy", asset, number, asset.getPrice())); // manage BD portfolio if (asset is Equity) { int asset_id = Access.GetIdFromName(asset.getName()); double total = Access.getPortfolioComposition(asset_id, DateTime.Today); AccessBD.Write.storePortfolioComposition(DateTime.Today, asset_id, total + number); AccessDB.setHedgingPortfolioValue(DateTime.Today, (Hedging_Portfolio.getPrice() + cash)); Write.storeCashValue(DateTime.Today, cash); } else if (asset is Currency) { int cur_id = Access.getForexIdFromCurrency(((Currency)asset).getEnum()); double total = Access.getPortfolioComposition(cur_id, DateTime.Today); Write.storePortfolioComposition(DateTime.Today, cur_id, total + number); AccessDB.setHedgingPortfolioValue(DateTime.Today, Hedging_Portfolio.getPrice() + cash); Write.storeCashValue(DateTime.Today, cash); } } else { throw new ArgumentOutOfRangeException("Not enough cash to buy asset(s)"); } }