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

stockstats预期的数据结构是什么?如何基于DataFrame计算MACD?

解决stockstats计算MACD的问题

我来帮你梳理清楚stockstats对数据结构的要求,以及正确计算MACD的步骤——你遇到的问题大概率是因为列名不符合stockstats的默认识别规则。

stockstats预期的数据结构

stockstats的StockDataFrame默认会识别标准的金融数据列名,核心列要求如下:

  • 收盘价:close(必须,MACD基于收盘价计算)
  • 可选列:open(开盘价)、high(最高价)、low(最低价)、volume(成交量)

如果你的DataFrame列名不是这些标准名称,要么重命名列,要么给StockDataFrame指定列名映射关系,两种方式都可以。

针对你的DataFrame的解决步骤

你的DataFrame列是T(时间戳)、L(最低价)、H(最高价)、O(开盘价)、C(收盘价)、BV(成交量),我们可以按以下步骤处理:

1. 预处理原始DataFrame

首先确保时间列是datetime格式,最好设置为索引(方便后续时间序列分析):

import pandas as pd
from stockstats import StockDataFrame

# 对应你用json_normalize生成的df
data = [
    {"T": "2015-08-14T00:00:00", "L": 0.006667, "H": 0.080000, "O": 0.006900, "C": 0.007000, "BV": 29.545465},
    {"T": "2015-08-15T00:00:00", "L": 0.005950, "H": 0.007240, "O": 0.006740, "C": 0.006954, "BV": 20.274633},
    {"T": "2015-08-16T00:00:00", "L": 0.004120, "H": 0.006900, "O": 0.006501, "C": 0.006051, "BV": 47.971549},
    {"T": "2015-08-17T00:00:00", "L": 0.004655, "H": 0.006139, "O": 0.006139, "C": 0.004798, "BV": 30.391738}
]
df = pd.io.json.json_normalize(data)

# 转换时间列为datetime格式
df['T'] = pd.to_datetime(df['T'])
# 设置时间列为索引(可选但推荐)
df.set_index('T', inplace=True)

2. 方式一:重命名列到标准名称

这是最直接的方式,把你的列名映射成stockstats默认识别的名称:

# 重命名列
df.rename(columns={
    'O': 'open',
    'H': 'high',
    'L': 'low',
    'C': 'close',
    'BV': 'volume'
}, inplace=True)

# 转换为StockDataFrame
stock_df = StockDataFrame.retype(df)

3. 方式二:自定义列名映射(无需重命名)

如果不想修改原始列名,可以在初始化StockDataFrame时指定映射关系:

stock_df = StockDataFrame(df, column_map={
    'O': 'open',
    'H': 'high',
    'L': 'low',
    'C': 'close',
    'BV': 'volume'
})

4. 计算并获取MACD数据

stockstats会动态生成技术指标列,当你访问macd(MACD线)、macds(信号线,默认9日EMA)、macdh(柱状图,MACD与信号线的差值)时,会自动计算:

# 获取包含收盘价和MACD的结果
macd_result = stock_df[['close', 'macd', 'macds', 'macdh']]
print(macd_result)

注意事项

  • 确保你的数据是按时间顺序升序排列的,否则MACD计算结果会出错(你的数据看起来已经是按日期从早到晚排的,没问题)
  • MACD的计算只依赖收盘价,所以即使没有开盘/最高/最低/成交量列,只要有close列就能计算,但完整的K线数据更利于后续其他指标分析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:46