雅虎金融,填补了两个小时的延迟

2024-09-23 22:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用yahoo finance(Python中的yfinance库)获取加密对的每日打开、关闭、体积、最小值和最大值

我发现数据在UTC 00:00(关闭/打开时间)重置,但新行仅在UTC 02:00添加。我需要最近一天00:00的数据

有什么办法可以解决这个问题吗?我想我可以得到到目前为止每分钟或每小时的数据,并总结数量

pricedata = pdr.get_data_yahoo("BTC-ETH", start="2020-12-20", end="2020-12-22", interval = "1m")

我是否错过了在yfinance中实现这一点的更简单方法?还是一个更快速的API?我会使用alpha vantage,但他们不提供密码对的历史数据

更新

我可以为自己创建最后一天(19/12)的条目:

pricedata = pdr.get_data_yahoo(stock, start="2020-12-19", end="2020-12-20", interval = "1m")

关闭:

print(pricedata['Close'][-1])

开放式:

print(pricedata['Close'][0])

(非常接近但距离足够近)

高:

print(pricedata['High'].max())

低:

print(pricedata['Low'].min())

但音量似乎不起作用

print(pricedata['Volume'].sum())

给我50981730304,而每日报告值为12830893778。 如果我得到的是小时值的总和而不是分钟值,那么我得到的是21111141888。还很远

我想其中一个“黑客”就是获取当前的24小时音量。但如果我在协调世界时01:00得到它,它将已经是“scewed”。老实说,我宁愿使用一个适当的API,它与日常历史记录同步:)

到目前为止,我已经实施了这一修正,尽管它可以改进一点(音量,只有在UTC 00:00检索时才能工作,因为我还没有弄清楚如何在不延迟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())

Tags: 数据closedatagetstarthistyahooend