SomaOil
- 专家
- 版本: 1.1
- 更新: 18 七月 2026
- 激活: 10
SomaOil 是一款专为 MetaTrader 5 打造的多策略突破型智能交易系统(EA),仅适用于 WTI 原油(XTIUSD)。一张图表、一个 EA,20 套独立策略并行运行,构成单一、分散化的组合。
为在上线时让更多人能够入手,我采用透明的阶梯定价模式:
- 首发价:100 USD(48 小时)
- 自周一起,每售出 10 份拷贝,价格上涨 100 USD
- 价格每天最多上涨一次,即使同一天售出超过 10 份亦然
早期购买者在产品生命周期内锁定最低价格。
理念
与其运行单一、容易过度拟合某一狭窄市况的设置,SomaOil 自带一套精选的 20 套预调策略,全部在同一 WTI 图表上的单个 EA 中并行运行。
每套策略拥有各自的 magic number、注释、时间周期、摆动识别参数、出场规则、新闻距离与手数步长。它们共享同一执行引擎但独立交易,因此您可在多个时间周期与突破宽度上获得真正的分散化,而无需管理大量图表。
组合构建
我在两个互补的样本内区间上进行了优化,每个区间使用相同的参数网格:
- 时间周期分为 5 组:D1、H12、H8、H4、H1
- 突破宽度有三种变体:
- V1 Broad:摆动更宽,信号更少但更强;
- V2 Medium:信号频率均衡;
- V3 Narrow:摆动更紧,信号更频繁。
- 全部按 return / drawdown 优化:
- 先按 Return / Balance DD
- 再按 Return / Equity DD
两个优化区间及其样本外窗口为:
- Res1 — In Sample: 2018.10.10–2024.10.10 | OOS: 2024.10.10–2026.06.26
- Res2 — In Sample: 2020.06.26–2026.06.26 | OOS: 2018.10.10–2020.06.26
Res1 与 Res2 是同一历史的互补两半,因此每个区间在样本外验证另一个。W2 OOS(2018–2020)位于 W1 IS 之内,W1 OOS(2024–2026)位于 W2 IS 之内——与 SomaBTC 相同的 Res1/Res2 交叉验证模式,锚定于 2018.10.10 起可用的 XTIUSD 历史。
时间周期 × 宽度 × 优化区间的这一组合正是分散化的来源。不同策略在不同波动环境下触发,因此权益曲线不会依赖单一市场行为。
随后对每套候选策略进行筛选:
- 若策略与另一保留策略相关性过强,则剔除。
- 若策略与 real ticks 不符或未通过其样本外窗口,则剔除。
- 所有优化均在启用周五收盘的前提下进行,从而避免基于风险周末缺口的过度优化。
经过上述筛选,最终仅保留 20 套策略 — Res1 中 7 套、Res2 中 13 套。
按优化区间与摆动时间周期的最终组合:
- Res1(7):1 D1、1 H12、2 H4、3 H1
- Res2(13):2 D1、4 H12、2 H8、4 H4、1 H1
- 合计(20):3 D1、5 H12、2 H8、6 H4、4 H1
最后一步:每套策略的手数由专用 Python 脚本设定,寻找 return / balance DD 的最佳组合。在 DD 上相关性更高的策略获得较小分配,贡献更多价值的策略获得较大手数分配。
Magic numbers
每套策略使用唯一的 8 位 magic number,以便 MetaTrader 将其交易与其他 EA 或手动订单区分。您可在每笔订单与持仓以及策略注释中看到 magic(例如 SomaOil #1 81241201)。
数字并非随机——它们编码了策略属性:
- 第 1 位 — EA 系列(8 = SomaOil)
- 第 2 位 — 优化区间(1 = Res1,2 = Res2)
- 第 3–4 位 — 摆动时间周期(小时)(01 H1、04 H4、08 H8、12 H12、24 D1)
- 第 5 位 — 突破宽度(1 Broad、2 Medium、3 Narrow)
- 第 6 位 — 优化目标(1 Balance DD、2 Equity DD)
- 第 7–8 位 — 研究批次中的原始 set 文件 ID
示例:magic 81241201 解读为 SomaOil · Res1 · D1 · Broad · Equity DD · set #01。
这样可在终端或账户历史中轻松识别是哪套策略开仓,无需打开 EA 设置。
风险与手数
提供两种手数模式:
- 手动手数——每笔固定手数
- Lot per balance step——按账户资金自动缩放,并按策略分别缩放
额外控制项用于精细调节风险特征:
- 在计算手数之上的全局风险乘数
- 通过 MaxLots 设置可选 EA 手数上限(默认 0 = EA 不限制,仅受经纪商规格约束);> 0 为硬性上限
- 选择以余额或净值为手数计算基准
- OnlyUp 模式——手数随峰值资金上调但在交易回撤期间永不下调;提款降低用于定型的峰值,入金提高峰值(两者均立即同步峰值并重新平衡待定手数)。启动时 EA 会从近期已平仓历史中初始化历史峰值(可配置回溯长度),使 OnlyUp 基准从第一笔报价起即有意义的参考,而非每次重启都重置
- 基础货币选择器(USD、EUR、GBP、HKD、SGD 或自定义品种),以便在非美元账户上正确计算手数
- 爆仓保护(默认开启)——下单前 EA 将现有同向挂单(止损/限价)视为已需要市价单的保证金,从而在经纪商对挂单预留保证金较少时避免可用保证金被过度占用;也可下调计算手数,使最坏情况下同向并发订单仍落在与您的手数基准相关的保证金预算内。仅在您完全掌握杠杆与保证金余量时关闭。
新闻过滤
SomaOil 内置美国新闻日历,覆盖三类高影响事件:
- NFP — Non-Farm Payrolls
- CPI — Consumer Price Index
- IR / FOMC — 央行利率决议
围绕每次事件,EA 可独立阻止新开仓、撤销现有挂单并平仓。每套策略拥有各自的事件前、事件后分钟窗口,因此新闻防护按策略分别调校,而非一刀切。
经纪商 GMT 可手动设置或自动检测,使新闻窗口始终与经纪商时间对齐,包括夏令时切换。分类器已收紧,以排除常见误报,例如 ADP Nonfarm Employment 与 FOMC 讲话/会议纪要。
交易时段
可选的周一开盘 / 周五收盘窗口可帮助您避开周末缺口。您可选择是否在交易窗口外同时撤销挂单或平仓。
若干策略还使用内置的每日会话窗口(每套策略的起止小时)以避开低流动性时段。这些属于组合预设的一部分,并非独立的用户输入。
优化在启用周五收盘的条件下进行,此为默认设置,因此不会对风险周末缺口条件过度优化。
点差过滤器
当经纪商点差过宽时,SomaOil 可暂停放置突破挂单——对原油在换月、新闻和低流动性时点差扩大的情况尤为重要。
过滤器仅作用于挂单。已开仓位的 SL、TP、移动止损、保本等出场逻辑不受影响。
- MaxSpreadPips(默认 80)——3 位 WTI 报价下的MT5 点数上限(如 Market Watch 显示 50 ≈ 0.050 价格)。0 = 关闭。
- RemovePendingSpreadSeconds(默认 60)——点差持续高于上限达此秒数后,取消该策略挂单。0 = 仅阻止新挂单,不自动删除。
短暂点差扩大不会删除已有挂单;持续过高则删除,并在点差恢复后的下一入场 K 线重新放置。2 位与 3 位原油报价均自动归一化;有效上限按各策略内置 DefaultValue 与当前油价参考值缩放。
自营公司合规
可通过 MaxRandomizationPips 为每笔交易的进出场施加可选随机点差偏移,使您的价位与其他运行同一 EA 的交易者略有不同——适用于自营/ funded 账户,避免完全相同的跟单模式被标记。设为 0 可关闭。
SomaOil 还包含可选合规层(默认关闭):最大日回撤锁定、禁止对冲规则与挂单上限。参见下方 EnablePropFirmCompliance 及相关输入。
图表仪表盘
SomaOil 在图表上渲染实时仪表盘,显示:
- 许可证状态与活跃组合
- 手数计算基准与有效资金
- 按买/卖拆分的挂单与持仓
- 浮动盈亏与当日已平仓盈亏
- 余额与净值的回撤,绝对值与百分比
- 滑点统计:全时段、7 天、24 小时
- 当前点差与活跃策略数量
- 下一次与上一次 NFP、CPI、IR/FOMC 事件
可在策略测试器中关闭仪表盘以加快回测。
参数
覆盖
- EnableMagicOverride -> 开启时,交易 ID 分配为 OverrideMagicBase + 策略索引;关闭时(默认)每套策略使用内置 ID
- OverrideMagicBase -> 启用 magic 覆盖时的起始交易 ID
- EnableCommentOverride -> 开启时所有交易共用同一注释;关闭时(默认)每套策略保留各自注释
- OverrideComment -> 启用注释覆盖时使用的注释文本
交易方向
- AllowBuyTrades -> 允许做多及买单挂单
- AllowSellTrades -> 允许做空及卖单挂单
手数
- LotsAdjustMinChangePercent -> 更新活跃手数前的最小 % 变化
- Risk -> ManualLotSize(固定 StartLots)或 LotSizeStep(按资金自动)
- AdjustLotsizeToVariableValues -> 随余额或净值变化重新计算手数
- StartLots -> 手动模式固定手数,或 step 模式参考下限
- MaxLots -> 可选 EA 上限; 0 = 仅经纪商规格
- UseEquity -> 按净值而非余额计算
- OnlyUp -> 手数随峰值资金只升不降;交易回撤期间不下调;提款降低峰值,入金提高峰值
- RestorePeakFromHistory -> 启动时从近期平仓历史初始化 OnlyUp 峰值
- RestorePeakLookbackDays -> 峰值回溯天数(0 = 全部历史)
- ManualBalanceForLotSizing -> > 0 时用固定资金计算手数
- RiskMultiplier -> 计算手数的全局乘数
- MarginCallProtection -> 为同向挂单预留保证金并限制手数预算
- BaseCurrency -> USD、EUR、GBP、HKD、SGD 或 custom(非美元账户)
- CustomBaseCurrencyPair -> BaseCurrency 为 custom 时的经纪商品种
GMT
- Broker_GMT_OFFSET_Summer -> 夏季手动经纪商 GMT 偏移(小时)
- Broker_GMT_OFFSET_Winter -> 冬季手动经纪商 GMT 偏移(小时)
- AutoGMT -> 自动检测经纪商 GMT(忽略手动偏移)
新闻过滤
- EnableNFP_Filter -> 启用 NFP 保护窗口
- NFP_CloseOpenTrades -> NFP 前平仓
- NFP_ClosePendingOrders -> NFP 前撤销挂单
- EnableIR_Filter -> 启用 IR / FOMC 保护窗口
- IR_CloseOpenTrades -> IR 前平仓
- IR_ClosePendingOrders -> IR 前撤销挂单
- EnableCPI_Filter -> 启用 CPI 保护窗口
- CPI_CloseOpenTrades -> CPI 前平仓
- CPI_ClosePendingOrders -> CPI 前撤销挂单
各策略的事件前/后分钟数内置于组合,非独立参数。
交易时段
- UseTradingTimeZones -> 启用周一至周五每周窗口
- KillPending -> 窗口外撤销挂单
- KillOpen -> 窗口外平仓
- MondayOpenHour / MondayOpenMinute -> 窗口在周一于此经纪商时间开启
- FridayCloseHour / FridayCloseMinute -> 窗口在周五于此经纪商时间关闭
若干策略还使用内置的每日会话窗口(每套策略的起止小时)作为组合预设的一部分。这些并非独立的用户输入。
仪表盘
- DisableDashboardInTesting -> 在策略测试器中隐藏图表仪表盘
- DashboardUpdateSeconds -> 仪表盘刷新间隔(秒)
Spread Filter
- MaxSpreadPips -> MT5 点数上限(3 位约定);按 DefaultValue 缩放;0 = 关
- RemovePendingSpreadSeconds -> 持续高点差后删除挂单(秒);0 = 不删除
自营公司合规
所有输入默认为关闭/零 — 禁用时对性能零影响。
- MaxRandomizationPips -> 自营进出场偏移;与其他 EA 用户区分(0 = 关闭)
- EnablePropFirmCompliance -> 总开关;以下规则生效须为 true
- PF_MaxDailyDrawdownPercent -> 相对日基准的最大日 equity 亏损百分比(0 = 关闭)
- PF_MaxDailyDrawdownMoney -> 账户货币计的最大日 equity 亏损(0 = 关闭)
- PF_DailyResetHour -> 日窗口重置的经纪商/服务器小时(0–23)
- PF_DailyLossBufferPercent -> 硬限制前的安全缓冲(默认 10%)
- PF_DisallowHedging -> 阻止反向入场;清除反向挂单
- PF_MaxTotalPendingOrders -> EA 挂单总数上限(0 = 关闭)
推荐设置
- 品种:WTI 原油——将 EA 附加到您经纪商的 US crude / WTI 图表。同一工具常以不同代码挂牌;在我们测试的终端上见过:XTIUSD、USOUSD、USOUSD.s、WTI、SpotCrude。SomaOil 面向以 XTIUSD 开头的品种设计;若经纪商使用其他名称,请打开市场报价并搜索 WTI、crude、oil 或 USO 以找到对应图表。
- 时间周期:任意(EA 在内部读取自身所需周期)
- 账户类型:建议使用 ECN / RAW-spread 以获得低点差
- 最低建议余额:默认风险下 2000 USD。计算手数每笔不得低于 0.01,因此低于该水平的账户无法进一步降低风险。
- VPS:建议用于稳定的 24/5 执行环境
- 在 MT5(工具 → 选项 → 智能交易系统)的“允许的 URL”中添加 "https : // ea-license-server . somatrade . org" 和 "https : // www . worldtimeserver . com/"
摘要
- 单张 WTI(XTIUSD)图表上的 20 套预调突破策略
- 两个优化区间与交叉验证 OOS,覆盖 2018–2026
- 时间周期:D1、H12、H8、H4 与 H1
- 分层出场,含 break-even 与 trailing stops
- 集成美国新闻防护与误报过滤
- 可选挂单点差过滤器(MaxSpreadPips + 持续高点差删除)
- 可选进出场随机化以实现自营账户独特性(MaxRandomizationPips)
- 可选自营合规模式(最大日 DD、禁止对冲、挂单上限)——默认关闭
- 完整实时图表仪表盘
- 透明阶梯定价上线:100 USD 起,每 10 份 +100 USD,每天最多一次


Very strong product as always :D . I’ve followed Andrew for some time, and he’s remarkably transparent about his methodology for developing this EA - you can clearly see it right from the description. He tests across multiple brokers, which makes it much easier to decide where to run it. Having 20 breakout strategies (mostly on higher timeframes) in a single EA provides solid diversification and stability. Of course, past results don't guarantee future performance, and there might be a month here or there without positive gains. But given the ongoing market demand driving oil prices, the EA is well-positioned to capture those opportunities. I highly recommend Somaoil!