protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate) { if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Connected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting) { lock (connectionStatusUpdate.Connection.Accounts) { Cbi.Account account = connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName); if (account != null) { CurrentValue = 0; foreach (Cbi.Execution execution in account.Executions) { if (execution.Instrument == Instrument) { CurrentValue += execution.Quantity; } } } } } else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting) { lock (connectionStatusUpdate.Connection.Accounts) if (connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName) != null) { CurrentValue = 0; } } }
protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate) { if (connectionStatusUpdate.PriceStatus == Cbi.ConnectionStatus.Connected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting && connectionStatusUpdate.Connection.Accounts.Count > 0 && account == null) { account = connectionStatusUpdate.Connection.Accounts[0]; } else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting && account != null && account.Connection == connectionStatusUpdate.Connection) { account = null; } }
protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate) { BackColor = null; // reset color CurrentValue = 0; Cbi.Account account = null; Cbi.Position position = null; lock (Cbi.Account.All) account = Cbi.Account.All.FirstOrDefault(o => o.Name == AccountName); if (account != null) { lock (account.Positions) position = account.Positions.FirstOrDefault(o => o.Instrument.FullName == Instrument.FullName); } if (position != null) { CurrentValue = (position.MarketPosition == Cbi.MarketPosition.Long ? 1 : -1) * position.Quantity; } }
protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate) { if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Connected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting) { Cbi.Account account = null; lock (connectionStatusUpdate.Connection.Accounts) account = connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName); if (account != null) { lock (account.Positions) position = account.Positions.FirstOrDefault(o => o.Instrument.FullName == Instrument.FullName); } } else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting) { if (position != null && position.Account.Connection == connectionStatusUpdate.Connection) { CurrentValue = 0; position = null; } } }
protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate) { if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Connected || connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.ConnectionLost) { Cbi.Account account; lock (connectionStatusUpdate.Connection.Accounts) account = connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName); if (account != null) { accountDenomination = account.Denomination; executions.Clear(); foreach (Cbi.Execution execution in account.Executions) { if (execution.Instrument == Instrument || (execution.Instrument.MasterInstrument.InstrumentType == InstrumentType.Stock && execution.Instrument.FullName == Instrument.FullName)) { executions.Add(execution); } } CurrentValue = Cbi.SystemPerformance.Calculate(executions).AllTrades.TradesPerformance.Currency.CumProfit; } } }
protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate) { if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Connected || connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting) { Cbi.Account account; lock (connectionStatusUpdate.Connection.Accounts) account = connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName); if (account != null) { lock (account.Positions) position = account.Positions.FirstOrDefault(o => o.Instrument.FullName == Instrument.FullName); accountDenomination = account.Denomination; executions.Clear(); foreach (Cbi.Execution execution in account.Executions) { if (execution.Instrument == Instrument) { executions.Add(execution); } } realizedPL = Cbi.SystemPerformance.Calculate(executions).AllTrades.TradesPerformance.Currency.CumProfit; } } else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting) { if (position != null && position.Account.Connection == connectionStatusUpdate.Connection) { CurrentValue = 0; position = null; realizedPL = 0; } } CurrentValue = realizedPL + (position == null ? 0 : position.GetUnrealizedProfitLoss(Cbi.PerformanceUnit.Currency)); }