针形线与吞没形态结合RSI背离:多模式工具基础构建(基础篇)
(1/3)·只认形态不看过滤,信号常踩假突破;本篇铺垫两种K线形态与背离确认的底层的识别逻辑
「针形线与吞没形态叠加RSI背离的MT5工具起点」
在 MT5 上做价格行为量化,先把三类信号拆开看:针形线(Pin Bar)看影线比例,吞没形态(Engulfing)看实体覆盖,RSI 背离则看动能拐头。三者单独用噪声都高,合成一个多模式过滤器才有实操价值。 原文示例发布于 2026 年 4 月 3 日,截至当时公开页面显示阅读量 494、评论 0,说明这类纯工具向内容在中文社区还偏冷门,但逻辑可直接复用到贵金属与外汇直盘。 外汇与贵金属杠杆高、滑点随机,任何形态组合都只是概率倾斜,开仓前务必在策略测试器跑一遍历史样本。
为什么单看形态会吃假信号
上一篇文章里重点识别了四种K线形态:针形线、十字星、吞没形态和光头光脚K线,识别出来就直接发买卖信号。这种做法在实盘里常出虚假信号——确认逻辑只靠形态本身,没有任何过滤条件,外汇和贵金属这种高波动品种上尤其容易被扫损。 新工具把范围收窄到两种形态:针形线和吞没形态,并且接上了 RSI 背离做信号确认。RSI 背离是之前基于价格行为单独写过的指标,把它和形态识别叠在一起,相当于给每笔信号加了一道概率过滤。 从验证路径看,后面会先拆这两种形态,再讲策略、拆代码、跑回测。MT5 上你可以用历史数据把「纯形态信号」和「形态+RSI背离」两组命中率拉出来对比,高杠杆品种下后者假信号倾向更少。
◍ 针形线、吞没与RSI背离的盘面语言
在MT5里把周期从M30切到M5,同一处看跌吞没的视觉结构会完全变样:M30上它是两根K线(小阳接大阴、阴体包住阳体),M5上却由多根零散K线拼出同等含义。这说明形态本质不是固定根数,而是‘后段实体覆盖前段、且方向反转’的供需结构,低周期只是把单根拆细了。 针形线的识别只看一点:实体极小、一侧影线极长。长影代表价格曾快速探入某价位随即被拒,这种单根结构往往出现在反转或关键转折附近,是市场情绪突变的裸信号。 吞没形态由两根连续K线构成,第二根实体完全吞掉第一根。看涨吞没是大阳吞小阴,看跌吞没是大阴吞小阳,核心都是趋势末端动能易手。外汇与贵金属杠杆高,此类信号失败率不低,只能当作概率倾向而非确定性反转。 RSI背离给上述形态加了一层动量验证:价格出新高的同时RSI不过前高,是顶背离,向上动能衰减、回落概率偏大;价格出新低而RSI低点抬高,是底背离,向下动能松动、反弹可能来临。RSI本身测速与超买超卖,背离则是它最有用的暗号。
「针形线与吞没形态如何被 RSI 背离确认」
EA 的逻辑是先扫全图识别针形线(Pin Bar)和吞没形态(Engulfing),再把 RSI 背离当作信号过滤器。形态出现只是候选,必须等 RSI 在对应波段出现背离,才会在图上吐出买卖信号。 原文给出的图 5 展示了一根看涨针形线,其低点伴随 RSI 低点抬高,形成看涨背离,从而被系统确认。这种「形态 + 背离」双条件设计,能砍掉一部分无动量的假突破。 实操上,你可以在 MT5 加载该 EA 后,只开针形线+RSI 背离一类提示,观察 EURUSD 的 H1 上信号出现频率,再决定是否叠加吞没形态。外汇与贵金属杠杆高,信号只是概率倾向,不等于进场就反转。
EA 结构与关键代码拆解
这套 EA 把 RSI 背离和价格行为形态叠在一起做信号过滤。开头用 #property strict 强制严格编译,能在写代码阶段揪出类型不匹配之类的隐患;引入 <Trade/Trade.mqh> 虽未直接下单,但给后续接自动交易留了口子。 输入参数里 RSI_Period 默认 14,超买 70、超卖 30,SL/TP 各 20 点,EntryBuffer 设 5 点——它的作用是避开离极值太近的价位入场,降低假突破干扰。通知开关分声音、推送、邮件三层,默认邮件关、其余开。 OnInit 里用 iRSI() 建指标句柄,数组设成序列模式让索引 0 永远是最新值;lastBarTime 记录已处理 K 线时间,防止一根棒内重复报警。OnTick 每次报价触发,先卡至少 20 根历史棒才复制数据,复制失败就中止。 FindSignalBar 回溯 5~15 根找背离:价格低点抬高且 RSI 进超卖,倾向看涨;高点降低且超买,倾向看跌。必须再叠针形线或吞没形态才返回 ±1,否则 0。 IsBullishPinBar 之类函数靠实体和影线占全幅比例认结构,只取标准形态。DrawSignal 画箭头和趋势线,绿涨红跌,并按偏好推声音或推送。外汇与贵金属波动剧烈,这类信号仅作辅助,实盘前请在 MT5 策略测试器用历史数据验证命中率。 下面这段是 EA 头部与初始化入口的原文,逐行看能直接抄进 MetaEditor 改参数跑起来:
class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Multi-Pattern Signal EA| 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.0" class="macro">#class="kw">property strict class="macro">#include <Trade/Trade.mqh> input class="type">int RSI_Period = class="num">14; class=class="str">"cmt">// RSI calculation period input class="type">class="kw">double RSI_Overbought = class="num">70.0; class=class="str">"cmt">// RSI level indicating overbought input class="type">class="kw">double RSI_Oversold = class="num">30.0; class=class="str">"cmt">// RSI level indicating oversold input class="type">class="kw">double SL_Pips = class="num">20.0; class=class="str">"cmt">// Default stop loss in pips input class="type">class="kw">double TP_Pips = class="num">20.0; class=class="str">"cmt">// Default take profit in pips input class="type">class="kw">double EntryBuffer = class="num">5.0; class=class="str">"cmt">// Buffer in points for entry price input class="type">bool EnableSound = true; class=class="str">"cmt">// Enable sound alerts input class="type">bool EnablePush = true; class=class="str">"cmt">// Enable push notifications input class="type">bool EnableEmail = class="kw">false; class=class="str">"cmt">// Enable email alerts class="type">int OnInit() {