技术分享

【Python量化实战 #04】Python量化技术指标:一键取MACD、KDJ、均线数据(mairui)

写量化策略时,很多人会在本地用 TA-Lib / pandas 重算指标。若你的数据源已经提供服务端技术指标,直接拉 MACD、KDJ、均线往往更省事、也更易与线上口径对齐。本文是「Python量化实战」第 4 篇(#04)。

SDK 里有哪些指标方法?

常用封装(股票):

  • stock_macd(code, period="d", dividend="n", ...)
  • stock_kdj(...) · stock_ma(...) · stock_boll(...)
  • 更通用:stock_indicator / stock_indicators(按文档指标名)

指数侧有对应的 index_macd / index_kdj 等。完整列表见 SDK 页 与 GitHub README,字段说明见 hsdata 文档

MACD 实战示例

from mairui import Client
import pandas as pd

with Client(licence="你的证书UUID") as api:
    macd = api.stock_macd("000001.SZ", "d", "n", st="20240101", et="20241231")

df = pd.DataFrame(macd)
print(df.tail())

均线与 KDJ:

with Client(licence="你的证书UUID") as api:
    ma = api.stock_ma("600519.SH", "d", "n", lt=120)
    kdj = api.stock_kdj("600519.SH", "d", "n", lt=120)

把指标接到简单策略骨架

def macd_cross_signal(df):
    """示例:仅演示结构,字段名请按实际返回修改。"""
    # 假设含 dif/dea 列
    if "dif" not in df.columns or "dea" not in df.columns:
        return "请先打印 df.columns 对齐字段"
    prev = df.iloc[-2]
    cur = df.iloc[-1]
    if prev["dif"] <= prev["dea"] and cur["dif"] > cur["dea"]:
        return "金叉候选"
    if prev["dif"] >= prev["dea"] and cur["dif"] < cur["dea"]:
        return "死叉候选"
    return "无交叉"

with Client(licence="你的证书UUID") as api:
    raw = api.stock_macd("000001.SZ", "d", "n", lt=80)
df = pd.DataFrame(raw)
print(macd_cross_signal(df))

注意:示例不等于投资建议;上线前要做滑点、停牌与交易成本假设。

指数指标:看大盘环境

with Client(licence="你的证书UUID") as api:
    # 指数代码以文档为准,例如上证相关代码
    idx = api.index_macd("000001.SH", "d", lt=60)
    print(idx[-1] if idx else None)

本地重算 vs 接口直取

  • 接口直取:口径统一、省 CPU,适合快速验证与生产对齐。
  • 本地重算:定制参数、研究型实验更灵活。
  • 两者混用时,务必核对周期、除权与最少样本长度。

下一篇预告

第 5 篇(#05):财务报表 API——资产负债表、利润表、现金流,做基本面筛选。本系列持续更新中。

关键词:Python MACD 数据、KDJ 接口、股票技术指标 API、量化均线、mairui stock_macd、麦蕊智数。

麦蕊智数 MyData 团队 · Python量化实战 #04