从雅虎财经获取 ISIN 的历史价格
Get historic prices by ISIN from yahoo finance
我遇到以下问题:
我有大约 1000 个证券交易所上市公司的唯一 ISIN 编号。
- 我需要这些公司从最早上市到今天每天的历史价格。
然而,就我的研究而言,yahoo 只能提供我没有的股票代码的价格。
有没有办法通过 ISIN: AT0000609664
公司 Porr
通过他们的 api 自动获取雅虎的历史价格?
感谢您的回复!
我找到了一个基于日期范围提供历史数据的 Web 服务。请看
http://splice.xignite.com/services/Xignite/XigniteHistorical/GetHistoricalQuotesRange.aspx
答案:
要从 ISIN 获取 Yahoo 代码,请查看 yahoo.finance.isin
table,这是一个示例查询:
http://query.yahooapis.com:80/v1/public/yql?q=select * from yahoo.finance.isin where symbol in ("DE000A1EWWW0")&env=store://datatables.org/alltableswithkeys
returns ADS.DE
XML:
<query yahoo:count="1" yahoo:created="2015-09-21T12:18:01Z" yahoo:lang="en-US">
<results>
<stock symbol="DE000A1EWWW0">
<Isin>ADS.DE</Isin>
</stock>
</results>
</query>
<!-- total: 223 -->
<!-- pprd1-node600-lh3.manhattan.bf1.yahoo.com -->
恐怕您的示例 ISIN 不起作用,但这是 Yahoos 方面的错误(请参阅 Yahoo Symbol Lookup,在其中键入您的 ISIN 以检查 Yahoo 上是否存在代码)。
实施:
抱歉,我不再精通Java或R,但这段C#代码应该与copy/paste:
差不多
public String GetYahooSymbol(string isin)
{
string query = GetQuery(isin);
XDocument result = GetHttpResult(query);
XElement stock = result.Root.Element("results").Element("stock");
return stock.Element("Isin").Value.ToString();
}
其中 GetQuery(string isin)
returns 用于对 yahoo 进行查询的 URI(参见我的示例 URI),GetHttpResult(string URI)
从网络中获取 XML。然后你必须提取 Isin
节点的内容,你就完成了。
我假设您已经使用股票代码实现了实际的数据获取。
另见 this question 的反问题(符号 -> isin)。但郑重声明:
查询以获取交易品种的历史数据
http://query.yahooapis.com:80/v1/public/yql?q=select * from yahoo.finance.historicaldata where symbol in ("ADS.DE") and startDate = "2015-06-14" and endDate = "2015-09-22"&env=store://datatables.org/alltableswithkeys
您可以在其中传递任意日期和任意股票代码列表。在您的代码中构建查询并从返回的 XML 中提取结果取决于您。响应将遵循
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="71" yahoo:created="2015-09-22T20:00:39Z" yahoo:lang="en-US">
<results>
<quote Symbol="ADS.DE">
<Date>2015-09-21</Date>
<Open>69.94</Open>
<High>71.21</High>
<Low>69.65</Low>
<Close>70.79</Close>
<Volume>973600</Volume>
<Adj_Close>70.79</Adj_Close>
</quote>
<quote Symbol="ADS.DE">
<Date>2015-09-18</Date>
<Open>70.00</Open>
<High>71.43</High>
<Low>69.62</Low>
<Close>70.17</Close>
<Volume>3300200</Volume>
<Adj_Close>70.17</Adj_Close>
</quote>
......
</results>
</query>
<!-- total: 621 -->
<!-- pprd1-node591-lh3.manhattan.bf1.yahoo.com -->
这应该让您足以编写自己的代码。请注意,有可能在查询末尾使用 &e=.csv
以 .csv 格式获取数据,但我对此了解不多,或者它是否适用于上述查询,因此请参阅 here 供参考。
我遇到以下问题:
我有大约 1000 个证券交易所上市公司的唯一 ISIN 编号。
- 我需要这些公司从最早上市到今天每天的历史价格。
然而,就我的研究而言,yahoo 只能提供我没有的股票代码的价格。
有没有办法通过 ISIN: AT0000609664
公司 Porr
通过他们的 api 自动获取雅虎的历史价格?
感谢您的回复!
我找到了一个基于日期范围提供历史数据的 Web 服务。请看
http://splice.xignite.com/services/Xignite/XigniteHistorical/GetHistoricalQuotesRange.aspx
答案:
要从 ISIN 获取 Yahoo 代码,请查看 yahoo.finance.isin
table,这是一个示例查询:
http://query.yahooapis.com:80/v1/public/yql?q=select * from yahoo.finance.isin where symbol in ("DE000A1EWWW0")&env=store://datatables.org/alltableswithkeys
returns ADS.DE
XML:
<query yahoo:count="1" yahoo:created="2015-09-21T12:18:01Z" yahoo:lang="en-US">
<results>
<stock symbol="DE000A1EWWW0">
<Isin>ADS.DE</Isin>
</stock>
</results>
</query>
<!-- total: 223 -->
<!-- pprd1-node600-lh3.manhattan.bf1.yahoo.com -->
恐怕您的示例 ISIN 不起作用,但这是 Yahoos 方面的错误(请参阅 Yahoo Symbol Lookup,在其中键入您的 ISIN 以检查 Yahoo 上是否存在代码)。
实施:
抱歉,我不再精通Java或R,但这段C#代码应该与copy/paste:
差不多public String GetYahooSymbol(string isin)
{
string query = GetQuery(isin);
XDocument result = GetHttpResult(query);
XElement stock = result.Root.Element("results").Element("stock");
return stock.Element("Isin").Value.ToString();
}
其中 GetQuery(string isin)
returns 用于对 yahoo 进行查询的 URI(参见我的示例 URI),GetHttpResult(string URI)
从网络中获取 XML。然后你必须提取 Isin
节点的内容,你就完成了。
我假设您已经使用股票代码实现了实际的数据获取。 另见 this question 的反问题(符号 -> isin)。但郑重声明:
查询以获取交易品种的历史数据
http://query.yahooapis.com:80/v1/public/yql?q=select * from yahoo.finance.historicaldata where symbol in ("ADS.DE") and startDate = "2015-06-14" and endDate = "2015-09-22"&env=store://datatables.org/alltableswithkeys
您可以在其中传递任意日期和任意股票代码列表。在您的代码中构建查询并从返回的 XML 中提取结果取决于您。响应将遵循
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="71" yahoo:created="2015-09-22T20:00:39Z" yahoo:lang="en-US">
<results>
<quote Symbol="ADS.DE">
<Date>2015-09-21</Date>
<Open>69.94</Open>
<High>71.21</High>
<Low>69.65</Low>
<Close>70.79</Close>
<Volume>973600</Volume>
<Adj_Close>70.79</Adj_Close>
</quote>
<quote Symbol="ADS.DE">
<Date>2015-09-18</Date>
<Open>70.00</Open>
<High>71.43</High>
<Low>69.62</Low>
<Close>70.17</Close>
<Volume>3300200</Volume>
<Adj_Close>70.17</Adj_Close>
</quote>
......
</results>
</query>
<!-- total: 621 -->
<!-- pprd1-node591-lh3.manhattan.bf1.yahoo.com -->
这应该让您足以编写自己的代码。请注意,有可能在查询末尾使用 &e=.csv
以 .csv 格式获取数据,但我对此了解不多,或者它是否适用于上述查询,因此请参阅 here 供参考。