yahoo_financeパッケージが使用するリアルタイムのYQLデータは古くなっているようです。 5月11日には69.71が締め切りです。正しい値は69.3です。
簡単な解決策は、また
>>> from yahoo_finance import Share
>>> stock = Share('XLV')
>>> data, = stock.get_historical('2016-05-12','2016-05-12')
>>> data['Close']
69.300003
と同じパッケージの履歴データテーブルにアクセスするヤフー/金融Webサイトから直接近いデータをつかむのいずれかにあります。あなたの状況を再現しようとすると、あなたが報告する値のちらつきは得られませんが、5月23日ではなく5月20日の終わりに近いです。たぶん、あなたが見ているちらつきは、時には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)
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
これが機能するかどうか私は知りませんあなたにはそれなりの利点がありますが、このパッケージはhttps://github.com/cgoldberg/ystockquote/blob/master/ystockquote.pyと似ているようです。私はそれもget_previous_close関数を持っていることがわかりますが、私はそれをテストしていません。私は今日後でそれを打ち明けて、あなたに知らせるでしょう。 –
私はちょうどここに提案を与えたかった。株価を繰り返し引っ張っていると、yahoo_financeが時々間違っていることがわかります(私は15分遅いと言っているわけではありません)。現在の株価を引き上げるには、Googleファイナンスの方がはるかに好ましく、過去のデータを引き出すには、yahoo_financeの方が優れています。誰かを助けることを願っています。 – Bhargav