private void buttonAdd_Click(object sender, EventArgs e) { if (dataGridViewResult.SelectedRows.Count == 0) { return; } try { Type appType = Type.GetTypeFromProgID("Broker.Application"); object abApp = Activator.CreateInstance(appType); object abStocks = appType.InvokeMember("Stocks", System.Reflection.BindingFlags.GetProperty, null, abApp, null); Type stocksType = abStocks.GetType(); for (int i = 0; i < dataGridViewResult.SelectedRows.Count; i++) { SecurityData sd = (SecurityData)dataGridViewResult.SelectedRows[i].DataBoundItem;; SymbolParts ibTicker = new SymbolParts(sd.LocalSymbol, sd.Exchange, sd.SecType, sd.Currency, ""); object stock = stocksType.InvokeMember("Add", System.Reflection.BindingFlags.InvokeMethod, null, abStocks, new object[] { ibTicker.Ticker }); if (stock != null) { Type stockType = stock.GetType(); stockType.InvokeMember("Alias", System.Reflection.BindingFlags.SetProperty, null, stock, new object[] { sd.Symbol }); stockType.InvokeMember("Currency", System.Reflection.BindingFlags.SetProperty, null, stock, new object[] { sd.Currency }); stockType.InvokeMember("FullName", System.Reflection.BindingFlags.SetProperty, null, stock, new object[] { sd.LongName }); stockType.InvokeMember("PointValue", System.Reflection.BindingFlags.SetProperty, null, stock, new object[] { sd.PriceMagnifier }); stockType.InvokeMember("TickSize", System.Reflection.BindingFlags.SetProperty, null, stock, new object[] { sd.MinTick }); stockType.InvokeMember("WebID", System.Reflection.BindingFlags.SetProperty, null, stock, new object[] { sd.ContractId }); } if (checkBoxAddContinuous.Checked && sd.SecType.ToUpper() == "FUT") { string localNamePart = sd.LocalSymbol.Substring(0, sd.LocalSymbol.Length - 2); SymbolParts contTicker = new SymbolParts(localNamePart + "~/" + sd.Symbol, sd.Exchange, sd.SecType, sd.Currency, ""); stock = stocksType.InvokeMember("Add", System.Reflection.BindingFlags.InvokeMethod, null, abStocks, new object[] { contTicker.Ticker }); } } } catch (Exception ex) { LogAndMessage.Log(MessageType.Error, "Search form could not add tickers: " + ex); MessageBox.Show("Error while adding tickers: " + ex, "Search form error", MessageBoxButtons.OK, MessageBoxIcon.Stop); } }
// callback (from controller) to store a matching contract private void ContractReady(ContractDetails contractDetails) { SecurityData sd = new SecurityData(); sd.ContractId = contractDetails.Contract.ConId; sd.Currency = contractDetails.Contract.Currency; sd.Exchange = contractDetails.Contract.Exchange; sd.LastTradeDateOrContractMonth = contractDetails.Contract.LastTradeDateOrContractMonth; sd.LocalSymbol = contractDetails.Contract.LocalSymbol; sd.PrimaryExchange = contractDetails.Contract.PrimaryExch; sd.Right = contractDetails.Contract.Right; sd.SecType = contractDetails.Contract.SecType; sd.Strike = contractDetails.Contract.Strike; sd.Symbol = contractDetails.Contract.Symbol; sd.LongName = contractDetails.LongName; sd.MinTick = (float)contractDetails.MinTick; sd.PriceMagnifier = contractDetails.PriceMagnifier; securityDatas.Add(sd); }