计算 pandas 数据框中的相对成交量比率指标并将指标值添加为新列

问题描述 投票:0回答:1

我知道已经有一些关于此的帖子,但我的情况有点不同,我想在这方面获得一些帮助。

我有一个pandas数据框symbol_df,每个股票代码的格式为1分钟柱形图:

id  Symbol_id                Date     Open     High      Low    Close  Volume
1          1 2023-12-13 09:15:00  4730.95  4744.00  4713.95  4696.40    2300
2          1 2023-12-13 09:16:00  4713.20  4723.70  4717.85  4702.55    1522
3          1 2023-12-13 09:17:00  4716.40  4718.55  4701.00  4701.00     909
4          1 2023-12-13 09:18:00  4700.15  4702.80  4696.70  4696.00     715
5          1 2023-12-13 09:19:00  4696.70  4709.90  4702.00  4696.10     895
...        ...                 ...      ...      ...      ...      ...     ...
108001     1 2024-03-27 13:44:00  6289.95  6291.95  6289.00  6287.55     989
108002     1 2024-03-27 13:45:00  6288.95  6290.85  6289.00  6287.75     286
108003     1 2024-03-27 13:46:00  6291.25  6293.60  6292.05  6289.10    1433
108004     1 2024-03-27 13:47:00  6295.00  6299.00  6293.20  6293.15    2702
108005     1 2024-03-27 13:48:00  6292.05  6296.55  6291.95  6291.95     983

我想计算“相对交易量比率”指标,并将该计算值作为滚动基础上的新列添加到 symbol_df 中。

“相对体积比”指标计算如下:

目前为止今天的成交量是与过去10天同期的平均成交量进行比较的。要获得比率值,我们只需将“今天迄今为止的交易量”除以“同一时期最后 10 天的平均交易量”即可。

例如..当前柱时间现在是 13:48。

今天 00:00 -13:48 之间的

cumulativeVolumeOfToday = Volume
1 分钟柱形图已累计

avergeVolumeOfPreviousDaysOfSamePeriod = Average
过去10天同期(00:00 - 13:48)成交量累积。

relativeVolumeRatio = CumulativeVolumeOfToday/AvergeVolumeOfPrevious10DaysOfSamePeriod

将此值作为新列添加到数据框中。

我怎样才能在 Pandas 中做到这一点?

python pandas dataframe technical-indicator
1个回答
0
投票

如果您能提供一些测试数据和预期结果,以及您到目前为止尝试过的代码,并描述您遇到的问题,那就太好了。

无论如何,从现有的描述来看,您似乎需要对聚合数据进行一些转换。首先是累计汇总每天的数据。然后对按时间戳分组的数据运行十天窗口以计算平均值。最后,将前者除以后者:

volume = symbol_df.set_index('Date')['Volume']
date = volume.index
cum_volume = volume.groupby(date.day).cumsum()
mean10days = volume.groupby(date.time).rolling('10d', min_periods=10).mean().reset_index(0, drop=True)
symbol_df['rvr'] = cum_volume / mean10days
© www.soinside.com 2019 - 2024. All rights reserved.