private void ProcessMessage(IBMessage message) { switch (message.Type) { case MessageType.OpenOrder: HandleOpenOrder((OpenOrderMessage)message); break; } }
//This is the "UI entry point" and as such will handle the UI update by another thread public void HandleMessage(IBMessage message) { if (this.InvokeRequired) { MessageHandlerDelegate callback = new MessageHandlerDelegate(HandleMessage); this.Invoke(callback, new object[] { message }); } else { UpdateUI(message); } }
private void ProcessMessage(IBMessage message) { switch (message.Type) { case MessageType.OpenOrder: HandleOpenOrder((OpenOrderMessage)message); break; case MessageType.SoftDollarTiers: HandleSoftDollarTiers((SoftDollarTiersMessage)message); break; } }
private void UpdateUI(IBMessage message) { switch (message.Type) { case MessageType.ConnectionStatus: { ConnectionStatusMessage statusMessage = (ConnectionStatusMessage)message; if (statusMessage.IsConnected) { status_CT.Text = "Connected! Your client Id: "+ibClient.ClientId; connectButton.Text = "Disconnect"; } else { status_CT.Text = "Disconnected..."; connectButton.Text = "Connect"; } break; } case MessageType.Error: { ErrorMessage error = (ErrorMessage)message; ShowMessageOnPanel("Request " + error.RequestId + ", Code: " + error.ErrorCode + " - " + error.Message + "\r\n"); HandleErrorMessage(error); break; } case MessageType.TickOptionComputation: case MessageType.TickPrice: case MessageType.TickSize: { HandleTickMessage((MarketDataMessage)message); break; } case MessageType.MarketDepth: case MessageType.MarketDepthL2: { deepBookManager.UpdateUI(message); break; } case MessageType.HistoricalData: case MessageType.HistoricalDataEnd: { historicalDataManager.UpdateUI(message); break; } case MessageType.RealTimeBars: { realTimeBarManager.UpdateUI(message); break; } case MessageType.ScannerData: { scannerManager.UpdateUI(message); break; } case MessageType.OpenOrder: case MessageType.OpenOrderEnd: case MessageType.OrderStatus: case MessageType.ExecutionData: case MessageType.CommissionsReport: { orderManager.UpdateUI(message); break; } case MessageType.ManagedAccounts: { orderManager.ManagedAccounts = ((ManagedAccountsMessage)message).ManagedAccounts; accountManager.ManagedAccounts = ((ManagedAccountsMessage)message).ManagedAccounts; exerciseAccount.Items.AddRange(((ManagedAccountsMessage)message).ManagedAccounts.ToArray()); break; } case MessageType.AccountSummaryEnd: { accSummaryRequest.Text = "Request"; accountManager.UpdateUI(message); break; } case MessageType.AccountDownloadEnd: { break; } case MessageType.AccountUpdateTime: { accUpdatesLastUpdateValue.Text = ((UpdateAccountTimeMessage)message).Timestamp; break; } case MessageType.PortfolioValue: { accountManager.UpdateUI(message); if (exerciseAccount.SelectedItem != null) optionsManager.HandlePosition((UpdatePortfolioMessage)message); break; } case MessageType.AccountSummary: case MessageType.AccountValue: case MessageType.Position: case MessageType.PositionEnd: { accountManager.UpdateUI(message); break; } case MessageType.ContractDataEnd: { searchContractDetails.Enabled = true; contractManager.UpdateUI(message); break; } case MessageType.ContractData: { HandleContractDataMessage((ContractDetailsMessage)message); break; } case MessageType.FundamentalData: { fundamentalsQueryButton.Enabled = true; contractManager.UpdateUI(message); break; } case MessageType.ReceiveFA: { advisorManager.UpdateUI((AdvisorDataMessage)message); break; } default: { HandleMessage(new ErrorMessage(-1, -1, message.ToString())); break; } } }
private void UpdateUI(IBMessage message) { switch (message.Type) { case MessageType.ConnectionStatus: { ConnectionStatusMessage statusMessage = (ConnectionStatusMessage)message; if (statusMessage.IsConnected) { status_CT.Text = "Connected! Your client Id: " + ibClient.ClientId; connectButton.Text = "Disconnect"; } else { status_CT.Text = "Disconnected..."; connectButton.Text = "Connect"; } break; } case MessageType.Error: { ErrorMessage error = (ErrorMessage)message; ShowMessageOnPanel("Request " + error.RequestId + ", Code: " + error.ErrorCode + " - " + error.Message + "\r\n"); break; } case MessageType.TickOptionComputation: case MessageType.TickPrice: case MessageType.TickSize: { HandleTickMessage((MarketDataMessage)message); break; } case MessageType.MarketDepth: case MessageType.MarketDepthL2: { deepBookManager.UpdateUI(message); break; } case MessageType.HistoricalData: case MessageType.HistoricalDataEnd: { historicalDataManager.UpdateUI(message); break; } case MessageType.RealTimeBars: { realTimeBarManager.UpdateUI(message); break; } case MessageType.ScannerData: { scannerManager.UpdateUI(message); break; } case MessageType.OpenOrder: case MessageType.OpenOrderEnd: case MessageType.OrderStatus: case MessageType.ExecutionData: case MessageType.CommissionsReport: { orderManager.UpdateUI(message); break; } case MessageType.ManagedAccounts: { orderManager.ManagedAccounts = ((ManagedAccountsMessage)message).ManagedAccounts; accountManager.ManagedAccounts = ((ManagedAccountsMessage)message).ManagedAccounts; exerciseAccount.Items.AddRange(((ManagedAccountsMessage)message).ManagedAccounts.ToArray()); break; } case MessageType.AccountSummaryEnd: { accSummaryRequest.Text = "Request"; accountManager.UpdateUI(message); break; } case MessageType.AccountDownloadEnd: { break; } case MessageType.AccountUpdateTime: { accUpdatesLastUpdateValue.Text = ((UpdateAccountTimeMessage)message).Timestamp; break; } case MessageType.PortfolioValue: { accountManager.UpdateUI(message); if (exerciseAccount.SelectedItem != null) { optionsManager.HandlePosition((UpdatePortfolioMessage)message); } break; } case MessageType.AccountSummary: case MessageType.AccountValue: case MessageType.Position: case MessageType.PositionEnd: { accountManager.UpdateUI(message); break; } case MessageType.ContractDataEnd: { searchContractDetails.Enabled = true; contractManager.UpdateUI(message); break; } case MessageType.ContractData: { HandleContractDataMessage((ContractDetailsMessage)message); break; } case MessageType.FundamentalData: { fundamentalsQueryButton.Enabled = true; contractManager.UpdateUI(message); break; } case MessageType.ReceiveFA: { advisorManager.UpdateUI((AdvisorDataMessage)message); break; } default: { HandleMessage(new ErrorMessage(-1, -1, message.ToString())); break; } } }
public void HandleIncomingMessage(IBMessage message) { ProcessMessage(message); }