欢迎光临
我们一直在努力

QMT 量化实战:用均线簇精准定位支撑位与压力位(上)

本文将基于 miniQMT 量化终端与 xtquant 行情接口,通过 Python 实现均线簇算法,完成股票支撑位与压力位的量化定位,适合量化交易入门者、技术分析爱好者、QMT 平台使用者阅读学习。

一、前置环境与准备工作

本文所有代码均基于miniQMT终端的xtquant行情库开发,同时会用到 Python 数据分析与可视化的常用库,先完成环境配置与基础工具封装。

1.1 依赖库安装

执行以下 pip 命令完成所有依赖库的一键安装,避免运行时出现依赖缺失报错:

pip install pandas numpy matplotlib scipy scikit-learn xtquant

1.2 通用行情数据获取函数

基于 xtquant 封装标准化的股票历史行情获取函数,后续所有均线计算均基于该函数返回的行情 DataFrame 实现,函数兼容日线、周线、月线等多周期,支持多种复权方式,增量下载模式可大幅提升数据获取效率。

import pandas as pd
from xtquant import xtdata

def get_stock_hq(code, start_date='19900101', period='1d', dividend_type="front_ratio", count=-1):
"""
基于xtquant获取股票全量历史行情数据
:param code: 股票代码,格式为【代码.交易所】,例:600000.SH(沪市)、000001.SZ(深市)
:param start_date: 行情起始日期,格式YYYYMMDD
:param period: K线周期,支持1d(日线)/1w(周线)/1mon(月线),分钟线同理
:param dividend_type: 除权方式,可选值:none(不复权)/front(前复权)/back(后复权)/front_ratio(等比前复权)/back_ratio(等比后复权)
:param count: 获取K线数量,-1为获取起始日期以来的全部数据
:return: 包含OHLCV数据的DataFrame,索引为交易日期
"""
# 关闭控制台冗余日志
xtdata.enable_hello = False
# 增量下载历史行情数据,避免重复下载
xtdata.download_history_data(stock_code=code, period=period, incrementally=True)
# 拉取指定字段的行情数据
history_data = xtdata.get_market_data_ex(
field_list=['open', 'high', 'low', 'close', 'volume', 'amount', 'preclose'],
stock_list=[code],
period=period,
start_time=start_date,
count=count,
dividend_type=dividend_type
)
# 数据格式化处理
df = history_data[code]
df.index = pd.to_datetime(df.index)
df['date'] = df.index
return df

二、均线簇的由来与直观理解

在股票技术分析中,支撑位与压力位是核心分析要素,价格的上涨与下跌往往会在关键价位出现停滞、反转,而均线簇正是将这一主观概念进行量化的核心方法。

2.1 均线簇的核心定义

我们将多条不同周期的移动平均线同时绘制在 K 线图中,当这些均线在某一个价格区间高度聚集、差值极小时,就形成了均线簇;而均线簇的密集成交区间,往往就对应着个股的强压力位或强支撑位。

2.2 直观理解

我们可以把每一条均线想象成一根橡皮筋,多条均线聚集的区间,就相当于多根橡皮筋同时捆在价格的上方或下方:

  • 当价格向上试图突破这个区间时,上方的均线簇就会形成极强的阻力,也就是压力位;
  • 当价格向下试图跌破这个区间时,下方的均线簇就会形成极强的托举力,也就是支撑位。

本质上,均线簇是用不同周期的历史价格平均值,量化出市场的集体心理关口,反映了市场在该价位的多空均衡状态。

三、均线簇的数学定义与核心原理

3.1 基础指标:简单移动平均线 SMA

均线簇的计算基础是简单移动平均线(SMA),其计算公式如下:

其中:

3.2 均线簇的形成条件

均线簇的核心是「多周期均线高度聚集」,我们可以通过量化指标来精准判定均线簇是否形成,最常用的两个判定维度如下:

  • 极差判定法通过计算多周期均线的最大值与最小值的差值,衡量均线的聚集程度,公式如下:
  • 标准差判定法
  • 3.3 均线簇的核心原理

  • 市场均衡性反映:均线簇的密集区间,代表了短、中、长不同周期的市场持仓成本趋于一致,多空双方在该价格附近的力量达到相对均衡,是趋势酝酿的关键信号。
  • 趋势启动的确认:当价格带量突破均线簇密集区间时,代表均衡状态被打破,是趋势启动的典型信号;反之,价格放量跌破均线簇,则是下跌趋势开启的信号。
  • 支撑压力的转换:均线簇一旦被有效突破,原本的压力位就会转换为后续回调的强支撑位;反之,原本的支撑位被有效跌破后,会转换为后续反弹的强压力位。
  • 四、均线簇的常用实现算法

    4.1 基础版:简单聚合均线算法

    这是最易实现、最常用的均线簇判定算法,核心步骤如下:

  • 选定 5 条及以上不同周期的均线,常用周期组合:5 日、10 日、20 日、30 日、60 日、120 日;
  • 对每个交易日,同步计算所有选定周期的均线值;
  • 计算当日所有均线的最大值与最小值的极差 MAspread​;
  • 设定固定阈值(如当前收盘价的 2%),当 MAspread​ 小于阈值时,判定该区间形成均线簇;
  • 对比均线簇区间与当前股价的位置,判定支撑 / 压力属性。
  • 4.2 进阶版:均线簇密度算法

    基础版的固定阈值无法适配不同波动率的个股,进阶版通过动态阈值优化,提升均线簇判定的普适性,核心步骤如下:

  • 选定多周期均线组合,同步计算每日所有均线值;
  • 计算当日所有均线的标准差 MAstd​,用标准差衡量均线的密集程度;
  • 设定动态阈值:取过去 20 个交易日 MAstd​ 均值的 20% 作为阈值,当当日 MAstd​ 小于该动态阈值时,判定为有效均线簇;
  • 可通过调整回溯周期和阈值比例,适配不同风格的个股(大盘股 / 小盘股、高波动 / 低波动标的)。
  • 4.3 支撑位与压力位的最终判定规则

    完成均线簇的识别后,通过以下规则完成支撑 / 压力位的最终判定:

    • 若均线簇密集区间位于当前股价上方,则该区间为个股的强压力位;
    • 若均线簇密集区间位于当前股价下方,则该区间为个股的强支撑位。
    赞(0)
    未经允许不得转载:171主机测评 » QMT 量化实战:用均线簇精准定位支撑位与压力位(上)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址