You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python将不规则股票分钟数据转换为5/15分钟OHLC数据的实现方案

实现思路及代码示例

第一步:预处理原始数据

  • 按SYMBOL和DATE字段去重,同一只股票同一时间的重复数据仅保留第一条即可
  • 将DATE字段转换为datetime类型,CLOSE、VOLUME转换为数值类型
  • 按SYMBOL、DATE升序排序,保证数据时间顺序正确

第二步:时间窗口对齐

根据你需要的粒度(5分钟/15分钟),将每条数据的时间向下取整到所属的时间窗口节点,例如13:11:49属于5分钟粒度的13:10:00窗口、15分钟粒度的13:00:00窗口。
注意:因为你的VOLUME是累计成交量,不能直接分组求和,需要用窗口结束时的累计值减去窗口开始前的累计值,才能得到当前窗口的实际成交量

第三步:分组计算OHLC指标

每个时间窗口内按如下规则计算指标:

  • OPEN:窗口内第一条数据的CLOSE值
  • HIGH:窗口内所有CLOSE的最大值
  • LOW:窗口内所有CLOSE的最小值
  • CLOSE:窗口内最后一条数据的CLOSE值
  • VOLUME:窗口最后一条的VOLUME 减去 窗口第一条数据的上一条数据的VOLUME(若窗口是首段无前置数据,差值直接填0即可)

如果需要补全无数据的空窗口,可以选择用前一个窗口的CLOSE填充OHLC四值,VOLUME填0即可。

Python实现代码(基于Pandas)

import pandas as pd

# 读取原始数据,你也可以根据自己的数据来源调整读取逻辑
df = pd.read_csv("你的数据文件路径.csv", sep="\s+")  # 你的样例数据是空格分隔,所以用sep="\s+"匹配

# 预处理
df["DATE"] = pd.to_datetime(df["DATE"])
df = df.drop_duplicates(subset=["SYMBOL", "DATE"], keep="first")
df = df.sort_values(by=["SYMBOL", "DATE"]).reset_index(drop=True)

def calc_ohlc(df, time_freq):
    """
    计算指定粒度的OHLC数据
    :param df: 预处理后的原始数据
    :param time_freq: 时间粒度,5分钟传'5T',15分钟传'15T'
    :return: 对应粒度的OHLC数据
    """
    # 生成所属时间窗口标签
    df["time_window"] = df["DATE"].dt.floor(time_freq)
    # 提前计算每条数据的上一条累计成交量
    df["pre_volume"] = df.groupby("SYMBOL")["VOLUME"].shift(1)
    
    # 按股票+时间窗口分组聚合
    ohlc_df = df.groupby(["SYMBOL", "time_window"], as_index=False).agg(
        OPEN=("CLOSE", "first"),
        HIGH=("CLOSE", "max"),
        LOW=("CLOSE", "min"),
        CLOSE=("CLOSE", "last"),
        start_pre_vol=("pre_volume", "first"),
        end_vol=("VOLUME", "last")
    )
    # 计算窗口内实际成交量
    ohlc_df["VOLUME"] = (ohlc_df["end_vol"] - ohlc_df["start_pre_vol"]).fillna(0)
    # 剔除临时计算列
    ohlc_df = ohlc_df.drop(columns=["start_pre_vol", "end_vol"])
    return ohlc_df

# 生成5分钟OHLC
ohlc_5min = calc_ohlc(df, "5T")
# 生成15分钟OHLC
ohlc_15min = calc_ohlc(df, "15T")

内容的提问来源于stack exchange,提问作者FCTURKEY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:48:03