Пример #1
0
 public void HandleMessage(IBMessage message)         //This is the "UI entry point" and as such will handle the UI update by another thread
 {
     if (this.InvokeRequired)
     {
         MessageHandlerDelegate callback = new MessageHandlerDelegate(HandleMessage);
         this.Invoke(callback, new object[] { message });
     }
     else
     {
         UpdateUI(message);
     }
 }
Пример #2
0
        private void UpdateUI(IBMessage message)
        {
            // http://nlog-project.org/download/ A logging lib
            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;
                    button1.Text   = "Disconnect";
                }
                else
                {
                    status_CT.Text = "Disconnected...";
                    button1.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);
                break;
            }

            case MessageType.ContractData:
            {
                HandleContractDataMessage((ContractDetailsMessage)message);                                 // ***********************
                var z = (ContractDetailsMessage)message;
                ShowMessageOnPanel("SYMBOL: " + z.ContractDetails.Summary.Symbol + " successfully found at: " + z.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);
                break;
            }

            default:
            {
                HandleMessage(new ErrorMessage(-1, -1, message.ToString()));                                 // Default message
                break;
            }
            }
        }