private void UpdateUI(IBMessage message) { ShowMessageOnPanel("(UpdateUI) Message type: " + message.Type.ToString()); 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); 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: case MessageType.ScannerParameters: { 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); foreach (var socket in allSockets.ToList()) // Loop through all connections/connected clients and send each of them a message { socket.Send(searchJsonResponse.Test()); } // Send json object // After it is sent .clear it! //MessageBox.Show(searchJsonResponse.Test()); searchJsonResponse.Clear(); // Collection empty break; } case MessageType.ContractData: { HandleContractDataMessage((ContractDetailsMessage)message); //MessageBox.Show("contract_start"); foreach (var socket in allSockets.ToList()) // Loop through all connections/connected clients and send each of them a message { //var castedMessage = (ContractDetailsMessage)message; //ShowMessageOnPanel("SYMBOL: " + castedMessage.ContractDetails.Summary.Symbol + " successfully found at: " + castedMessage.ContractDetails.Summary.PrimaryExch + " exchange"); //socket.Send("SYMBOL: " + castedMessage.ContractDetails.Summary.Symbol + " successfully found at: " + castedMessage.ContractDetails.Summary.Exchange + " exchange"); } // Add new object to json array var z = (ContractDetailsMessage)message; // Type cast var x = z.ContractDetails.Summary; searchJsonResponse.Add(x.Exchange, x.LocalSymbol, x.SecType, x.Currency, x.Exchange, x.PrimaryExch, x.ConId); //Log.Insert(DateTime.Now, "Form1.cs", string.Format("ContractData: {0} {1} {2} {3} {4} {5} {6}", x.Exchange, x.LocalSymbol, x.SecType, x.Currency, x.Exchange, x.PrimaryExch, x.ConId), "white"); break; } case MessageType.FundamentalData: { fundamentalsQueryButton.Enabled = true; contractManager.UpdateUI(message); break; } case MessageType.ReceiveFA: { advisorManager.UpdateUI((AdvisorDataMessage)message); break; } case MessageType.PositionMulti: case MessageType.AccountUpdateMulti: case MessageType.PositionMultiEnd: case MessageType.AccountUpdateMultiEnd: { acctPosMultiManager.UpdateUI(message); break; } case MessageType.SecurityDefinitionOptionParameter: case MessageType.SecurityDefinitionOptionParameterEnd: { optionsManager.UpdateUI(message); break; } case MessageType.SoftDollarTiers: { orderManager.UpdateUI(message); break; } default: { HandleMessage(new ErrorMessage(-1, -1, message.ToString())); break; } } } // private void UpdateUI
private void UpdateUI(IBMessage message) { // http://nlog-project.org/download/ Logging lib // These messages are generated for evry event. Uncomment to see what type of messages are comeing. Importand for debugging ListViewLogging.log_add(this, "messageTypeListBox", "Form1.cs", message.Type.ToString(), "white"); // Output to the separate listView switch (message.Type) { case MessageType.ConnectionStatus: { ConnectionStatusMessage statusMessage = (ConnectionStatusMessage)message; ShowMessageOnPanel("Connection status: " + statusMessage.IsConnected); if (statusMessage.IsConnected) { status_CT.Text = "Connected"; button13.Text = "Disconnect"; } else { status_CT.Text = "Disconnected..."; button13.Text = "Connect"; } break; } case MessageType.Error: { ErrorMessage error = (ErrorMessage)message; ShowMessageOnPanel("ERROR. Request " + error.RequestId + ", Code: " + error.ErrorCode + " - " + error.Message); 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: case MessageType.ScannerParameters: { //scannerManager.UpdateUI(message); break; } case MessageType.OpenOrder: { var castedMessage = (OpenOrderMessage)message; ShowMessageOnPanel("OpenOrder. Contract: " + castedMessage.Contract + " Order: " + castedMessage.Order + " OrderID: " + castedMessage.OrderId + " OrderState: " + castedMessage.OrderState + " Type:" + castedMessage.Type); break; } case MessageType.OrderStatus: { var castedMessage = (OrderStatusMessage)message; ShowMessageOnPanel("OrderStatus. AvgFillPrice: " + castedMessage.AvgFillPrice + " ClientId: " + castedMessage.ClientId + " Filled: " + castedMessage.Filled + " LastFillPrice: " + castedMessage.LastFillPrice + " OrderId:" + castedMessage.OrderId + " ParentID:" + castedMessage.ParentId + " PermID:" + castedMessage.PermId + " Remaining:" + castedMessage.Remaining + " Status:" + castedMessage.Status + " Type:" + castedMessage.Type + " WhyHwld:" + castedMessage.WhyHeld); break; } case MessageType.OpenOrderEnd: case MessageType.ExecutionData: case MessageType.CommissionsReport: { //orderManager.UpdateUI(message); ******************************************************** placeOrder.UpdateUI(message); break; } case MessageType.ManagedAccounts: { MessageBox.Show("case MessageType.ManagedAccounts: no message"); //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: // This event occur after symbol search { //searchContractDetails.Enabled = true; //contractManager.UpdateUI(message); break; } case MessageType.ContractData: // This event occur after symbol search { //HandleContractDataMessage((ContractDetailsMessage)message); // Type cast var castedMessage = (ContractDetailsMessage)message; ShowMessageOnPanel("SYMBOL: " + castedMessage.ContractDetails.Summary.Symbol + " successfully found at: " + castedMessage.ContractDetails.Summary.PrimaryExch + " exchange"); break; } case MessageType.FundamentalData: { //fundamentalsQueryButton.Enabled = true; //contractManager.UpdateUI(message); break; } case MessageType.ReceiveFA: { //advisorManager.UpdateUI((AdvisorDataMessage)message); break; } case MessageType.PositionMulti: case MessageType.AccountUpdateMulti: case MessageType.PositionMultiEnd: case MessageType.AccountUpdateMultiEnd: { //acctPosMultiManager.UpdateUI(message); break; } case MessageType.SecurityDefinitionOptionParameter: case MessageType.SecurityDefinitionOptionParameterEnd: { //optionsManager.UpdateUI(message); break; } case MessageType.SoftDollarTiers: { //orderManager.UpdateUI(message); placeOrder.UpdateUI(message); var castedMessage = (ExecutionMessage)message; ListViewLogging.log_add(this, "brokerListBox", "case MessageType.SoftDollarTiers:", castedMessage.ToString(), "yellow"); // ("PlaceOrder.cs private void HandleExecutionMessage(ExecutionMessage message): " + message.Execution.OrderId + " orderRef: " + message.Execution.OrderRef + " price: " + message.Execution.Price + " time: " + message.Execution.Time + " accountNumber" + message.Execution.AcctNumber); break; } default: { HandleMessage(new ErrorMessage(-1, -1, message.ToString())); break; } } }