public HistoricalQuote ProvideQuote(string ticker, string quoteType, DateTime date) { HistoricalQuote quote = new HistoricalQuote() { Ticker = ticker, Date = date }; TWSQuoteObject quoteObject = null; try { if (!Connect()) { quote.ErrorMessage = "Unable to connect to TWS"; } else { lock (m_quoteMapLock) { QuoteType quoteTypeEnum = (QuoteType)Enum.Parse(typeof(QuoteType), quoteType); int requestId = m_twsUtilities.GetHistoricalData(ticker, quoteTypeEnum, null, date); if (requestId < 0) { quote.ErrorMessage = "Unable to get historical quote"; } else { quoteObject = new TWSQuoteObject(requestId); m_quoteMap.Add(requestId, quoteObject); } } } if (quoteObject != null) { if (!WaitAny(null, quoteObject.WaitHandle)) { quote.ErrorMessage = "Request timed out"; } else { quoteObject.FillQuote(quote); } } } catch (Exception ex) { quote.ErrorMessage = ex.Message; } return(quote); }
public void FillQuote(HistoricalQuote quote) { if (Quote == null) { quote.ErrorMessage = "Internal error: HistoricalDataEventArgs is missing from TWSQuoteObject"; } else { quote.Open = Quote.Open; quote.Close = Quote.Close; quote.High = Quote.High; quote.Low = Quote.Low; quote.Wap = Quote.WAP; quote.Volume = Quote.Volume; quote.ErrorMessage = Quote.ErrorMessage; } }