python 中 yahoo_finance 的关闭数据不正确
Incorrect close data from yahoo_finance in python
我在 python 中使用 yahoo_finance 来提取股票数据,由于某些原因,get_prev_close()
方法在每次调用时都不会返回相同的数据。
这是一个简单的例子:
from yahoo_finance import Share
from time import sleep
while True:
stock = Share('XLV')
prevClose = float(stock.get_prev_close())
print prevClose
sleep(1)
出于某种原因,这将随机打印两个不同的数字。所以今天我打印了 69.3
和 69.71
。但由于这是昨天的收盘数据,所以应该只有一个值。
这是已知错误吗?有解决办法吗?
此问题与 yahoo_finance python library. Inconsistent results from Yahoo Finance have been observed by many users. You can find complaints here forums.developer.yahoo and here different result 无关。
我今天 运行 几个查询也得到了不同的结果。
可能你最好找到另一个财务数据来源。
yahoo_finance 包使用的实时 YQL 数据似乎已经过时。 69.71 是 5 月 11 日的收盘价。正确的值应该是 69.3。
简单的解决方案是访问与
中相同包的历史数据table
>>> from yahoo_finance import Share
>>> stock = Share('XLV')
>>> data, = stock.get_historical('2016-05-12','2016-05-12')
>>> data['Close']
69.300003
或者,直接从 Yahoo/Finance 网站获取收盘数据。 (更快,更灵活)当试图复制你的情况时,我没有得到你报告的值的闪烁,但我确实得到了一个陈旧的关闭(5 月 20 日而不是 5 月 23 日)。也许您看到的闪烁是 YQL 有时会访问带有陈旧数据的服务器的结果,有时则不会。这是从yahoo_finance的历史数据(a),从yahoo_finance的实时数据(b),直接从yahoo-finance实时报价(c)和直接来自yahoo-finance的历史数据(d)。
import csv
import time
import datetime
import requests
import pytz
from yahoo_finance import Share
hist_url = 'http://real-chart.finance.yahoo.com/table.csv?s=XLV&a=4&b=23&c=2016&g=d&ignore.csv'
realtime_url = 'http://download.finance.yahoo.com/d/quotes.csv?s=XLV&f=p&e=.csv'
eastern = pytz.timezone('US/Eastern')
while True:
stock = Share('XLV')
a = stock.get_historical('2016-05-23','2016-05-23')[0]['Close']
b = stock.get_prev_close()
r = requests.get(hist_url)
reader = csv.DictReader(r.iter_lines())
c = float(next(reader)['Close'])
d = float(requests.get(realtime_url).text)
print datetime.datetime.now(eastern).time(), a, b, c, d
time.sleep(120)
第 3 列中 stock.get_prev_close() 的收盘价一直是陈旧的,而其他数字根据以下输出是正确的:
09:24:51.582532 69.410004 69.69 69.410004 69.41
09:26:52.749902 69.410004 69.69 69.410004 69.41
09:28:54.589506 69.410004 69.69 69.410004 69.41
09:30:56.681914 69.410004 69.69 69.410004 69.41
09:32:58.255181 69.410004 69.69 69.410004 69.41
我在 python 中使用 yahoo_finance 来提取股票数据,由于某些原因,get_prev_close()
方法在每次调用时都不会返回相同的数据。
这是一个简单的例子:
from yahoo_finance import Share
from time import sleep
while True:
stock = Share('XLV')
prevClose = float(stock.get_prev_close())
print prevClose
sleep(1)
出于某种原因,这将随机打印两个不同的数字。所以今天我打印了 69.3
和 69.71
。但由于这是昨天的收盘数据,所以应该只有一个值。
这是已知错误吗?有解决办法吗?
此问题与 yahoo_finance python library. Inconsistent results from Yahoo Finance have been observed by many users. You can find complaints here forums.developer.yahoo and here different result 无关。 我今天 运行 几个查询也得到了不同的结果。 可能你最好找到另一个财务数据来源。
yahoo_finance 包使用的实时 YQL 数据似乎已经过时。 69.71 是 5 月 11 日的收盘价。正确的值应该是 69.3。
简单的解决方案是访问与
中相同包的历史数据table>>> from yahoo_finance import Share
>>> stock = Share('XLV')
>>> data, = stock.get_historical('2016-05-12','2016-05-12')
>>> data['Close']
69.300003
或者,直接从 Yahoo/Finance 网站获取收盘数据。 (更快,更灵活)当试图复制你的情况时,我没有得到你报告的值的闪烁,但我确实得到了一个陈旧的关闭(5 月 20 日而不是 5 月 23 日)。也许您看到的闪烁是 YQL 有时会访问带有陈旧数据的服务器的结果,有时则不会。这是从yahoo_finance的历史数据(a),从yahoo_finance的实时数据(b),直接从yahoo-finance实时报价(c)和直接来自yahoo-finance的历史数据(d)。
import csv
import time
import datetime
import requests
import pytz
from yahoo_finance import Share
hist_url = 'http://real-chart.finance.yahoo.com/table.csv?s=XLV&a=4&b=23&c=2016&g=d&ignore.csv'
realtime_url = 'http://download.finance.yahoo.com/d/quotes.csv?s=XLV&f=p&e=.csv'
eastern = pytz.timezone('US/Eastern')
while True:
stock = Share('XLV')
a = stock.get_historical('2016-05-23','2016-05-23')[0]['Close']
b = stock.get_prev_close()
r = requests.get(hist_url)
reader = csv.DictReader(r.iter_lines())
c = float(next(reader)['Close'])
d = float(requests.get(realtime_url).text)
print datetime.datetime.now(eastern).time(), a, b, c, d
time.sleep(120)
第 3 列中 stock.get_prev_close() 的收盘价一直是陈旧的,而其他数字根据以下输出是正确的:
09:24:51.582532 69.410004 69.69 69.410004 69.41
09:26:52.749902 69.410004 69.69 69.410004 69.41
09:28:54.589506 69.410004 69.69 69.410004 69.41
09:30:56.681914 69.410004 69.69 69.410004 69.41
09:32:58.255181 69.410004 69.69 69.410004 69.41