【问题标题】:Get historic prices by ISIN from yahoo finance从 yahoo Finance 获取 ISIN 的历史价格
【发布时间】:2015-09-23 04:07:05
【问题描述】:

我有以下问题:

我有大约 1000 个证券交易所上市公司的唯一 ISIN 编号。

  • 我每天都需要这些公司从最早上市到今天的历史价格。

但是,就我的研究而言,雅虎只能提供股票代码的价格,而我没有。

有没有办法通过他们的 api 自动获取来自 ISIN: AT0000609664 的公司 Porr 的历史价格?

感谢您的回复!

【问题讨论】:

    标签: java yahoo yahoo-finance stockquotes


    【解决方案1】:

    答案:

    要从 ISIN 中获取 Yahoo 股票代码,请查看yahoo.finance.isin 表,这是一个示例查询:

    http://query.yahooapis.com:80/v1/public/yql?q=select * from yahoo.finance.isin where symbol in ("DE000A1EWWW0")&env=store://datatables.org/alltableswithkeys
    

    这会在 XML 中返回代码 ADS.DE

    <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 不起作用,但这是雅虎方面的错误(请参阅 Yahoo Symbol Lookup,在其中输入您的 ISIN 以检查雅虎上是否存在代码)。

    实施:

    抱歉,我不再精通 Java 或 R,但这段 C# 代码应该几乎可以复制/粘贴:

    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) 将查询的 URI 返回给 yahoo(参见我的示例 URI),GetHttpResult(string URI) 从 Web 获取 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 -->
    

    这应该足以让您编写自己的代码。请注意,有可能在查询末尾使用&amp;e=.csv 以.csv 格式获取数据,但我对此知之甚少,或者它是否适用于上述查询,因此请参阅here 以供参考。

    【讨论】:

    • 恐怕不行。如果我运行你提供的网址,就没有答案了
    【解决方案2】:

    我发现了一个基于日期范围提供历史数据的 Web 服务。请看一下

    http://splice.xignite.com/services/Xignite/XigniteHistorical/GetHistoricalQuotesRange.aspx

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多