Getting adjusted price information from Yahoo! Finance API for multiple symbols in one call
我想得到调整后的价格(调整分割和股息)为一组股票符号使用雅虎!财务。看起来历史价格调用一次仅限于一个符号。请告诉我一次通话中是否有多种符号?
我想得到这些数据,这样我可以对这些数据做一些反向测试。因为我可能需要相当多的符号(比如500-1000),所以如果我能只对雅虎进行几次批量调用,就容易多了。S服务器,而不是每天对每个符号进行一次调用。
另一种获得调整后价格的方法是使用他们的每日股价API,并使用股息和分割信息手动调整(他们允许每日股票报价使用多个符号)。不幸的是,我找不到从HTTP调用中获取分割信息的任何方法(根据50%或200%进行猜测是一种选择,但如果处理低价股票,这可能很危险,而且无法找出不均匀的分割)。而且,它返回的股息信息也不容易解码。它们似乎返回了超过4个季度的总额,并且股息日期与基于历史价格的实际股息日期不符。电话的各种选项可以在这里找到:http://www.gummy-stuff.org/yahoo-data.htm
对多个符号的价格调整有什么建议吗?还是我不必要担心给雅虎打了100个电话!每天?理想情况下,我希望在每天的几个小时内下载所有需要的数据,即每分钟10到20次呼叫。那太多了吗?我找不到关于每秒允许请求数的任何文档。
我可以在其他地方获得类似的数据。但是,因为我只是想学习定量交易的基本知识,而不是交易,所以我更喜欢免费下载。
谢谢-e
你熟悉R吗?R中相当简单的脚本将使您能够做到这一点。以下是一些资源的链接:https://stackoverflow.com/questions/1228801/r-for-finance-tutorials-resources阅读答案,他们推荐了一大堆R-Finance书籍。
我不确定你用的是哪种语言,但我有一个C语言的样本。我想它至少会给你这个主意,或者对其他人有帮助
1 2 3 4 5 6 7 8 9 | private string BASE_URL ="http://query.yahooapis.com/v1/public/yql?q=" +"select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20({0})" +"&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"; Collection<Quote> quotes; string symbolList = String.Join("%2C", quotes.Select(w =>"%22" + w.Symbol +"%22").ToArray()); string url = string.Format(BASE_URL,symbolList); XDocument doc = XDocument.Load(url); Parse(quotes,doc); |
我们在这里做的是在每个数组项上附加",",然后将该符号列表传递给雅虎。我已经成功地获得了每一次通话中700个符号的价格。为每一个标签点击雅虎服务器是一件痛苦的事。我每天都会为6500多张股票取股票价格。早先用了3个小时,现在还不到2分钟……很甜。
代码的源链接在这里-http://www.jarloo.com/get-yahoo-finance-api-data-via-yql/
另外,请拿一把API密钥,以便顺利工作。上面的URL是一个公共链接,其中大多数表都超时。一旦你得到一个API密钥,那么你的URL将是(减去"public")。
网址:http://query.yahooapis.com/v1/yql
这是一个古老的问题,但我确实找到了一个可以使用拆分数据的源。但不确定这些公告有多全面:
网址:http://biz.yahoo.com/c/09/s1.html
在URL中,"09"部分是年份(2009),"s1"部分是月份(s1=jan,s2=feb,s3=mar等)。
这不是一个很好的干净的csv,但是页面的格式是一致的,应该是可解析的。只需每天查询当前月份,分析页面,并处理前一天没有看到的任何拆分。
ETA:还有另一个来源(可能不如雅虎可靠,但可以通过Ticker查询):
http://getsplithistory.com/