从新手到专家:支撑与阻力强度指标(SRSI)(基础篇)
📘

从新手到专家:支撑与阻力强度指标(SRSI)(基础篇)

第 1/3 篇

「SRSI 指标要解决的市场痛点」

传统支撑阻力画线靠肉眼,遇到震荡与假突破极易误判级别。Clemence Benjamin 在 MT5 环境实现的支撑与阻力强度指标(SRSI),核心是把「价格触碰次数 + 停留时长 + 成交量权重」压缩成一个可排序的强度值,让交易者直接看数值挑关键位。 该文发布于 2025 年 12 月 6 日,截至统计有 1895 次查看、6 条讨论,说明这类量化支撑阻力工具在实盘群体里确有高频需求。外汇与贵金属波动受杠杆与消息驱动,强度高不等于不会破,仅代表该位被验证的概率更大。 指标源文件以 MQL5 附件形式给出,可直接拖进 MT5 的 Indicators 目录编译。下一步要做的不是迷信数值,而是开 MT5 加载后观察不同周期下强度排序是否和肉眼关键位吻合。

◍ 为什么要把画线交给机器

手动在 MT5 里拉水平线标记关键价位,是多数交易者每天的开盘动作。但人眼挑水平和机器扫历史,偏差天然存在:漏掉前高前低、把次要震荡位当成支撑,这类失误在手动场景下几乎无法杜绝。

  • 年 7 月 Mark Angelo D. Julian 等人在论文里做过人脑与计算机的对照,结论很直白——人类胜在语境理解,计算机赢在速度、精度与重复计算。处理全品种数年 tick 数据找共振位,人手动做一遍可能要几天,脚本跑完以秒计。

外汇与贵金属波动受流动性切换影响大,关键位失效概率不低,用自动化先把价位全集拉出来,再人工筛,比纯手绘更稳。开 MT5 接个脚本扫一遍历史高低,是验证这点的第一步。

三类交易品种里的结构共性

MT5 本身就是一个装着价格数据、分析工具和历史的仓库。蜡烛序列本质是开高低收四价算出来的柱子,MA 这类指标又是从这些柱子派生。手动翻 5000 根蜡烛不仅烦,还容易看错,所以把支撑阻力识别交给代码更靠谱。 我连了经纪商账号,能交易的品种覆盖波动率指数、外汇、股票等。这次先挑了几个有代表性的看周线结构。波动率 75(1 秒)指数 2020 年推出后快速崩了一波,近三年转成震荡,跟风做空的旧习惯在周线盘整里很容易亏。 美股科技 100 周线是一路向上加周期回调,回调区往往沉淀出强支撑;欧美 EUR/USD 周线则是小脉冲后长期区间,大部分时间不在趋势里。三个品种时间框架不同,但价格都在反复回踩早先的水平位。 结论很直接:盘整市里支撑阻力是价格反应的高发区,但弱位不一定引发大波动,强位也只是「概率更高」地起作用。外汇和贵金属杠杆高,这类区间假突破比趋势市更频繁,验证前别重仓。 下一段我们先把支撑阻力基础过一遍,再进算法开发。

「把手动画线交给MT5去跑」

支撑和阻力本质是一片区域而非精确价位:买盘在前期低点密集区积累形成支撑,卖盘在前期高点密集区压制形成阻力。手工画这些线费时且主观,用指标把「极端转折+邻近测试」的规则写死,MT5 就能自动标出 SS/SR(强支撑/强阻力)和 WS/WR(弱支撑/弱阻力)。 识别逻辑很直接:波峰判定要求某根 K 线高点高于前后各 5 根 K 线高点,波谷则要求低点低于前后各 5 根低点;测试点定义为价格落在极端点 ±5 点(默认参数,代码里可改)范围内。测试次数达到用户输入的最小阈值才记为「强劲」,否则归为弱势。 报警做了限流:自上次推送满 1 小时且存在强劲水平位才发一条,含类型、水平价、当前价。这比那些每根 tick 都叫的指标安静得多,适合外汇和贵金属这种高波动、高风险的品种——水平位被破的概率始终存在,别当铁底铁顶用。 MetaTrader 5 强制指标至少有一个缓冲区,即便不画数据也得塞一个。下面这段是新建自定义指标时的基础模板,我们后面所有模块都挂在它上面: //+------------------------------------------------------------------+

//                                                        _SRSI.mq5
//                                   Copyright 2025, Metaquotes Ltd
//                                            [MQL5官方文档]

//+------------------------------------------------------------------+

//Custom indicator initialization function                        

//+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+

//Custom indicator iteration function                              

//+------------------------------------------------------------------+ int OnCalculate(const int rates_total, 逐行拆解:第 1–4 行是注释框,仅说明文件名与版权来源;#property copyright / link / version 是指标元数据,link 填了原站地址但你在自己版本里应改成自己的;#property indicator_chart_window 让指标直接画在主图而非副图。OnInit 函数体里只留了缓冲区映射的注释和 return(INIT_SUCCEEDED),此时还没建虚拟缓冲区——后续步骤会补一个隐藏数组绑到缓冲槽。OnCalculate 参数列表在这段被截断,它是每根 K 线触发的主计算入口,后面 11 步的逻辑全塞进去。 开 MT5 新建指标粘这段当底,再把转折识别、测试统计、绘制矩形和限流报警依次补进对应函数,编译通过就能在 EURUSD 的 H1 上看到灰色区域+蓝红实线自动标出来。先把默认 7 点容差和 5 根窗口调一遍,感受一下它对假突破的过滤倾向。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//|                                                                _SRSI.mq5 |
class=class="str">"cmt">//|                                     Copyright class="num">2025, Metaquotes Ltd |
class=class="str">"cmt">//|                                                [MQL5官方文档] |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="macro">#class="kw">property copyright "Copyright class="num">2025, Metaquotes Ltd"
class="macro">#class="kw">property link      "[MQL5官方文档]
class="macro">#class="kw">property version   "class="num">1.00"
class="macro">#class="kw">property indicator_chart_window
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Custom indicator initialization function                          |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">int OnInit()
  {
class=class="str">"cmt">//--- indicator buffers mapping

class=class="str">"cmt">//---
   class="kw">return(INIT_SUCCEEDED);
  }
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Custom indicator iteration function                              |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="type">int OnCalculate(class="kw">const class="type">int rates_total,

常见问题

漏的是成交量与触碰次数的加权。人眼容易只看最近两三个点,机器会把历史所有触碰和对应成交量一起算强度。
三者都在密集成交区形成慢变平台,在稀区形成快破位。结构共性是可被强度阈值统一识别的。
小布可自动扫描品种页上的结构区并标出强度等级,你只需看排序结果,不用自己一根根画。
程序按同一规则回溯全部历史,不疲劳不主观,能给出可复验的强度数值而非感觉。
把单根线当绝对边界。应看强度分级,弱区只参考不赌反转,强区才重点看反应。