你好,我已经扫描了这个网站和谷歌,以获取有关从雅虎财经下载股票信息的最新更新。我没有取得太大的成功。当我测试我的应用程序时,我使用以下 C# 代码片段遇到了 404 服务器未找到异常:
string urlTemplate =
@"http://ichart.finance.yahoo.com/table.csv?s=[symbol]&a=" +
"[startMonth]&b=[startDay]&c=[startYear]&d=[endMonth]&e=" +
"[endDay]&f=[endYear]&g=d&ignore=.csv";
...
WebClient wc = new WebClient();
try
{
history = wc.DownloadString(urlTemplate);
}
Run Code Online (Sandbox Code Playgroud)
您知道雅虎最近(或总是)是否有关于您可以从雅虎财经服务器请求多少金额的更新吗?如果是这样,有人知道上限或阈值吗?是超过时间还是每日请求的最大数量?我考虑过随机提出一个最多 2 分钟的睡眠请求来解决这个问题。我认为这没有帮助。有没有其他方法可以让我不断向雅虎财经提出请求?我认为雅虎有某种订阅服务,你可以用它来达到这个目的。我找不到任何相关信息。如果这一切都不是雅虎的禁忌,那么有人有任何负担得起的替代服务或数据馈送服务的建议吗?
我正在撰写一份申请,根据市值和股息收益率选择公司.它使用Yahoo!的YQL REST API来获取这些数据.它似乎昨天运作良好,但今天我看到我的计划说其中一家公司的收益率为65.95%!没问题 - 我的代码中的错误.所以我认为.但是当我从yql url中查看xml的内容时:
我看到我贴在帖子底部的xml.(我在这里完全粘贴它,因为当有人在本周末之后看到它会有所不同.)
向下滚动到底部,你会发现它实际上说马拉松石油公司普通(MRO)股票的收益率为65.95%.您将在DividendYield标记的内容中看到它.
当我在这里查看Yahoo!的财务网站时:http://finance.yahoo.com/q? s = mro
它显示了更合理的产量:
Div & Yield: 0.68 (2.10%)
Run Code Online (Sandbox Code Playgroud)
那么,我是否误读了这些数据(我希望如此)?为什么我在他们公开的网站上看到的与我从查询中获得的内容之间存在差异?他们不是使用相同的数据库吗?
如果内容不可靠,请指向我不同的工具.我的应用程序是在python中.
如果它有用,这里是一个最小的代码片段:
#!/usr/bin/env python
import yql
y = yql.Public()
q = 'use "http://www.datatables.org/yahoo/finance/yahoo.finance.quotes.xml" as yahoo.finance.quotes; select * from yahoo.finance.quotes where symbol in ("MRO")'
result = y.execute(q)
print result.rows[0]['DividendYield']
Run Code Online (Sandbox Code Playgroud)
输出:
65.95
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑2012年2月11日:
我发帖后的第二天,我在雅虎上发现了这个.开发者网络:
那里有很多人评论在各个领域获取错误的数据.
Google有一个用于收集数据的API.以下是与以下yql请求相关的公司(MRO)使用它的示例:
http://www.google.com/ig/api?stock=MRO
也许这会对其他人有所帮助,但它似乎并没有包含股息信息,这对我的需求至关重要.
是否有其他人编写了一个应用程序,该应用程序使用令他们满意的来源以编程方式收集库存数据 如果是这样,请分享 - 我愿意转向其他事情.顺便说一句:我不需要实时数据.在市场关闭之后,我通常会在下班回家后不经常运行我的应用程序.
谢谢.
<query yahoo:count="1" yahoo:created="2012-02-11T06:30:09Z" yahoo:lang="en-US"><results><quote symbol="MRO"><Ask/>
<AverageDailyVolume>7003410</AverageDailyVolume>
<Bid/>
<AskRealtime>36.00</AskRealtime>
<BidRealtime>32.73</BidRealtime>
<BookValue>23.79</BookValue>
<Change_PercentChange>+0.55 - …Run Code Online (Sandbox Code Playgroud) 我有一些代码可以计算标准普尔500指数对任何股票的beta值 - 在这种情况下是股票代码"FET".然而,结果似乎与我在雅虎财经上看到的完全不同,历史上这股股票一直非常波动,这可以解释雅虎金融的1.55的beta值 - http://finance.yahoo.com/q?s =胎儿.有人可以告诉我为什么我看到一个完全不同的数字(0.0088)?提前致谢.
from pandas.io.data import DataReader
from datetime import datetime
from datetime import date
import numpy
import sys
today = date.today()
stock_one = DataReader('FET','yahoo',datetime(2009,1,1), today)
stock_two = DataReader('^GSPC','yahoo',stock_one['Adj Close'].keys()[0], today)
a = stock_one['Adj Close'].pct_change()
b = stock_two['Adj Close'].pct_change()
covariance = numpy.cov(a[1:],b[1:])[0][1]
variance = numpy.var(b[1:])
beta = covariance / variance
print 'beta value ' + str(beta)
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
from yahoo_finance import Currency
symbolslist = ["EURUSD","EURGBP","EURJPY","EURRUB","USDCAD","USDCHF","AUSUSD"]
for i in range(len(symbolslist)):
symbol = symbolslist[i]
nomisma = Currency(symbol).get_rate()
quota = symbol + " = " + nomisma
print quota
Run Code Online (Sandbox Code Playgroud)
我得到了结果:
EURUSD = 1.0891
EURGBP = 0.7322
EURJPY = 129.7440
EURRUB = 63.0560
USDCAD = 1.2614
USDCHF = 0.9622
Traceback (most recent call last):
File "yahoopy.py", line 13, in <module>
quota = symbol + " = " + nomisma
TypeError: cannot concatenate 'str' and 'NoneType' objects
Run Code Online (Sandbox Code Playgroud)
我知道在这个链接中已经讨论过这个错误.
但我希望我可以克服这个错误而不诉诸mysql.
python string-concatenation python-2.7 yahoo-finance nonetype
对于以下网址的排球获取请求,我得到400服务器错误
http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ('AEDALL')&format=json&env=store://datatables.org/alltableswithkeys&callback=
Run Code Online (Sandbox Code Playgroud)
当我从休息客户端点击相同的URL时,它给出了json响应
这是我的截击请求代码
private void convertCurrenctVolleyTask(String from, final String to, final String amount) {
String url_yahoo = "http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in ('"+from+to+"')&format=json&env=store://datatables.org/alltableswithkeys&callback=";
final ProgressDialog progressDialog;
progressDialog = new ProgressDialog(CurrencyConverter.this);
progressDialog.setMessage("Please wait...");
progressDialog.setCancelable(true);
progressDialog.show();
JsonObjectRequest GetCurrenciesjsObjRequest = new JsonObjectRequest(
Request.Method.GET, url_yahoo, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
progressDialog.cancel();
if (response != null) {
parseGetCurrencyResp(response,to,amount);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) { …Run Code Online (Sandbox Code Playgroud) 我刚刚从pandas.io 切换到pandas_datareader,我在获取调整后的收盘价时遇到了困难。在我可以使用以下代码之前
pd.io.data.get_data_yahoo(stock, start, end)['Adj Close']
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用 datareader(作为 Web 导入)时,它不起作用。
web.get_data_yahoo(stock, start, end)['Adj Close']
Run Code Online (Sandbox Code Playgroud)
我试图找到文档以查看是否有 pandas_datareader 使用的新参数,但我没有运气。无论如何,是否可以使用新的 Pandas 库提取调整后的关闭数据?
我正在尝试将所有 11 个扇区的图形从扇区列表保存到 1 个 pdf 表。到目前为止,下面的代码在单独的工作表(11 个 pdf 页)上给了我一个图表。
每日回报函数是我正在绘制的数据。每个图形上有 2 条线。
with PdfPages('test.pdf') as pdf:
n=0
for i in sectorlist:
fig = plt.figure(figsize=(12,12))
n+=1
fig.add_subplot(4,3,n)
(daily_return[i]*100).plot(linewidth=3)
(daily_return['^OEX']*100).plot()
ax = plt.gca()
ax.set_ylim(0, 100)
plt.legend()
plt.ylabel('Excess movement (%)')
plt.xticks(rotation='45')
pdf.savefig(fig)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我正在绘制部门及其所有股票的收益。我希望值> 100为绿色,而<100为红色。这是我的代码:
sector_lst = ['XLK','XLF','XLE'] ## etc.
for i in sector_lst:
fig = plt.figure(figsize=(12, 8))
for x in sectordict[i]: #sectordict[i] is all the stocks in a sector (so AAPL, GOOG, etc. for tech)
if pct_change[x] > 1:
pct_change[sectordict[i]].plot(kind='bar',color='g')
##if pct_chg < 1
else:
pct_change[sectordict[i]].plot(kind='bar',color='r')
plt.title(i)
Run Code Online (Sandbox Code Playgroud)
到目前为止,这会将整个扇区图形返回为绿色或红色。如果第一个值大于100,则所有库存均为绿色,反之亦然。
我的预期输出是有11张图(当前它会这样做),但是图中的每种股票都有不同的颜色,如果股票的回报率> 100%,则显示绿色,而<100%,则显示红色。
我想在 Python 中获取股票数据进行一些分析。
我想对许多股票进行分析,不是像 AAPL 这样的单一股票,而是像标准普尔 500 指数。具体来说,美国股票的收盘价和其他信息,如调整后的价格、行业等。
我该怎么做?
如果这个问题有点太简单,我很抱歉。我试图找到数据,但没有一个好的解决方案。
我试过quandl,但似乎只支持通过股票行情获取数据,也是如此Yahoo finance(来自https://www.quora.com/Using-Python-whats-the-best-way-to-get-stock-data)。一种可能的来源是Quantopian,但它仅支持在其在线笔记本中进行分析。现在我正在尝试Alph Advantage
当我看到其他人的项目时,它只是一个csv。我是否错过了 quandl 或 Yahoo Finance 中的某些内容?或者我是否需要从他们那里手动获取 SP 500 的每个股票代码?
谢谢!
yfinance 和 yahoo_fin 似乎不再完全有效。
是否还有其他人遇到此问题,但没有使用这些软件包的任何公司的财务数据?
有谁知道这些是否已被弃用或阻止,或者 yfinance 和 yahoo_fin 是否仍在工作?
编辑: .history 似乎有效,一些公司的 .info 也有效,但不是全部。
yahoo-finance ×10
python ×8
pandas ×3
finance ×2
matplotlib ×2
android ×1
c# ×1
covariance ×1
datareader ×1
nonetype ×1
python-2.7 ×1
stock ×1
stockquotes ×1
yahoo ×1
yahoo-api ×1
yfinance ×1
yql ×1