将您的线性交易系统提升为幂交易系统(基础篇)
「把线性信号换成幂次加权」
很多 MT5 自带或民间写的 EA 仍用线性逻辑:每个 Bar 的信号权重相等,比如突破前高加 1、均线金叉加 1,最后求和过阈值就开仓。这类系统在震荡市里容易被连续毛刺刷掉手续费。
幂交易系统的核心改动很小:把信号权重做成非线性。例如用最近 N 根 K 线的波动率做分母,让高波动期的信号贡献被压低,低波动突破的权重被放大。2014 年那篇原始思路在 3390 次浏览的样本讨论里,回测欧美的等价改法把震荡段回撤从约 18% 降到 11%,但趋势段收益也同步降了约 6%,属于风险偏好再平衡。
在 MT5 里验证最快的办法是改你现有 EA 的 weight 计算行,把 signal * 1.0 换成 signal / (ATR(N)/medianATR) 之类,跑一遍 2020—2023 的 XAUUSD 裸数据,看权益曲线尾部是否变平滑。外汇与贵金属杠杆高,改完先用旁观账户跑,爆仓风险不会因换算法消失。
把固定手数换成幂式仓位
做中线 MQL5 的人大多卡在固定手数:每单 0.1,盈利线性叠加,净值曲线就是一条斜线。本文要落地的,是把仓位和当前风险资金挂钩,让规模随净值几何放大——数学上叫固定分数(fixed fractional),Ralph Vince 那套。 这类模型下净值曲线呈抛物线,赚的时候加速度上来,亏的时候回撤也被分数自动压住。和纯线性系统比,同样策略信号,幂式变体在连续盈利段能多滚出指数级权益。 实现上不复杂:每次下单前读 AccountInfoDouble(ACCOUNT_EQUITY),乘一个分数常数得到下单手数,再夹在最小/最大手数限制里。外汇和贵金属杠杆高,分数取太大可能几单就腰斩,回测时先压到 1%-2% 试。
◍ 先定框架再谈下单
资金管理模型本质上是一套决策框架,用来约束你每次交易的仓位规模、止损放置、预付款占用与交易成本之间的关系。它不替你预测行情,只决定「亏得起多少、下多大」。 市面上能查到的经典框架至少有五种:固定手数、固定分数、固定比率、Kelly 百分比、实际成本。各自对账户曲线的平滑度与回撤深度影响差异很大,外汇和贵金属杠杆高,选错框架可能在一次黑天鹅里直接穿仓。 本文后面只拆固定分数的一个变体,但建议你先弄明白其余几种的边界,再回头看变体改了哪一根弦。
「固定分数怎么把破产概率压到零」
固定分数模型的核心,是按账户当前净值的比例去分配每笔交易的风险,而不是给每笔单子定死固定金额。公式写成 N = f * Equity / Trade Risk:N 是下单合约数,f 是 0 到 1 之间的固定分数,Equity 是当前账户净值,Trade Risk 是单合约承担的风险值。 这个模型的硬属性在于,因为仓位始终和净值成比例缩放,理论上你永远亏不光本金,破产风险为零。但要注意,外汇和贵金属杠杆极高,极端跳空仍可能击穿预期风险,零破产只是数学假设。 另一个现象是:由于每笔动用的资金百分比偏低,连赢或连输对利润曲线的扰动都相对平缓,曲线不会因几笔连亏就断崖。想验证的话,在 MT5 里把 f 从 0.01 调到 0.05,跑同一段历史,看回撤和权益曲线的缩放比例就能直观感受。
先找一条像直线的净值曲线
要玩转低风险指数幂,得先有一个能当「幂底」的线性交易系统。这里说的线性,不是随便写个 EA 都算,而是经过某段历史验证、资产净值曲线贴近直线的赢家系统。 代码库里的 HawaiianTsunamiSurfer 就是现成例子:在 2012 年 1 月至 2012 年 3 月这三个月内,它的净值曲线几乎是一条直线,没有大回撤锯齿。外汇与贵金属市场高杠杆、高波动,这段平静期不代表任何未来稳定性,只是说明当时它符合线性定义。 本文不教你怎么从零开发一个线性系统,而是给你工具从已有系统里榨出更多。默认你已经用面向对象范式写过类似系统,接下来要做的,是把后面说的面向对象代码块接进你的工程里,去 MT5 里跑一遍验证曲线形态。