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 OnAccountItemUpdate(Cbi.Account account, Cbi.AccountItem accountItem, double value) { MyAllOrders = account.Orders; //Print(string.Format("{0} {1} {2}", account.Name, accountItem, value)); // output: // Sim101 BuyingPower 103962.5 // Sim101 CashValue 103962.5 // Sim101 GrossRealizedProfitLoss 3962.5 // Sim101 RealizedProfitLoss 3962.5 }
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; } }
/// <summary> /// Only updated on live/sim trading, not triggered at back-testing; /// The evernt posted tick by tick at sim/living trading with poistion hold; /// </summary> /// <param name="account"></param> /// <param name="accountItem"></param> /// <param name="value"></param> protected override void OnAccountItemUpdate(Cbi.Account account, Cbi.AccountItem accountItem, double value) { if (account == null || accountItem == null || IndicatorProxy == null) { return; } if (accountItem == AccountItem.UnrealizedProfitLoss && PrintOut > 2 && !IsInStrategyAnalyzer) { IndicatorProxy.PrintLog(true, IsLiveTrading(), //":OnAccountItemUpdate" CurrentBar + ":OnAccountItemUpdate" + ";Name=" + account.DisplayName + ";Item=" + accountItem.ToString() + ";value=" + value + ";DailyLossLmt=" + account.DailyLossLimit + ";Status=" + account.AccountStatus.ToString() ); } }
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 OnAccountItemUpdate(Cbi.Account account, Cbi.AccountItem accountItem, double value) { }