📜  Python – 将 Tick-by-Tick 数据转换为 OHLC (Open-High-Low-Close) 数据

📅  最后修改于: 2022-05-13 01:54:52.131000             🧑  作者: Mango

Python – 将 Tick-by-Tick 数据转换为 OHLC (Open-High-Low-Close) 数据

在这篇文章中,我们将探索Python的 pandas 包功能。我们经常发现有关将逐笔报价数据转换为 OHLC(开盘价、最高价、最低价和收盘价)的查询。使用 pandas 套件可以轻松完成。 OHLC 数据用于单位时间(1 天、1 小时等)内对价格变动进行技术分析。

第一步:
第一步涉及样本数据的收集。让我们按报价数据导入报价样本报价。在本教程中,我们将使用从 Pepperstone(外部来源)下载的 AUD / JPY(澳元/日元)对的 1 月份数据。


Pepperstone 提供特定货币对的免费历史报价数据。 .csv 文件包含本书顶部的逐笔市场数据,以及分数点差的毫秒详细信息。对于我们的研究,数据绰绰有余。
Python中的步骤:
如您所见,数据没有标题。我们将包含标题并以编程方式完成必要的任务。
代码:导入 pandas 包。
# importing libraries
import pandas as pd

代码:加载数据。

data_frame = pd.read_csv(
    'AUDJPY-2016-01.csv', names=['Symbol', 'Date_Time', 'Bid', 'Ask'],
                                       index_col=1, parse_dates=True)
data_frame.head()

数据以名称“AUDJPY-2016-01.csv”存储在工作目录中。正如我们之前看到的,数据没有标题。然后,我们将在导入数据时为其添加标题。因此,导入和添加标题发生在同一行代码中。
使用了 pandas 数据框的 resample 属性。重采样功能允许重新检查标准时间序列数据。在 15 分钟内,我们必须重新采样数据并将其分区为 OHLC 格式。使用 L 代表毫秒,U 代表微秒,S 代表秒,如果你想在更小的时间范围内重新采样(毫秒/微秒/秒)等。

data_ask = data_frame['Ask'].resample('15Min').ohlc()
data_bid = data_frame['Bid'].resample('15Min').ohlc()

代码:“询问”数据框

data_ask.head()


代码:“出价”数据框
data_bid.head()

代码:合并“询问”和“出价”数据框

data_ask_bid = pd.concat(
    [data_ask, data_bid], axis=1, 
    keys=['Ask', 'Bid'])

结论:
这是使用 TBT 数据计算 OHLC 的一种快速方法。这可以跨资产应用,并且可以根据 OHLC 数据设计各种策略。我们还可以绘制基于 OHLC 的地图,并生成交易信号。使用数据的另一种方法是在Python中构建技术指标,或计算风险调整后的回报。