private double getSymbolPrice(string secType) { dbm.WriteLine(clientID, "Obtaining undelying price ...", true); // get Underlying Contract Contract underlying = new Contract(); underlying.Symbol = this_symbol; underlying.SecType = secType; underlying = ibClient.reqContractDetails(1, underlying)[0].contractDetails.Summary; // Request Price do { ibClient.SetMarketDataType(IntBrokerSocket.MarketDataType.Delayed); CompleteTick_Struct mymkt = ibClient.GetMktSnapShotData(new List <Contract>(new Contract[] { underlying }))[0]; symbolPrice = mymkt.getTick(tickPreference.LastPreference); } while (symbolPrice <= 0); return(symbolPrice); }
private void FillInPrices() { dbm.WriteLine(clientID, "Obtaining contract price info ...", true); int cnt = 0; List <Contract> ContractList = new List <Contract>(); List <CompleteTick_Struct> ReturnedTickList; // Initiate option list foreach (DataRow dr in outputDataTable.Rows) { string _Expiry = dr["Expiry"].ToString(); double _Strike = Convert.ToDouble(dr["Strike"].ToString()); ContractList.Add(UniqueOptChain[new ExpiryStrikePair(_Expiry, _Strike)]); } // Request snapshot ibClient.SetMarketDataType(IntBrokerSocket.MarketDataType.DelayedFrozen); ReturnedTickList = ibClient.GetMktSnapShotData(ContractList); // Consolidate data to datatable foreach (DataRow dr in outputDataTable.Rows) { string _Expiry = dr["Expiry"].ToString(); double _Strike = Convert.ToDouble(dr["Strike"].ToString()); CompleteTick_Struct mymkt = ReturnedTickList[ContractList.IndexOf(UniqueOptChain[new ExpiryStrikePair(_Expiry, _Strike)])]; dr[colnames[3]] = mymkt.getTick(tickPreference.BidPreference); dr[colnames[4]] = mymkt.getTick(tickPreference.AskPreference); dr[colnames[5]] = mymkt.getTick(tickPreference.LastPreference); cnt++; //Console.WriteLine("{0}: {1}", cnt, string.Join(",",dr.ItemArray.Select(field=>field.ToString()))); dbm.WriteLine(clientID, string.Format("\r {0:0%} Done", ((double)cnt) / outputDataTable.Rows.Count), false); } dbm.WriteLine(clientID, "", true); }