QMT量化交易:如何用局部极值找到支撑位和压力位(代码与开通攻略)
发布时间:7小时前阅读:33
今天我们来说说局部极值法确定压力和支撑位置。
文章很长,点个关注再往下看哦~
开始前的准备:
我这里用的行情数据源是xtquant + miniQMT。 后续示例里会用到一些常见的 Python 库:pandas, numpy, matplotlib,进阶部分还会涉及 scipy, sklearn。在实际运行代码之前,记得先把环境配置好:
这样就能避免因为依赖缺失导致的报错啦。以下是一个基于xtquant + miniQMT获取股票行情的方法,后面的行情Dataframe数据都会通过这个方法来获取:
由来与直观理解
直观上,局部极值就是价格曲线上的“山顶”(Swing High)和“山谷”(Swing Low)。这些点往往被交易者记住,并在后续成为阻力/支撑,比如价格反复在某个高度回落或反弹。
在技术分析里,很多工具(ZigZag、Fractals)本质上都是在寻找这些极值或近似极值,用来刻画市场结构(高点更高 / 低点更高 → 上升结构,反之则为下降结构)。
数学定义与原理:局部最大值(order = k)给定序列,索引 是局部最大值(order=k)当且仅当:
同理,局部最小值是小于左右k 个点的点。
极值确认(实际交易中常用)为了避免把“噪声尖刺”当做极值,通常要求在极值之后还要看到confirm 根反方向的柱子(例如峰后连续 confirm 个低点),才把它标记为已确认的极值(避免未来回溯/偷看数据的风险)。
峰的显著性(prominence)衡量一个峰相对于周围基线有多“突出”。通俗说就是峰顶到比它高的最近两侧“最低包围线”的高度。数值越大,代表更显著、更值得关注(也越不易被噪声触发)。
常用算法
在Python 里,其实不用我们自己写很多复杂的逻辑,scipy这个科学计算库已经帮我们准备好了“找高点/低点”的工具。里面常用的有两个方法:
Argrelextrema:
这个名字有点拗口,但原理很直白:就是和左右的邻居比大小。比如:如果某点比左右各3 根K线都高,那它就是一个局部高点;比左右都低,就是局部低点。参数order 就是控制“左右要比多少根”。
find_peaks:
两个高点之间至少要隔多少根K线(distance);这个高点要多明显才算(prominence);要求高点的高度(height);要求高点的宽度(width)。顾名思义,就是“找山顶”的工具。它可以找到价格曲线里的局部高点,如果把价格取负数,就能反过来找低点。还能加条件筛选。
经验:
argrelextrema适合入门,逻辑简单直观。
find_peaks更强大,可以根据显著性、间隔等条件自动过滤掉很多没意义的小波动。
我自己常用find_peaks + 平滑处理 + 基于 ATR 的显著性阈值,这样提取出来的高低点更稳健,不容易被噪声干扰。
实战Python代码:
使用argrelextrema寻找压力支撑
下面的示例代码使用了 Python 的scipy.signal.argrelextrema 来寻找局部极值,并绘制成可视化图表。

结果如下:
代码解析:寻找局部高低点
arr是价格序列(这里用 close 收盘价)。
order表示左右要比多少根K线才能判断为极值,比如 order=5 意味着这个点比前后各 5 根 K 线都高或都低才算极值。
peaks_idx存放局部高点索引,valleys_idx 存放局部低点索引。
可视化
plot_swings函数会:绘制价格曲线,用红色三角标记局部高点,绿色倒三角标记局部低点。在图上画出最近的最高点和最低点水平虚线,标注价格,方便快速识别当前关键支撑/阻力。
实战演示
这里以贵州茅台(600519.SH)的日线数据为例,获取最近200根K线。
调用find_swings_argrelextrema 自动识别局部极值,再通过 plot_swings 可视化。
图中红色水平虚线表示最近最高点,绿色水平虚线表示最近最低点,帮助直观判断当前价格位置。
使用建议
order参数:数值越大,算法越保守,只保留显著的高低点,避免噪声影响。
图表仅作为参考,实际策略中通常会结合趋势、成交量或其他指标进行进一步确认。
对于短周期数据,建议先平滑价格序列,再找极值,以避免被小波动干扰。
使用find_peaks寻找压力支撑
下面的示例代码使用了 Python 的scipy.signal.find_peaks 来寻找局部极值,并绘制成可视化图表。代码如下:

结果如下:
代码解析:寻找局部极值(Swing High / Low)
distance=5:控制相邻高点/低点最少间隔 5 根K线,避免捕捉太密集的小波动。
prominence=5.0:高点或低点必须足够突出才被认为是有效极值,过滤噪声。
返回索引peaks_idx2(高点)和 valleys_idx2(低点),便于后续绘图或策略使用。
可视化
绘制收盘价曲线,红色三角标记局部高点(Swing High),绿色倒三角标记局部低点(Swing Low),图中红色虚线标出最近最高点,绿色虚线标出最近最低点,直观展示当前支撑/阻力水平。
使用建议
distance和 prominence 参数需要根据周期和品种调节,避免噪声或错过重要波峰波谷。
对于短周期或高波动品种,建议先做价格平滑,再寻找极值。
仅靠极值做交易可能不够稳健,建议结合趋势、成交量或其他指标进一步确认。
总结
关注"叩富问财"公众号,回复"资深吴经理",联系专属客户经理开通量化交易权限!
立即行动:打开微信,搜索"叩富问财",在对话框中输入"资深吴经理",开启你的量化交易之旅!
温馨提示:投资有风险,选择需谨慎。
股票压力位支撑位是什么
压力位和支撑位是什么意思?
下一篇资讯:
暂无下一篇
-
被套不敢动、选股全靠蒙?国金证券AI投顾6大功能,专治普通人的投资无力感
2026-03-17 15:15
-
股市震荡期,如何用网格交易工具来赚钱?(附操作指南)
2026-03-17 15:15
-
普通人也能用的量化工具?国金证券QMT开通指南来了~
2026-03-17 15:15


问一问

+微信
分享该文章
