【发布时间】:2020-07-02 19:55:01
【问题描述】:
我需要将市场数据整合到 VolumeBars(具有相同交易量的块)中。
作为输入数据,我有分钟柱(可能有下降),其中有以下列:时间、OHLC(开盘价、最高价、最低价、收盘价)和成交量。
目前,我正在尝试这种方式:
bar_volume_size = 100
df = hg
df['cumsum'] = (df["Volume"].cumsum() // bar_volume_size) + 1
df['over'] = (df["Volume"].cumsum() % bar_volume_size)
print(df.head(40))
此操作的结果如下所示:
Open High Low Close Volume BarNo over
2018-12-30 18:00:00 2.6780 2.6875 2.6755 2.6840 83 1 83
2018-12-30 18:01:00 2.6835 2.6875 2.6825 2.6875 40 2 23
2018-12-30 18:02:00 2.6875 2.6920 2.6875 2.6915 58 2 81
2018-12-30 18:03:00 2.6915 2.6945 2.6910 2.6920 36 3 17
2018-12-30 18:04:00 2.6910 2.6925 2.6910 2.6920 14 3 31
2018-12-30 18:05:00 2.6920 2.6920 2.6900 2.6900 16 3 47
2018-12-30 18:06:00 2.6905 2.6905 2.6880 2.6880 12 3 59
2018-12-30 18:07:00 2.6885 2.6890 2.6880 2.6880 5 3 64
2018-12-30 18:08:00 2.6885 2.6885 2.6880 2.6885 3 3 67
2018-12-30 18:09:00 2.6875 2.6875 2.6875 2.6875 1 3 68
2018-12-30 18:10:00 2.6875 2.6890 2.6875 2.6890 9 3 77
2018-12-30 18:11:00 2.6895 2.6895 2.6895 2.6895 4 3 81
2018-12-30 18:12:00 2.6900 2.6900 2.6890 2.6895 13 3 94
2018-12-30 18:13:00 2.6895 2.6895 2.6890 2.6890 3 3 97
2018-12-30 18:14:00 2.6890 2.6895 2.6890 2.6895 10 4 7
2018-12-30 18:15:00 2.6895 2.6895 2.6895 2.6895 0 4 7
2018-12-30 18:16:00 2.6895 2.6900 2.6895 2.6900 4 4 11
2018-12-30 18:17:00 2.6890 2.6895 2.6855 2.6870 31 4 42
2018-12-30 18:18:00 2.6875 2.6875 2.6875 2.6875 8 4 50
2018-12-30 18:19:00 2.6875 2.6885 2.6875 2.6885 5 4 55
2018-12-30 18:20:00 2.6890 2.6905 2.6890 2.6905 4 4 59
2018-12-30 18:21:00 2.6910 2.6910 2.6910 2.6910 2 4 61
2018-12-30 18:22:00 2.6910 2.6910 2.6910 2.6910 0 4 61
2018-12-30 18:23:00 2.6910 2.6910 2.6910 2.6910 0 4 61
2018-12-30 18:24:00 2.6910 2.6910 2.6910 2.6910 0 4 61
2018-12-30 18:25:00 2.6905 2.6905 2.6905 2.6905 1 4 62
2018-12-30 18:26:00 2.6890 2.6890 2.6890 2.6890 1 4 63
2018-12-30 18:27:00 2.6890 2.6890 2.6890 2.6890 1 4 64
2018-12-30 18:28:00 2.6890 2.6890 2.6890 2.6890 2 4 66
2018-12-30 18:29:00 2.6890 2.6890 2.6890 2.6890 0 4 66
2018-12-30 18:30:00 2.6895 2.6900 2.6890 2.6890 6 4 72
2018-12-30 18:31:00 2.6890 2.6890 2.6890 2.6890 1 4 73
2018-12-30 18:32:00 2.6890 2.6890 2.6890 2.6890 0 4 73
2018-12-30 18:33:00 2.6900 2.6900 2.6865 2.6890 14 4 87
2018-12-30 18:34:00 2.6870 2.6870 2.6865 2.6865 10 4 97
2018-12-30 18:35:00 2.6865 2.6865 2.6865 2.6865 0 4 97
2018-12-30 18:36:00 2.6860 2.6860 2.6850 2.6860 21 5 18
2018-12-30 18:37:00 2.6870 2.6875 2.6870 2.6875 4 5 22
2018-12-30 18:38:00 2.6865 2.6865 2.6865 2.6865 1 5 23
2018-12-30 18:39:00 2.6865 2.6865 2.6865 2.6865 1 5 24
在 BarNo 列中,我有 VolumeBar 编号。我认为这对于带有 BarNo 列的 GroupBy 数据框是可能的,例如 3:
Open High Low Close Volume BarNo over
2018-12-30 18:03:00 2.6915 2.6945 2.6910 2.6920 36 3 17
2018-12-30 18:04:00 2.6910 2.6925 2.6910 2.6920 14 3 31
2018-12-30 18:05:00 2.6920 2.6920 2.6900 2.6900 16 3 47
2018-12-30 18:06:00 2.6905 2.6905 2.6880 2.6880 12 3 59
2018-12-30 18:07:00 2.6885 2.6890 2.6880 2.6880 5 3 64
2018-12-30 18:08:00 2.6885 2.6885 2.6880 2.6885 3 3 67
2018-12-30 18:09:00 2.6875 2.6875 2.6875 2.6875 1 3 68
2018-12-30 18:10:00 2.6875 2.6890 2.6875 2.6890 9 3 77
2018-12-30 18:11:00 2.6895 2.6895 2.6895 2.6895 4 3 81
2018-12-30 18:12:00 2.6900 2.6900 2.6890 2.6895 13 3 94
2018-12-30 18:13:00 2.6895 2.6895 2.6890 2.6890 3 3 97
取该组“Open”列的第一个元素,该组“High”列的最大值,该组“Low”列的最小值和“Close”列的最后一个元素,正好取@987654324 @ as "Volume" 并将所有这些数据放入另一个 DataFrame 中(或者,可能在此 DataFrame 中)。
【问题讨论】:
标签: python pandas dataframe aggregate