使用Pandas,生成历史数据中每天的周开盘价、高点、低点、收盘价和收盘价的简单移动平均线



每日库存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)

最新更新