that's what i do, similar technique,but not in excel, in VB. 200 tickers per request. dunno about earliest,but yahoo data(i only need last price before close) is available at 4:30 and match perfectly with IQ 100% of the time. no need to wait until 8-9pm est or whatever.you right about tweaks. the tickers come and go constantly. renamed,delisted etc. you have to catch those errors.
Bob, Do you have any suggestions on how to catch symbol changes in a straightforward, preferably programmatic way?
if you know visual basic(old one,not .net) i can send you 2 variations of the procedures to get that EOD data-one using straight URL request and another one-using yahoo's YQL basically- both of them return a string with end of line character and the end of each line and the data separated by comma(see attached file) and you just go thru it. cut out ticker, if there is an error or anything,but the data that you are looking for-you raise a flag. if there is an string instead of number-flag,if there is 'N\A' or 'No such ticker'-flag and so on note that "N\A" on screenshoot is becasuse i've added 'e' tag in request(see address browser) . mean-no error
here is my list of possible errors For y = LBound(arrSymb) To UBound(arrSymb) If arrSymb(y) = AllSymb(i) Then If arrDate(y) = "N/A" Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & " Err.Date. N/A" Counter = Counter + 1 GoTo NEXT_MOVE End If If IsDate(arrDate(y)) = False Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & "," & arrDate(y) & " Err.Date False" Counter = Counter + 1 GoTo NEXT_MOVE End If If IsNumeric(arrVol(y)) = False Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & "," & arrVol(y) & " Err.Volume False" Counter = Counter + 1 GoTo NEXT_MOVE End If If arrVol(y) = 0 Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & "," & arrVol(y) & " Err.Volume Zero" Counter = Counter + 1 GoTo NEXT_MOVE End If If IsNumeric(arrPrice(y)) = False Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & "," & arrPrice(y) & " Err.Price False" Counter = Counter + 1 GoTo NEXT_MOVE End If If arrPrice(y) = 0 Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & "," & arrPrice(y) & " Err.Price Zero" Counter = Counter + 1 GoTo NEXT_MOVE End If If CDate(arrDate(y)) <> CDate(TradeDate) Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & "," & arrDate(y) & " Err.Wrong Day" Counter = Counter + 1 GoTo NEXT_MOVE End If If (InStr(1, arrErr(y), "No such ticker symbol") > 0) Or (InStr(1, arrErr(y), "Ticker symbol has changed to") > 0) Then frmTickerCheck.lstInvalidTickers.AddItem AllSymb(i) & " Err.Ticker" Counter = Counter + 1 GoTo NEXT_MOVE End If
Thanks Bob! The info you provided here will do just fine. I do non-.net VB, but what you put up here is just fine. Cash
Hi all! now i'm looking for a free EOD data source for US stocks . i need it for a cross reference. other than yahoo and IB. i have problems with IB's API ,which for whatever reason returns -1 for a previous day close lately. any suggestions besides eoddata.com? the more-the better. Thank you!
Thank you! i'll try that. anyone know data provider eoddata.com was using for US stocks? nasdaq specifically? i'm planning to use it as a cross reference between yahoo and them,but if they are getting their data from yahoo-that would be pointless exercise. Thank you!