← 返回博客列表

【Python量化实战全攻略 #17】均线交叉择时手册:单、多均线金叉死叉(附代码)

2026年10月19日 09:42 · 智兔数服 · Python量化实战全攻略

摘要:【Python量化实战全攻略 #17】均线交叉择时手册:单、多均线金叉死叉(附代码) 手册定位:模块三「择时策略实战」第 1 篇。均线交叉是最经典的择时信号——金叉看多、死叉看空。本篇讲单均线、双均线、多均线系统的构

手册定位:模块三「择时策略实战」第 1 篇。均线交叉是最经典的择时信号——金叉看多、死叉看空。本篇讲单均线、双均线、多均线系统的构建与实跑。
数据来源复用 #02 历史K线(日线 close 序列)。

1. 你将得到什么

  • 双均线(MA5/MA20)金叉死叉信号的生成代码;
  • 多均线系统(MA5/MA20/MA60)多空状态判断;
  • 把信号转成「持仓 1/空仓 0」的序列;
  • 均线择时的 4 个坑(参数过拟合、震荡市假信号、滞后、均线类型)。

2. 取数约定(复用)

信号 来源 见
日线 close /hs/history/{代码}.{市场}/d/n #02
均线端点 /hs/history/ma/{代码}.{市场}/d/n #02

3. 数据来源(复用,不重复罗列)

详见 #02 历史K线接口手册(日线、均线端点)。

4. 核心模板函数(自包含可跑)

import pandas as pd
import numpy as np

_MOCK = True


def sma(close, n):
    return pd.Series(close).rolling(n).mean()


def cross_signal(close, fast=5, slow=20):
    f, s = sma(close, fast), sma(close, slow)
    pos = (f > s).astype(int)
    pos = pos.where(f.notna() & s.notna(), 0)
    return pos


def multi_ma_state(close, mas=(5, 20, 60)):
    rolls = {n: sma(close, n) for n in mas}
    short, mid, long = rolls[mas[0]], rolls[mas[1]], rolls[mas[2]]
    bull = (short > mid) & (mid > long)
    bear = (short < mid) & (mid < long)
    return np.select([bull, bear], [1, -1], default=0)


def run_check():
    close = [10, 10.2, 10.5, 11.0, 11.5, 12.0, 11.8, 11.0, 10.5, 10.0, 9.8, 10.2]
    sig = cross_signal(close, fast=3, slow=6)
    assert sig.iloc[-1] in (0, 1)
    st = multi_ma_state(close + [10.5, 11.0], mas=(3, 5, 8))
    assert st[-1] in (-1, 0, 1)
    print("校验通过 | 末态持仓信号=%d 多空状态=%d" % (sig.iloc[-1], st[-1]))
    return sig, st


if __name__ == "__main__":
    run_check()

5. 跑通示例

sig, st = run_check()
print("最近持仓状态:", "持仓" if sig.iloc[-1] == 1 else "空仓")

6. 坑与注意事项

  1. 参数过拟合:别在历史数据上「优化」出怪参数,实盘会失效。
  2. 震荡市假信号:无趋势时均线反复交叉,要加过滤。
  3. 滞后:均线是滞后指标,趋势反转后信号迟到。
  4. 均线类型:SMA/EMA、复权价口径要统一。

7. 小结与下一篇预告

均线择时是择时入门。下一篇讲MACD 金叉死叉——均线的升级版。

下一篇预告:《【Python量化实战全攻略 #18】MACD 金叉死叉手册:DIF、DEA、柱体全拆解(附代码)》

8. 免责声明

本文为择时方法示例,演示数据为虚构,不构成投资建议。


关于数据来源:本文均线信号所需的日线数据来自智兔数服(www.zhituapi.com)官方文档接口(详见本系列 #02),覆盖 200+ 已验证路径,注册可领免费 token 做研究测试。
更多实战手册见技术博客:zhituapi.com/blog.html。
本系列《Python量化实战全攻略》共 32 篇,下一篇讲 MACD。

想亲自试一下?免费获取证书