dor*_*ien 5 python finance yahoo-finance yfinance
我使用雅虎财经(Python 中的 yfinance 库)来获取加密货币对的每日开盘价、收盘价、交易量、最小值、最大值。
我发现数据在 00:00 UTC(关闭/开放时间)重置,但新行仅在 02:00 UTC 添加。我需要最新一天 00:00 立即可用的数据。
有办法解决这个问题吗?我想我可以获取到目前为止的每分钟或每小时数据并总结数量。
pricedata = pdr.get_data_yahoo("BTC-ETH", start="2020-12-20", end="2020-12-22", interval = "1m")
Run Code Online (Sandbox Code Playgroud)
我是否缺少在 yfinance 中执行此操作的更简单方法?或者更快的 API?我会使用 alpha vantage,但他们不提供加密货币对的历史数据。
更新
我可以自己创建最后一天(19/12)的条目:
pricedata = pdr.get_data_yahoo(stock, start="2020-12-19", end="2020-12-20", interval = "1m")
Run Code Online (Sandbox Code Playgroud)
关闭:
print(pricedata['Close'][-1])
Run Code Online (Sandbox Code Playgroud)
打开:
print(pricedata['Close'][0])
Run Code Online (Sandbox Code Playgroud)
(稍微偏离但足够接近)
高的:
print(pricedata['High'].max())
Run Code Online (Sandbox Code Playgroud)
低的:
print(pricedata['Low'].min())
Run Code Online (Sandbox Code Playgroud)
但音量似乎不起作用。
print(pricedata['Volume'].sum())
Run Code Online (Sandbox Code Playgroud)
给我 50981730304,而每日报告值是 12830893778。如果我得到每小时值的总和而不是分钟值,我得到 2111141888。仍然很远......
我想一个“黑客”就是获取当前 24 小时的音量。但如果我在 01:00 UTC 得到这个信息,它就已经被“欺骗”了。老实说,我宁愿使用一个与每日历史记录同步的正确 API :)
到目前为止,我已经实施了这个修正,假设它可以改进一点(音量,只有在 00:00 UTC 检索时才有效,因为我还没有弄清楚如何在没有 2 小时延迟的情况下“返回”它):
yesterday = datetime.strptime(_end, '%Y-%m-%d').date() - timedelta(days=1)
yesterdayf = yesterday.strftime('%Y-%m-%d')
# TODO check if between 8-10:15am UTC
# TODO what if it exists but is not complete
if yesterdayf not in hist.index:
print("not in index")
finedata = pdr.get_data_yahoo(symbol, start=yesterdayf, end=_end, interval="1m")
c = finedata['Close'][-1]
o = finedata['Close'][0]
h = finedata['High'].max()
l = finedata['Low'].min()
yticker = yf.Ticker(symbol)
v = yticker.info['volume24Hr']
print (c)
print (o)
#create dataframe
add = pd.DataFrame({'Open':o, 'High':h, 'Low':l, 'Close':c,'Adj Close':c, 'Volume':v}, index=[yesterday])
#concatenate
hist = pd.concat([hist, add])
print(hist.tail())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |