版本:11.2 作者:Giles 平台:MetaTrader 5 (MQL5) 类型:基于 Good Cash Ideas (SMC) / ICT 理论的自动化交易 EA
第一章 产品概述与架构
1.1 产品简介
GilesExpertSMC 是一款功能极其丰富的 MetaTrader 5 自动化交易 EA(Knowledgeable Advisor),它将 Good Cash Ideas (SMC)、ICT(Internal Circle Dealer)理论与经典技术分析指标深度融合,为交易者提供了一个高度可配置的自动交易框架。
EA 内置 20 种入场信号、9 种跟踪止损方法、6 种资金管理方式,并支持多时间框架过滤、新闻过滤、马丁格尔策略、分批止盈/止损等高级功能。通过灵活组合这些模块,用户可以构建从简单到复杂的各类交易策略,无需编写任何代码。
1.2 核心设计理念
GilesExpertSMC 的核心逻辑可用一句话概括:
选择 1 个入场信号 + 开启 0~N 个过滤信号。只有入场信号和所有已启用的过滤信号同时确认同一方向时,EA 才会下单。
具体来说:
入场信号:只能选择一个作为主要的开仓触发条件。当入场信号产生多头(买入)或空头(卖出)方向时,如果没有添加任何过滤信号,EA 会立即下单。
过滤信号:可以在多个时间框架上启用任意数量的过滤信号。当添加了多个过滤信号后,所有过滤信号必须同时产生与入场信号相同方向的信号,EA 才会执行交易。只要有一个过滤信号不满足条件,就不会下单。
信号有效期:特别注意每个过滤信号的 Final Sign Expiration (信号有效期)设置。许多信号只在特定 Ok 线上产生,通过设置有效期可以延长信号的持续时间。
1.3 整体架构
EA 的执行流程如下:
┌─────────────────────────────────────────────────────────────┐ │ OnTick() 触发 │ ├─────────────────────────────────────────────────────────────┤ │ ① 盈利全平(CAP)检查 → ② 刷新市场数据 → ③ Processing() │ ├─────────────────────────────────────────────────────────────┤ │ Processing() 主循环 │ │ │ │ ┌─ 遍历已有持仓 ──────────────────────────────────────┐ │ │ │ • CheckClose() 检查平仓条件 │ │ │ │ • CheckTrailingStop() 主跟踪止损检查 │ │ │ │ • CheckTrailingStopForAddPos() 加仓跟踪止损检查 │ │ │ └──────────────────────────────────────────────────────┘ │ │ │ │ ┌─ 遍历挂单 ──────────────────────────────────────────┐ │ │ │ • 检查挂单删除/过期条件 │ │ │ └──────────────────────────────────────────────────────┘ │ │ │ │ ┌─ 开仓逻辑 ──────────────────────────────────────────┐ │ │ │ 每日盈亏限制 → 新闻过滤 → 小时/日/月过滤 │ │ │ │ → 点差检查 → 最大订单数 → 方向允许 │ │ │ │ → 最小持仓距离 → Martin条件 │ │ │ │ → 入场信号方向判定 + 所有过滤信号确认 │ │ │ │ → 资金管理计算手数 → 执行开仓 │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘
1.4 模块组成一览
| 模块类别 | 数量 | 说明 |
|---|---|---|
| 入场信号 | 20 种 | SMC/ICT/经典技术指标,选其一 |
| 过滤信号 | 5 组 × 20 种 | 当前周期 + TF1 + TF2 + SL过滤 + TP过滤 + 加仓过滤 |
| 跟踪止损 | 3 套 × 9 种 | 主跟踪 + 加仓跟踪 + 部分止损跟踪 |
| 资金管理 | 6 种 | None / FixedLot / FixedMargin / FixedRisk / SizeOptimized / SmartRecovery |
| 风控功能 | 多项 | 每日盈亏限制、浮亏限制、点差限制、新闻过滤、时间过滤 |
| 高级策略 | 多项 | 马丁格尔、盈利全平(CAP)、亏损保本、分批止盈/止损、趋势偏向过滤 |
1.5 嵌入式自定义指标
EA 通过 #useful resource 将以下 16 个自定义指标编译嵌入,无需单独安装:
| 指标名称 | 功能说明 |
|---|---|
| SMC_MarketStructure | 市场结构分析(BOS / CHOCH / Swing Excessive/Low) |
| SMC_OrderBlock | 订单块(Order Block)识别 |
| SMC_FVG | 公允价值缺口(Honest Worth Hole)检测 |
| SMC_BreakerBlock | 突破块(Breaker Block)识别 |
| SMC_BSL_SSL | 买卖侧流动性(Purchase/Promote Aspect Liquidity)扫荡检测 |
| SMC_SwingHL | 摆动高低点(Swing Excessive/Low)识别 |
| SMC_FiboRe | 斐波那契回撤(Fibonacci Retracement)计算 |
| SMC_Killzone | 杀戮区间(Killzone / Buying and selling Session)识别 |
| SMC_NWOG_NDOG | 纽约收盘/开盘缺口(NWOG / NDOG)检测 |
| SMC_SD_OB | 供需区域 + 订单块组合 |
| SMC_StrongImbalance | 强不平衡(Robust Imbalance)检测 |
| SMC_CandlesPatterns | Ok 线形态识别(内包线、吞没、双顶底等) |
| SMC_RangeDetector | 盘整区间检测 |
| ICT_Bias | ICT 偏向指标 |
| ICT_ATR | ICT 日均波幅 |
| Price_Channel | 价格通道指标 |
第二章 EA 基础设置
参数组: ===========INPUTS FOR EXPERT===========
| 参数名 | 默认值 | 说明 |
|---|---|---|
| Expert_Title | “Giles_Expert_SMC” | EA 名称。显示在图表上的标题,也用于持久化数据文件的命名。 |
| Expert_MagicNumber | 123456 | EA 魔术号。用于区分不同 EA 实例的唯一标识符。每个 EA 实例必须使用不同的 Magic Quantity,否则会导致订单管理混乱。 |
| Expert_EveryTick | false | 逐 Tick 运行模式。 false = 每分钟 Ok 线形成时检查一次; true = 每个价格变动都检查。大多数信号不需要 Tick 级别,保持 false 即可。如果使用标注了 (Tick Stage) 的信号模式,需设为 true 。 |
| Expert_slippage | 3 | 滑点容差(调整后的点数)。下单时允许的最大价格偏差,默认 3 点。 |
| Expert_spread_allowed | 0.0 | 最大允许点差(以点为单位)。每次开仓前检测点差,超过此值则不下单。 0 表示不限制。 |
| Expert_account_time_offset | 3.0 | GMT 时间偏移。经纪商服务器时间与 GMT 时间之间的小时差。用于新闻过滤和时间相关计算,请根据您的经纪商设置正确的值。 |
| Expert_indicator_refresh_frequency | PERIOD_M1 | 指标刷新频率。控制 EA 内置指标的更新频率。默认每分钟更新一次。 |
第三章 资金管理
参数组: ===========INPUTS FOR MONEY===========
通用参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
| MoneySelect | Money_FixedRisk | 资金管理方式选择。见下方详细说明。 |
| money_margin_balance_percent | 100.0 | 账户余额/保证金使用比例(%)。EA 可使用的账户资金比例上限。例如设为 50,则 EA 只使用账户 50% 的资金进行计算。 |
资金管理方式
| 选项值 | 名称 | 说明 |
|---|---|---|
| 0 | Money_None | 不使用资金管理策略,默认使用最小手数交易。 |
| 1 | Money_FixedLot | 每笔订单使用固定手数。 |
| 2 | Money_FixedMargin | 每笔订单使用固定比例的保证金。 |
| 3 | Money_FixedRisk | 每笔订单的止损金额为账户资金的固定比例(推荐)。 |
| 4 | Money_SizeOptimized | 基于 FixedMargin 并结合递减因子优化仓位。 |
| 5 | Money_SmartRecovery | 基于 FixedRisk,亏损后自动增加手数以加快恢复。 |
各方式专属参数
FixedLot 参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
| money_fixedLot_lot | 0.01 | 固定手数。每笔订单的固定交易量。 |
FixedMargin 参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
| money_fixedMargin_percent | 1.0 | 保证金比例(%)。每笔订单占用的保证金百分比。 |
FixedRisk 参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
| money_fixedRisk_percent | 1.0 | 风险比例(%)。每笔订单的止损金额占账户资金的百分比。例如:账户 $10,000,风险比例 1%,则每笔订单的最大亏损为 $100。EA 将根据止损距离自动计算对应的手数。 |
SizeOptimized 参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
| money_SizeOptimized_decrease_factor | 3.0 | 递减因子。连续亏损后的仓位缩减系数。 |
| money_SizeOptimized_percent | 0.2 | 基础百分比。初始仓位计算的保证金百分比。 |
SmartRecovery 参数
| 参数名 | 默认值 | 说明 |
|---|---|---|
| money_smart_recovery_condition | 0 | 智能恢复启动条件。控制何时启动智能恢复模式。 |
| money_Martin_increase_factor | 2.0 | 手数增加因子。亏损后下一笔订单的手数倍增系数。 |
| money_smart_recovery_loss_threshold | 2.0 | 亏损阈值(Pips)。触发智能恢复的亏损点数阈值。 |