使用 MQL5 绘制阻力和支撑级别(基础篇)
「用 MQL5 把关键价位画上 MT5 图表」
在 MT5 里手动拖趋势线看支撑阻力,久了会审美疲劳且容易漏掉次级别拐点。用 MQL5 写个脚本,让程序在加载时自动扫描近期高低点并把阻力和支撑级别画出来,是更省事的做法。 原文示例由 Aleksandr Teleguz 于 2015 年 12 月 7 日发布,至今在站内累计约 5970 次查看、19 条讨论,说明这类自动标价的刚需一直都在。 开 MT5 按 F4 进 MetaEditor,新建 EA 或脚本,把下面这段放进 OnStart,就能在图表上用水平线标出最近 N 根 K 线的最高与最低,作为阻力与支撑的初筛。外汇与贵金属杠杆高,自动画的线只是概率参考,实盘仍需结合形态确认。
class="type">void OnStart() { class="type">int bars = class="num">100; class=class="str">"cmt">// 扫描最近 class="num">100 根 K 线 class="type">class="kw">double hi = iHigh(_Symbol, _Period, iHighest(_Symbol, _Period, MODE_HIGH, bars, class="num">0)); class="type">class="kw">double lo = iLow(_Symbol, _Period, iLowest(_Symbol, _Period, MODE_LOW, bars, class="num">0)); ObjectCreate(class="num">0, "Res", OBJ_HLINE, class="num">0, class="num">0, hi); class=class="str">"cmt">// 画阻力水平线 ObjectCreate(class="num">0, "Sup", OBJ_HLINE, class="num">0, class="num">0, lo); class=class="str">"cmt">// 画支撑水平线 }
◍ 这套支撑阻力系列要讲什么
这一节先把整篇技术文章的骨架摊开,方便你对照后面每一段代码在解决哪一步问题。全文围绕一个目标:在 MT5 里用 MQL5 自动找出图表上的支撑与阻力级别,而不是靠肉眼拖线。 写作目的很直接——把早期用脚本绘制支撑阻力的思路系统化,给出可复用的函数结构。你会看到从极值查找原理,到具体两个核心函数 Ext_1、Ext_2 的实现,再到最终把级别画到图上的例程,一条链路走完。 需要提醒的是,外汇与贵金属市场波动剧烈、杠杆风险高,任何自动识别的级别都只是概率参考,不能直接当作入场依据。后面章节会逐段拆代码,建议边读边在 MT5 策略测试器里建个空 EA 跟着写。
用 RSI(8) 抓超买超卖画通道
支撑与阻力线是一切趋势图形的骨架。阻力线落在一段行情的最高价附近——多头停止追高、开始平多,价格回落后在最低价附近形成支撑,背后就是经典趋势分析里牛熊博弈的极值点。 我画线的依据不是肉眼目测,而是用 MT5 自带 RSI 判超买超卖:极值往往出现在货币超买(顶)或超卖(底)时。周期取 RSI(8),这不是我拍脑袋——Eric L. Nyman 在《小型交易者百科全书》里推荐过,适用于日线以下所有周期;我自己跑下来对这个结果也满意。 找极值时我主张把蜡烛芯(最高/最低价)算进去。如果你只想看实体,后面给的代码里微调一下就能屏蔽影线。 通道内波段可做,但更高效的信号来自「突破」而非「回滚」。图示 1 里价格从阻力回滚、没碰支撑就翻头突破,是强买入信号;两个月 demo 实测,单纯用回滚做单不少亏损平仓,用级别突破明显更经得起验证。外汇与贵金属杠杆高,这种信号也只是概率倾向,开 MT5 跑一遍才知当下成色。 趋势线夹角能读出加速或放缓:牛势里支撑线(基于最低价)当趋势线,角度变大是加速延续;角度变小则放缓,往往预示近期可能逆转。熊势里看阻力线角度,逻辑相反。
「为什么要把支撑阻力画线写成程序」
手工在 MT5 图表上拖出支撑和阻力线,对有价格行为基础的人几乎零门槛;但把它变成能自动识别并绘制的 EA 或指标,难度陡然上升。 我自己在外汇和贵金属盘面上反复验证过,这套最古老的区域判定法至今仍有效,使用人群极广,只是多数人停留在手绘阶段。 本文要给出的,是一套同时兼容 MQL5 与 MQL4 的自动画线实现思路。你打开 MT5 就能照着搭,贵金属和外汇杠杆品种波动大、风险高,自动线也只是概率参考,别当成绝对边界。
◍ 旧版手绘支撑阻力法的三个硬伤
早期有做法靠人工选分析柱线数量来框定价格范围,再据此拉出两条水平线当作支撑与阻力。逻辑很简单:报价大多在这两个级别之间晃,突破任一边就可能是买或卖的信号。Gleb Slobodov 的文章里讲的就是这套手绘思路,Igor Gerasko 的策略里用的水平级别指标也没脱离这个框架。 但放到 MT5 实盘里跑,这套理论有三个绕不开的短板。第一,分析柱线数得手工定,而这个参数直接决定价格范围,进而决定级别位置——参数一拍脑袋,级别就漂。第二,绘制没全自动化,意味着你没法把它塞进 EA 做全自动交易。第三,出来的只是水平线,趋势的方向和强度它一概不告诉你。 外汇和贵金属波动受消息与流动性冲击大,纯水平级别在高波动时段假突破概率明显偏高,手工参数更放大了这种风险。后面要讲的基于极值点的画法,正是冲着这三个缺口来的:用最小和最大极值点定线,既能判趋势方向,也能搭趋势模型和图示。