private static void EmitPortfolioRemoved(Portfolio portfolio) { if (PortfolioManager.PortfolioRemoved != null) { PortfolioManager.PortfolioRemoved(new PortfolioEventArgs(portfolio)); } }
private void O3KsaYYaRC(object sender, AccountTransactionEventArgs e) { if (this.Mk5dJuOhmC || !this.persistent) { return; } PortfolioManager.vwIs2WhnRQ(this, e.Transaction); }
public void Save() { if (this.persistent) { return; } PortfolioManager.Save(this); }
public void Clear(bool clearPerformance) { this.Cats5kfBGV(); this.positions.Clear(); this.transactions.Clear(); this.account.Clear(); if (clearPerformance && this.performance != null) { this.performance.GcxBG7nv0L(); } if (this.persistent) { PortfolioManager.Clear(this); } if (this.Cleared != null) { this.Cleared(this, EventArgs.Empty); } }
public static void Remove(Portfolio portfolio) { PortfolioManager.server.Remove(portfolio); PortfolioManager.portfolios.Remove(portfolio); PortfolioManager.EmitPortfolioRemoved(portfolio); }
internal static void Add(Portfolio portfolio) { PortfolioManager.portfolios.Add(portfolio); PortfolioManager.EmitPortfolioAdded(portfolio); }
public void Add(Transaction transaction) { lock (this.dataLock) { bool posOpened = false; bool posChanged = true; bool posClosed = false; double local_4 = 0.0; double local_5 = 0.0; double local_6 = 0.0; Position position = this.positions[transaction.Instrument]; if (position == null) { position = new Position(this, transaction); this.positions.Add(position); if (this.monitored) { this.WatchPosition(position); } if (transaction.Margin != 0.0) { local_4 = transaction.Margin; local_6 = 0.0; local_5 = transaction.Debt; position.Margin = transaction.Margin; position.Debt = transaction.Debt; } posOpened = true; } else { if (transaction.Margin != 0.0) { if (position.Side == PositionSide.Long && transaction.Side == Side.Buy || position.Side == PositionSide.Short && (transaction.Side == Side.Sell || transaction.Side == Side.SellShort)) { local_4 = transaction.Margin; local_6 = 0.0; local_5 = transaction.Debt; position.Margin += transaction.Margin; position.Debt += transaction.Debt; } if (position.Side == PositionSide.Long && (transaction.Side == Side.Sell || transaction.Side == Side.SellShort) || position.Side == PositionSide.Short && transaction.Side == Side.Buy) { if (position.Qty == transaction.Qty) { double temp_152 = position.Margin; local_4 = 0.0; local_6 = position.Debt; local_5 = 0.0; position.Margin = 0.0; position.Debt = 0.0; } else if (position.Qty > transaction.Qty) { double temp_131 = transaction.Margin; local_4 = 0.0; local_6 = position.Debt * transaction.Qty / position.Qty; local_5 = 0.0; position.Margin -= transaction.Margin; position.Debt -= local_6; } else { double local_7 = transaction.Qty - position.Qty; double local_8 = local_7 * transaction.Price; if (transaction.Instrument.Factor != 0.0) { local_8 *= transaction.Instrument.Factor; } double temp_110 = position.Margin; double local_4_1 = transaction.Instrument.Margin * local_7; local_6 = position.Debt; local_5 = local_8 - local_4_1; position.Margin = local_4_1; position.Debt = local_5; } } } position.Add(transaction); if (position.Qty == 0.0) { this.positions.Remove(position); if (this.monitored) { this.UnWatchPosition(position); } posClosed = true; } } this.transactions.Add(transaction); if (!this.Mk5dJuOhmC && this.persistent) { PortfolioManager.Add(this, transaction); } this.EmitTransactionAdded(transaction); if (!this.Mk5dJuOhmC) { this.account.Add(transaction.CashFlow + local_5 - local_6, transaction.Currency, transaction.DateTime, transaction.Text); } if (posOpened) { this.EmitPositionOpened(position); } if (posChanged) { this.EmitPositionChanged(position); } if (posClosed) { this.EmitPositionClosed(position); } this.EmitCompositionChanged(); if (this.Mk5dJuOhmC) { return; } this.EmitValueChanged(position); } }
public Portfolio(string name, string description) : this() { this.Name = name; this.Description = description; PortfolioManager.Add(this); }