Need source for OHLCV on 4000 stocks on a daily basis that I can download to Excel

Quote from cashonly:

Thanks for all the recommendations.

eoddata.com will do what I need for free, but its data is unavailable til 9pm EST and I'd rather have things done sooner than that. I can get it at 5pm, but then it's a pricey monthly subscription.

I've found http://www.yloader.com/ which will do it for $25 (after a 15 day free trial) and I can call it with command line parameters from another program. And it's quite fast. For $25, it's worth it to have my program call it.

This is also good:
http://www.gummy-stuff.org/Yahoo-data.htm
It showed me how I can use something like this:
finance.yahoo.com/d/quotes.csv?s=XOM+PFE+WMT+TGT+LLY+BBY+JNJ+MSFT&f=sohgl1v
to download what I need, but I could only do 200 symbols at a time.

I need to investigate the gummy stuff SS's more.

While I like yloader, I'd rather have a solution that I can tweak on demand in case Yahoo changes anything. I can't afford to be waiting for a software developer to make the change on their schedule.

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.
 
Quote from Bob111:

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?
 
Quote from cashonly:

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
 

Attachments

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


Quote from Bob111:

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
 
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!
 
Back
Top