Institutional Framework Trading System MT5
- 指标
- 版本: 1.586
- 更新: 19 十月 2026
区间交易版(Range-Bound Edition)· v1.58
使用机构真正采用的结构交易金融工具
大多数零售版 Smart Money Concept(SMC)工具只做一件事:在图表上绘制订单块(Order Blocks)和流动性扫荡(Liquidity Sweeps),然后让你自己决定是否相信这些信号。Institutional Framework Trading System MT5 并不止步于此。
它生成的每一个信号,都是经过确认的价格行为结构,并且已经与最多三个额外的机构级市场环境层进行交叉验证——真实期权市场定位、宏观基本面以及市场情绪。所有这些因素最终被综合成一个清晰的信号,而不是让三个指标在你的屏幕上各说各话。
该系统专为已经理解订单块、流动性扫荡以及供需区域,并希望使用一个能够验证市场结构,而不仅仅是绘制结构的系统的交易者而设计。
它的不同之处
-
完整的 SMC 结构引擎 — 包括订单块、流动性扫荡以及供需区域,完全基于已确认且已经收盘的 K 线价格行为构建。K 线一旦收盘,信号立即锁定,此后绝不会重绘。
-
多层确认,而不仅仅是结构。 每个结构信号在显示到图表之前,都会经过背离、衰竭以及吸收检测器的交叉验证。因此你看到的是价格结构与订单流行为之间的一致性,而不仅仅是某个形态匹配。
-
真实期权市场共振。 直接读取 COMEX 黄金期货期权数据——真实的未平仓合约(Open Interest)、Max Pain 以及来自实际黄金期权市场的流动性水平,而不是合成替代数据,从而识别大型资金在价格到达某个位置之前究竟聚集在哪里。
-
从设计上具备宏观意识。 内置数据管线读取美联储资产负债表、CPI/PPI 以及就业数据,使你的信号与更广泛的宏观市场环境保持一致,而不是忽略宏观背景。
-
具备情绪感知能力。 CFTC Commitment of Traders(COT)持仓以及市场 Fear & Greed 数据构成真正的逆向过滤器——极端情绪读数被视为反向交易机会,而不是直接做多或做空的绿灯。
-
两种专门设计的模式。 面向趋势市场的基于评分的 Conservative Mode,以及本版本默认的 Range-Bound Mode。后者经过策略测试调校,专门用于震荡/盘整市场,在这种环境下,结构和均值回归往往比动量更加重要。
-
开箱即用,并能随你扩展。 上述所有高级层均为可选功能。零配置加载指标后,它就会从第一根 K 线开始基于纯验证结构运行。之后你可以根据需求加入期权数据、宏观数据或情绪数据;核心引擎之外的任何功能都不是产生信号的必要条件。
-
将 .mq5 文件复制到你的终端 MQL5\Indicators 文件夹中(在 MT5 中进入 File → Open Data Folder),然后在 MetaEditor 中进行编译。
-
将指标加载到黄金图表上(它同样适用于其他交易品种,但本文件中的所有默认设置和说明均以 XAU 为基础)。
-
保持所有输入参数为默认值。本版本默认运行在 Range-Bound Mode 下——即本版本经过调校的模式,同时启用背离检测,但隐藏图表上的背离标记(原因见第 2 节)。
-
加载后查看 Experts 日志。若自动获取基本面或情绪数据失败,日志会明确告诉你;图表上的信息面板则会一目了然地显示当前模式、市场状态以及信号评分状态。
-
如果希望使用期权市场共振,请从第 11 节中选择一种数据路径;否则可以完全跳过该部分,指标即使没有期权数据也能正常运行。
enum ENUM_SIGNAL_MODE { MODE_CONSERVATIVE, MODE_RANGEBOUND };
-
Conservative Mode — 基于积分评分的系统。订单块、流动性扫荡、背离、衰竭、吸收、Cluster Confluence(集群共振)以及 Options Confluence(期权共振)都会增加评分;只有当总评分超过 MinSignalScore (默认值 4)时,才会触发信号。市场状态过滤器(第 12 节的基本面/情绪读取)会在该模式下主动阻止与当前主导偏向相反的信号。
-
Range-Bound Mode(本版本默认模式)——必须满足一个结构条件(订单块 或 一个有效的需求/供应区域),并且满足一个确认条件(背离、衰竭 或 吸收),同时还必须达到 RangeBoundMinScore 的最低评分要求(默认值 2——该数值会精确复现原始的常驻过滤逻辑;只有当你希望 Cluster/Options Confluence 对信号产生更大的影响时,才需要提高该数值)。在该模式下,市场状态过滤器不会阻止信号方向——无论基本面/情绪偏向如何,多空两个方向都会保持激活。
重要——修改 RequireDivergence 、 RequireOrderBlock 或 RequireSweep 之前请先阅读:
这三个参数只适用于 Conservative Mode。在 Range-Bound Mode(默认模式)运行时,这三个参数完全不起作用,因此不要花时间对它们进行调节。 RequireDivergence 默认设置为 false ,这样即使以后切换回 Conservative Mode,也能保持一致的行为。
DrawDivergenceMarks 在本版本中同样默认设置为 false 。它纯粹用于视觉显示——只负责隐藏图表上的 DIV_ 标记。底层的背离检测器( EnableDivergence ,仍然为 true )会继续运行,并且在 Range-Bound Mode 中仍然计入 hasConfirmation 。
如果希望在图表上看到背离的视觉标记,可重新启用 DrawDivergenceMarks 。
3. 核心结构检测组: === SMC / Structure Detection ===
| 参数 | 默认值 | 功能 |
|---|---|---|
| SwingWing | 3 | 一根 K 线左右两侧需要多少根 K 线才能确认其为 swing high/low。数值越低 = Swing 越多、噪音越大;数值越高 = Swing 越少、但重要性更高。 |
| SwingLookback | 100 | 在检查背离或流动性扫荡结构时,Swing 查找器向历史回溯多少根 K 线以寻找之前的 Swing 点。 |
| ATRPeriod | 14 | ATR 周期,用于调整指标中几乎所有与距离有关的阈值,包括 displacement、exhaustion、absorption 以及 divergence-swing filters。 |
| OBDisplacementMult | 1.0 | 一根 K 线要成为订单块 displacement K 线所需的最小“实体大小 / ATR”比例。 |
| OBMaxWickRatio | 0.3 | displacement K 线的价格区间中允许由影线占据的最大比例(0–1)。用于过滤那些虽然区间很大、但主要由影线组成的 K 线,避免其被视为真正的 displacement。 |
| SDMoveMultiple | 3.0 | 后续爆发性价格移动必须达到“基础 K 线区间”的多少倍,才能被认定为供需区域(见第 6 节)。 |
| EquilibriumBandPct | 0.05 | 在检测到的价格区间 50% 水平附近,用于定义 equilibrium(均衡区)的带宽。 |
组: === Exhaustion Detection === 、 === Absorption Detection === 、 === Delta Divergence === 、 === Delta (Native Tick) ===
| 参数 | 默认值 | 功能 |
|---|---|---|
| EnableExhaustion | true | 衰竭检测器总开关。 |
| ExhaustionWickMult | 0.6 | 一根 K 线被认定为衰竭所需的最小“影线 / 总区间”比例。 |
| ExhaustionBodyMult | 0.3 | 与该影线同时存在时,允许的最大“实体 / 总区间”比例。 |
| EnableAbsorption | true | 吸收检测器总开关。 |
| AbsorptionVolFactor | 1.5 | 一根 K 线要被认定为吸收,其成交量相对于平均成交量所需达到的最小倍数。 |
| AbsorptionRangeFactor | 0.8 | 允许的最大“价格区间 / ATR”比例。(吸收 = 高成交量 + 小区间)。 |
| AbsorptionRejectPct | 0.2 | 所需的最小影线拒绝比例。 |
| EnableDivergence | true | 背离检测器总开关——即使 DrawDivergenceMarks 关闭,也应保持开启(见第 2 节)。 |
| DrawDivergenceMarks | false(本版本) | 纯视觉功能——显示/隐藏图表上的 DIV_ 标记。无论开启还是关闭,都不会影响信号生成。 |
| DivergenceMinSwingATR | 1.0 | 两个 Swing 在进行背离比较之前必须达到的最小价格差(以 ATR 衡量),用于过滤噪音级别的 Swing。 |
| MaxTickBars | 50 | 最近多少根 K 线可以使用真实的买入/卖出 tick delta 进行背离分析;更早的 K 线将自动改用原始 tick volume。 |
组: === Cluster Confluence (both modes) ===
| 参数 | 默认值 | 功能 |
|---|---|---|
| UseClusterScoring | true | 是否允许同一根 K 线上同时出现多个确认条件时获得评分奖励。 |
| MinClusterSignals | 3 | 触发该评分奖励所需同时一致的确认条件数量。 |
| ClusterBonusScore | 2 | 该奖励的分值,并将其加入信号总评分。 |
该功能适用于两种模式——在 Range-Bound Mode 中,它会进入第 2 节所描述的 RangeBoundMinScore 过滤逻辑。
6. 供需区域组: === Supply & Demand Zones ===
| 参数 | 默认值 | 功能 |
|---|---|---|
| DrawSupplyDemandZones | true | 区域绘制引擎总开关。 |
| SDLookback | 100 | 区域查找器回溯多少根 K 线寻找符合条件的“基础 + 爆发性移动”形态。 |
| SDMaxBaseCandles | 4 | 爆发性移动发生之前,允许作为“基础”(盘整)的最大 K 线数量。 |
| SDDisplacementMult | 0.5 | 离开区域的爆发性移动所需达到的最小“实体 / ATR”比例。(该参数独立于且比 OBDisplacementMult 更宽松——供需区域与订单块独立检测。) |
| SDMaxZonesShown | 3 | 同时显示在图表上的区域数量上限。 |
| SupplyZoneColor / DemandZoneColor | Red / Blue | 图表显示颜色。 |
一个有效的(尚未被消耗的)需求区或供应区,可以与订单块完全一样地满足 Range-Bound Mode 过滤器中的“结构”部分(第 2 节)。
7. 高周期过滤器组: === Higher-Timeframe Confirmation ===
| 参数 | 默认值 | 功能 |
|---|---|---|
| UseHTFFilter | true | 信号触发前,是否要求更高时间周期的方向判断与信号方向一致。 |
| HTFTimeframe | H4 | 用于检查的更高时间周期。 |
| HTFLookbackBars | 20 | 趋势判断向历史回看多少根已经收盘的 H4 K 线。 |
| HTFNeutralPct | 0.05 | 高周期趋势需要多接近平坦,才会被视为“中性”(既不阻止多头,也不阻止空头)。 |
该过滤器始终读取最新的已收盘高周期 K 线,从不读取当前正在形成的 K 线,因此不会发生重绘。
8. 交易时段过滤器组: === Session Filter (approximate UTC windows, NOT DST-adjusted) ===
| 参数 | 默认值 | 功能 |
|---|---|---|
| AllowedSession | SESSION_ALL | 将信号限制在特定交易时段: SESSION_ALL 、 SESSION_LONDON 、 SESSION_NEWYORK 或 SESSION_LONDON_NY 。 |
| UTCOffsetHours | 0 | 如果你的经纪商服务器时间不是 UTC,用于进行时间偏移修正。 |
内部实际检查的时间窗口:
伦敦 = 08:00–16:00 UTC
纽约 = 13:00–21:00 UTC
| 参数 | 默认值 | 组 | 功能 |
|---|---|---|---|
| SignalCooldownBars | 5 | Signal Cooldown | 同一区域两个信号之间必须至少间隔的 K 线数量;如果价格尚未移动足够距离,则同时考虑最小价格距离,以防止同一水平反复产生信号。 |
| MaxBarAgeForSignal | 25 | Stale Zone Decay | 一个订单块允许存在多长时间仍可作为新信号的有效结构。该参数决定箭头是否能够出现本身,与第 13 节中的警报时间设置不同。 |
组: === Fibonacci Extension Auto-Targets ===
一旦检测到看涨或看跌订单块,图表会自动绘制 TP1 / TP2 / TP3 (Fibonacci 扩展,默认值为 1.618 / 2.618 / 4.236)以及 BE 参考线。
图表中明确写出的规则:将你的 Stop-Loss 移动至盈亏平衡(Break-Even)。
| 参数 | 默认值 |
|---|---|
| EnableFibTargets | true |
| FibTP1 / FibTP2 / FibTP3 | 1.618 / 2.618 / 4.236 |
| FibTP1Color / FibTP2Color / FibTP3Color | Yellow / Orange / Red |
| TrailBEColor | White |
你有两种方式向 Options Liquidity Confluence(期权流动性共振)评分奖励提供真实期权市场数据。
只需要选择其中一种——即使两种都不使用,指标也可以正常运行。
方案 A — FlashAlpha Live API(方便,但属于代理数据)
-
在 lab.flashalpha.com 获取免费 API Key。
-
设置 UseLiveAPI = true ,并将 API Key 填入 FlashAlpha_API_Key 。
-
将 FlashAlpha_Expiration 设置为所需的到期日,格式为 yyyy-MM-dd 。这是必需的,因为免费版本不能一次查询“所有到期日”。
-
如果没有特殊原因,不要修改 FlashAlpha_Symbol 的默认值( NEM )。
请明确你实际获得的是什么: FlashAlpha 免费版本并不提供真正的 COMEX 黄金期权数据,因此使用 NEM (Newmont,一家黄金矿业股票)作为具有流动性且与黄金相关的代理工具(proxy)。
指标不会直接将代理股票的行权价(strike price)绘制到黄金图表上,而只会使用该代理工具的 net-gamma/GEX 读数。
因此,请注意:Live API 模式下的 Options Confluence 是基于相关工具的情绪/定位代理数据,并不是黄金期权市场实际仓位本身。
免费版本限制:
MaxDailyAPICalls = 5 :每天最多 5 次 API 调用(这是指标自身设置的硬性上限,与 FlashAlpha 自身配额无关)。
RefreshIntervalHours = 4 :两次 API 调用之间最少间隔 4 小时。
方案 B — Barchart.com 月度 CSV(真实黄金期权,手动刷新)
这是实际的 COMEX Gold(GC)期货期权数据,而不是代理数据。
-
前往 Barchart 的 Gold futures options chain( barchart.com/futures/quotes/GC*0/options ),选择你的合约月份并将期权链下载为 CSV。
-
文件每行至少需要 13 个逗号分隔的列,其中:
-
第 1 列 = strike
-
第 9 列 = volume
-
第 10 列 = open interest
-
第 13 列 = option type(必须以 C 或 P 开头;标题行可以存在,程序会自动跳过)
-
-
将文件放入终端自己的数据文件夹:File → Open Data Folder → MQL5 → Files。
-
将 CSV_File_Name 设置为与文件名完全一致(默认: gcv26-options-monthly.csv )。
-
设置 UseLiveAPI = false 。
每周行权价(可选附加功能)
Weekly_Call_Strikes / Weekly_Put_Strikes 的格式:
strike,openInterest,volume;strike,openInterest,volume;...
例如:
4350,251,45;4400,36,12
如果不使用,可保持为空(默认值);系统会安全处理,不会产生错误。
Weekly_Weight (默认值 1.0)用于控制每周 OI 相对于月度 OI 的权重,并影响指标绘制的所有相关水平,包括:
Max Pain、Support、Resistance、BSL、SSL。
期权显示参数调整
| 参数 | 默认值 | 功能 |
|---|---|---|
| Min_OI_Threshold | 100 | 一个行权价要被计入 BSL/SSL 所需的最低未平仓量。 |
| Min_Volume_Threshold | 200 | 基于期权的水平所使用的最低成交量过滤值。 |
| Max_Pain_Buffer | 5 | 围绕计算出的 Max Pain 水平允许的行权价容差范围。 |
| Max_Strikes_Processed | 100 | 限制处理的行权价数量;优先加载距离当前价格最近的行权价。 |
| Max_Battle_Zones_Shown | 5 | 限制图表上最多显示多少个高 OI“Battle Zone”水平。 |
| Refresh_Hotkey | R | 在图表上按该键强制立即刷新期权数据。 |
| Auto_Refresh_Seconds | 60 | 指标多久检查一次是否需要刷新;与 RefreshIntervalHours 不同。 |
| UseOptionsConfluence | true | 期权共振评分奖励的总开关(两种模式均适用)。 |
| OptionsConfluenceATRMult | 0.5 | 与关键期权水平之间允许的接近程度(ATR 的倍数),在此范围内即可获得奖励。 |
| OptionsConfluenceBonus | 1 | 该期权共振奖励的分值。 |
两者都采用 0–100 的评分系统:
-
Fundamental score(基本面评分): 0 = 对黄金看跌,100 = 对黄金看涨。
-
Sentiment score(情绪评分): 0 = 极端恐惧,100 = 极端贪婪。
-
两者默认/中性值均为 50。
这些是混合评分,而不是完全自动化的评分。
即使设置 UseAutoFundamentals = true ,仍有一些组件没有免费的公开数据源,因此必须始终手动输入:
| 手动输入 | 含义 | 数据来源 |
|---|---|---|
| ManualFedStance | 0 = 极度鹰派 … 100 = 极度鸽派 | 你自己的判断——没有可靠的统一数值数据源 |
| ManualCmeCutProb | CME FedWatch 下一次会议降息概率(0–100) | cmegroup.com 的 CME FedWatch Tool |
| ManualNFPActual / ManualNFPExpected | 非农就业数据,实际值与市场共识预期(千人) | 实际值来自 BLS;市场共识并非政府数据 |
| ManualADPActual / ManualADPExpected | ADP 就业数据,实际值与市场共识预期(千人) | 原因与 NFP 相同 |
| ManualGeoScore | 地缘政治紧张程度,0–100 | 你自己的判断 |
| BPR_USBanksLong / BPR_USBanksShort | CFTC Bank Participation Report,COMEX Gold | cftc.gov,每月发布 |
当 UseAutoFundamentals = true 时,以下组件会自动获取:
-
美联储资产负债表(FRED)
-
CPI/PPI/失业率(BLS)
-
你经纪商的原油品种价格
对于情绪数据,当 UseAutoSentiment = true 时,系统会获取:
-
CFTC Commitment of Traders(Disaggregated,Managed Money)
-
JM Bullion Fear & Greed 指标
最简单的设置方式:
将:
UseAutoFundamentals = false UseAutoSentiment = false
然后手动输入:
FundamentalScore SentimentScore
范围均为 0–100,这样可以完全摆脱外部依赖。
获取 FRED API Key
-
在 fred.stlouisfed.org/docs/api/api_key.html 免费注册。
-
将 API Key 粘贴到 FRED_API_Key 。
它仅用于美联储资产负债表组件。
将所需 URL 加入白名单
在 MT5 中:
Tools → Options → Expert Advisors → 勾选 "Allow WebRequest for listed URL:" → 添加你实际使用的域名:
https://publicreporting.cftc.gov https://www.jmbullion.com https://api.stlouisfed.org https://api.bls.gov https://lab.flashalpha.com
如果某个域名被阻止,日志会显示需要添加的确切 URL(错误 4014)。
始终先检查 Experts 日志。
FundamentalsRefreshHours / SentimentRefreshHours (默认均为 24)控制刷新频率。
由于底层数据本身只会每周或每月更新,因此每天刷新一次已经足够。
