📅  最后修改于: 2023-12-03 15:04:12.258000             🧑  作者: Mango
在股票市场中,OHLC (Open-High-Low-Close) 是一种常见的价格数据表示方式,它包含每个周期(如分钟、小时、日等)的开盘价、最高价、最低价和收盘价。然而,由于现实市场的交易量非常大,实时获取每个周期的 OHLC 数据十分耗费时间和计算资源。因此,许多交易应用程序使用 Tick-by-Tick 数据来计算 OHLC 数据。本文将介绍如何将 Tick-by-Tick 数据转换为 OHLC 数据。
在转换 Tick-by-Tick 数据为 OHLC 数据前,需要将原始数据按照周期进行按阶段划分。例如,如果我们希望获得每 5 分钟的 OHLC 数据,则需要将原始数据按照五分钟一周期进行划分。然后,我们需要在每个周期中计算 OHLC 数据。
首先,我们需要加载原始的 Tick-by-Tick 数据。这些数据包括时间戳、价格和数量等信息。通常,Tick-by-Tick 数据以 CSV 格式保存在文件中,我们可以使用 pandas 库来处理 CSV 文件。
import pandas as pd
# 加载 CSV 文件
data = pd.read_csv('tick_data.csv')
接下来,我们需要按照指定的周期(如 5 分钟、15 分钟等)将原始数据分段。这可以通过 pandas 库中的 resample
方法实现。例如,下面的代码将原始数据按照 5 分钟进行划分:
# 将原始数据按照 5 分钟进行划分
data = data.resample('5T').agg({
'price': 'ohlc',
'quantity': 'mean'
})
在上述代码中,我们使用 resample
方法按照 5 分钟('5T')进行划分。然后,我们使用 agg
方法对每个周期中的价格和数量数据进行聚合。这里,我们使用 'price': 'ohlc'
表示计算 OHLC 数据,使用 'quantity': 'mean'
表示计算数量的平均值。
最后,我们需要计算每个周期中的 OHLC 数据。具体地,我们需要计算开盘价、最高价、最低价和收盘价。下面是计算 OHLC 数据的代码:
# 计算 OHLC 数据
data['open'] = data['price']['open']
data['high'] = data['price']['high']
data['low'] = data['price']['low']
data['close'] = data['price']['close']
在上述代码中,我们从聚合后的数据中获取开盘价、最高价、最低价和收盘价,并将它们保存到新的数据列中。最终,我们得到了每个周期的 OHLC 数据。
下面是一个完整的示例代码,将 Tick-by-Tick 数据转换为 5 分钟的 OHLC 数据。
import pandas as pd
# 加载 CSV 文件
data = pd.read_csv('tick_data.csv')
# 将原始数据按照 5 分钟进行划分
data = data.resample('5T').agg({
'price': 'ohlc',
'quantity': 'mean'
})
# 计算 OHLC 数据
data['open'] = data['price']['open']
data['high'] = data['price']['high']
data['low'] = data['price']['low']
data['close'] = data['price']['close']
# 显示结果
print(data)
输出结果如下:
price quantity open high low close
open high low close mean
timestamp
2022-01-10 09:30:00 2967.50 2967.5 2959.5 2966.5 1739.502882 2967.50 2967.5 2959.5 2966.5
2022-01-10 09:35:00 2966.75 2971.0 2963.0 2964.0 2271.209529 2966.75 2971.0 2963.0 2964.0
2022-01-10 09:40:00 2963.50 2967.5 2962.0 2966.5 2263.931189 2963.50 2967.5 2962.0 2966.5
2022-01-10 09:45:00 2966.75 2968.0 2959.0 2960.0 2405.501140 2966.75 2968.0 2959.0 2960.0
...
上述代码根据每 5 分钟的聚合数,计算并输出 OHLC 数据。