新的Yahoo Finance URL

时间:2017-05-20 03:51:25

标签: yahoo-finance

由于之前的Yahoo Finance下载网址不再有效,我现在还剩下这样的内容:

https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1492524105&period2=1495116105&interval=1d&events=history&crumb=tO1hNZoUQeQ

有人知道period1(和period2)如何转化为日期(反之亦然)

任何帮助表示赞赏!

谢谢!

4 个答案:

答案 0 :(得分:1)

这是为了重新创建(有点)旧功能。我正在使用Chrome运行Fedora。

(1)找出你的网络浏览器的用户代理字符串(我搜索了“我的用户代理字符串是什么”,并快速找到一个页面,打印出你正在使用的浏览器)。它将类似于“Mozilla / 5.0(X11; Linux x86_64)......”

(2)安装一个软件包,该软件包将导出Chrome的“cookies.txt”文件(也会搜索“Chrome export cookies.txt”之类的内容,并快速找到一个Chrome扩展程序,可以导出页面的cookies.txt你在看。)

(3)转到历史下载页面,查看雅虎财经感兴趣的符号。将“crumb”保存在下载链接中(如上所述)和该页面的cookies.txt。

(4)现在你可以使用wget来获取数据了。该命令将类似于:

wget --load-cookies [你保存的COOKIES文件] -U“[你发现的用户代理]”-O [所需的输出CSV] https://query1.finance.yahoo.com/v7/finance/download/[THE符号你想要历史数据]?period1 = [UNIX开始时间] \& period2 = [UNIX结束时间] \& interval = 1d \& events = history \& crumb = [您保存的CR]

period1 = ...是开始日期的UNIX时间戳(自1970年1月1日00:00:00 GMT以来的秒数),period2 = ...是结束日期的UNIX时间戳。

我能够以这种方式以编程方式下载大量符号。生成的CSV文件的列顺序已从旧的ichart API更改,并且我在历史数据中发现的错误数明显高于数据中已经非常高的错误率。

不要猜测它会工作多长时间,或者它是否在很长一段时间内保持稳定。 YMMV。

答案 1 :(得分:1)

它们是unix时间戳,或者自Epoch以来的秒数。

引自http://www.unixtimestamp.com/

  

什么是unix时间戳?
  unix时间戳是一种跟踪方式   时间作为总计秒数。这个计数从Unix开始   1970年1月1日,UTC时代。因此,unix时间戳是   仅仅是特定日期和Unix之间的秒数   时代。还应该指出(感谢来自的评论   这个网站的访问者,这个时间点在技术上没有   无论你身在何处,都要改变。这是非常的   对计算机系统有用,用于跟踪和分类过时信息   在动态和分布式应用程序中在线和客户端

以下C#代码有助于在DateTime和Unix时间戳之间进行转换

//credits to ScottCher
//reference http://stackoverflow.com/questions/249760/how-to-convert-a-unix-timestamp-to-datetime-and-vice-versa
private static DateTime UnixTimestampToDateTime(double unixTimeStamp)
{
    //Unix timestamp Is seconds past epoch
    return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(unixTimeStamp).ToLocalTime();
}

//credits to Dmitry Fedorkov
//reference http://stackoverflow.com/questions/249760/how-to-convert-a-unix-timestamp-to-datetime-and-vice-versa
private static double DateTimeToUnixTimestamp(DateTime dateTime)
{
    //Unix timestamp Is seconds past epoch
    return (dateTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
}

注意:确保在替换为period1和period2之前将其四舍五入为零小数

答案 2 :(得分:0)

看起来它们只是unix时间戳,或者是Epoch的秒数。这是一个可以为您转换信息的网站:http://www.unixtimestamp.com

答案 3 :(得分:0)

period1和period2只是时间戳(POSIX时间戳)。我想你可以使用你想要使用的日期的任何时间。例如,对于2014-05-20,您可以在00:00:00至23:59:59之间的任何时间使用。 (更新:雅虎刚刚在这里做了一个改变。你必须使用一个在市场关闭时间之后的时间,否则数据将错过最后一天。我认为18:00:00工作正常。)

我已经整理了一些快速Python3代码来使用这个新API。请查看GitHub以获取源代码yahoo_quote_download