为什么筛选的日期范围与我的开始日期不同?

Why does the filtered date range differ from my start date?

我使用此代码获取 BTC 值,但日期是从我选择的前一天开始的。

输入:

tickers=['BTC-USD']  # Name of asset
tarih="02-06-2021"
tarih2="05-06-2021"
start=dt.datetime.strptime(tarih, '%d-%m-%Y')
end=dt.datetime.strptime(tarih2, '%d-%m-%Y')
returns=pd.DataFrame()
liste=[]                    

for ticker in tickers:
        data=web.DataReader(ticker,'yahoo',start,end)
        data=pd.DataFrame(data)
        data[ticker]=data['Adj Close'] #can work with change percentage in order to get more accurate data
        if returns.empty:
            returns=data[[ticker]]
        else:
            returns = returns.join(data[[ticker]],how='outer')#add right column
for dt in daterange(start, end):
    dates=dt.strftime("%d-%m-%Y")
    with open("fng_value.txt", "r") as filestream:
            for line in filestream:
                date = line.split(",")[0]
                if dates == date:
                    fng_value=line.split(",")[1]
                    liste.append(fng_value)
print(returns.head(25))

输出:

                 BTC-USD
Date                    
2021-06-01  37575.179688

2021-06-02  39208.765625

2021-06-03  36894.406250

2021-06-04  35551.957031

2021-06-05  35862.378906

DataReader 接受字符串、日期或日期时间形式的开始参数。显然,有时使用开始日期(例如 2021-06-02)会检索从前一天 2021-06-01 开始的数据。尝试使用带时区的日期时间和一天中晚一个小时来破解日期,如果它没有return你期望的那样。

看看这是否有效:

import pandas_datareader.data as web
import pandas as pd
from pytz import timezone
from datetime import datetime, date

tarih = "02-06-2021"
tarih2 = "05-06-2021"

# start/end can be date, datetime, or string

#start = date(2021, 6, 2)
#end = date(2021, 6, 5)
#start = 'JUN-02-2021'
#end = 'JUN-05-2021'

start = datetime.strptime(tarih, '%d-%m-%Y').replace(hour=23, tzinfo=timezone('EST'))
end = datetime.strptime(tarih2, '%d-%m-%Y').replace(tzinfo=timezone('EST'))

tickers=['BTC-USD']  # Name of asset

for ticker in tickers:
    data = web.DataReader(ticker, 'yahoo', start, end)
    data = pd.DataFrame(data)
    print(data)

这 return 是从 6/2 到 6/5 的数据。