)
本文将基于 miniQMT 量化终端与 xtquant 行情接口通过 Python 实现均线簇算法完成股票支撑位与压力位的量化定位适合量化交易入门者、技术分析爱好者、QMT 平台使用者阅读学习。一、前置环境与准备工作本文所有代码均基于miniQMT终端的xtquant行情库开发同时会用到 Python 数据分析与可视化的常用库先完成环境配置与基础工具封装。1.1 依赖库安装执行以下 pip 命令完成所有依赖库的一键安装避免运行时出现依赖缺失报错pip install pandas numpy matplotlib scipy scikit-learn xtquant1.2 通用行情数据获取函数基于 xtquant 封装标准化的股票历史行情获取函数后续所有均线计算均基于该函数返回的行情 DataFrame 实现函数兼容日线、周线、月线等多周期支持多种复权方式增量下载模式可大幅提升数据获取效率。import pandas as pd from xtquant import xtdata def get_stock_hq(code, start_date19900101, period1d, dividend_typefront_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_codecode, periodperiod, incrementallyTrue) # 拉取指定字段的行情数据 history_data xtdata.get_market_data_ex( field_list[open, high, low, close, volume, amount, preclose], stock_list[code], periodperiod, start_timestart_date, countcount, dividend_typedividend_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 支撑位与压力位的最终判定规则完成均线簇的识别后通过以下规则完成支撑 / 压力位的最终判定若均线簇密集区间位于当前股价上方则该区间为个股的强压力位若均线簇密集区间位于当前股价下方则该区间为个股的强支撑位。