每日库存OHLC数据如下,
日期 每天都开放 每日高 每天低 每天近
31-Oct-22 17910.2 18022.8 17899.9 18012.2
1-Nov-22 18130.7 18175.8 18060.15 18145.4
2-Nov-22 18177.9 18178.75 18048.65 18082.85
3-Nov-22 17968.35 18106.3 17959.2 18052.7
4-Nov-22 18053.4 18135.1 18017.15 18117.15
我试图获得每周OHLC数据(如下所示),每周的每一天使用熊猫,但没有设法得到它,尽管花了一个多月寻找解决方案。我能得到的最接近的是使用pandas以每周的频率重新采样,但它没有给出周一到周四的输出。它只给出星期五是一周最后一天的输出。这可以使用pandas来完成吗?还是需要使用python循环进行迭代处理?
日期 每周打开每周高周低每周关闭
31-Oct-22 17910.2 18022.8 17899.9 18012.2
1-Nov-22 17910.2 18175.8 17899.9 18145.4
2-Nov-22 17910.2 18178.75 17899.9 18082.85
3-Nov-22 17910.2 18178.75 17899.9 18052.7
4-Nov-22 17910.2 18178.75 17899.9 18117.15
在这个周数据上,我也试图得到每周收盘的简单移动平均线(SMA)。
因此,对于下周的数据,在11月22日(星期一),简单移动平均线将是(18202.8(星期一收盘)+18117.15(上星期五收盘))/2=18159.97,在11月22日9日,它将是(18137.07+18117.15)/2=18137.07,以此类推。当每周OHLC数据帧可用时,是否也可以使用pandas_ta库来完成这一点,或者是否需要使用python循环进行迭代处理
日期 每周近2 weeksma
7-Nov-22 18202.8 18159.975
9-Nov-22 18157年 18137.075
10-Nov-22 18028.2 18072.675
11-Nov-22 18349.7 18233.425
听起来您想使用.rolling函数。也就是说,对于一周中的每一天,您都希望看到覆盖最近n个交易日的OHLC数据的统计信息,而不是日历周,例如,您只获得周五的数据。
不能完全确定您的数据框架结构,但是您可以这样做:
ma2 = df.close.rolling(2).mean()
ma5 = df.open.rolling(5).mean()
,这将为您提供用于变量'close'和'open'分别为2天和5天的滚动平均值的列。
hth
我有和你一样的需求,这是我的尝试
假设'price'是每日库存OHLC数据
def week_gen(dataframe):
if not dataframe.empty:
dataframe['Weekly Open'] = dataframe['Open'].values[0]
dataframe['Weekly High'] = dataframe['High'].cummax()
dataframe['Weekly Low'] = dataframe['Low'].cummin()
dataframe['Weekly Close'] = dataframe['Close']
dataframe['Weekly Volume'] = dataframe['Volume'].cumsum()
return dataframe
else:
return None
tmp = []
for _, group in price.resample('W'):
tmp.append(week_gen(group))
price = pd.concat(tmp)