Abacuquant Portfolio
- 专家
-
Cristian David Castillo Arrieta
金融与国际商务专业人士,专攻财务管理。MQL5和Python自学开发者,专注于算法交易、多资产组合构建和量化风险管理。
我的工作核心是设计、优化和验证作为协调组合运行的智能交易系统,而非孤立的策略。我运用相关性分析、时间覆盖映射和资产类别多元化来构建不依赖于单一工具或单一方法的交易系统。
目前,我管理着涵盖外汇、指数、贵金属、能源和美国股票的算法投资组合,同时在多个交易时段和时间框架上运行。
我通过技术文章和开源工具在这个社区分享我的经验。我相信,从"构建单个EA"到"工程化投资组合"的转变,是区分散户思维与机构思维的关键,这一理念指导着我在这里发布的所有内容。 - 版本: 1.0
- 激活: 10
AbacuQuant Portfolio:多配置 Expert Advisor
最多 48 个独立交易配置。多个交易品种。一个图表。账户级统一风险控制。
适用于 MetaTrader 5 的多货币 Expert Advisor,可从单个 H1 图表交易 EURUSD、GBPUSD、USDJPY 和 AUDUSD,并提供经过验证的预设配置、完整的手动模式,同时完全不使用马丁格尔或网格策略。
大多数 Expert Advisor 都围绕单一策略、单一参数组合和单一交易品种构建。当市场在一天之中发生变化时,这种单一配置可能只适用于交易时段的一部分,而在其他时间失去适应性。
AbacuQuant Portfolio 可以同时运行多个相互独立的配置,每个配置针对特定的市场条件和交易时间设计。每个配置都有自己的交易时间窗口、策略组合、指标周期以及基于 ATR 的止损和止盈。针对欧洲交易时段设计的配置,可以独立于针对后续交易时段设计的配置运行。
风险并不是孤立管理的。EA 会评估其管理的所有配置和交易品种的整体风险敞口,包括 EA 同时运行在多个图表上的情况。
了解策略的风险收益特征
预设配置采用相对较宽的止损和相对较近的止盈。在经过验证的预设配置中,平均止损约为 5.8 ATR,平均止盈约为 1.1 ATR。
这会形成非常明确的交易分布特征:
- 历史盈利交易比例较高,在验证结果中约为 95%。
- 单笔盈利交易通常相对较小。
- 偶尔出现的单笔亏损可能约为典型盈利交易的 5 倍。
这些亏损是你实际可以看到的。它们是系统设计的一部分,而不是故障,并且已经包含在下面列出的所有历史结果中。
按照这种止损与止盈结构,在不考虑交易成本的情况下,理论盈亏平衡胜率约为 84%。因此,95% 这个数字必须始终与相应的盈亏平衡水平一起评估。真正重要的是超过该水平的幅度,以及这一优势是否能够在样本外测试中保持。
这也是为什么 EA 不通过无限期持有亏损仓位来制造高胜率。亏损会按照预先设定的止损平仓,而不是通过加仓、隐藏亏损或增加仓位来尝试追回损失。
这个 EA 不会做什么
- 无马丁格尔。 不会因为上一笔交易亏损而增加仓位。
- 无网格。 不会在亏损仓位之后继续开仓来试图追回亏损。
- 无向下摊平。 EA 不会对亏损中的仓位追加仓位。
- 无亏损追回逻辑。 不会自动尝试通过下一笔交易追回之前的亏损。
- 每笔交易都有预设止损。 止损和止盈在开仓时随订单一起发送。
- 无重绘。 交易决策只使用已经完成的 K 线,而不会使用当前正在形成的 K 线。
如果你寻找的是一条历史曲线中几乎看不到亏损的系统,那么这不是这种类型的产品。目标不是从历史中消除亏损,而是明确亏损如何发生,以及如何控制账户整体风险敞口。
为什么它是一个投资组合交易引擎
最多 48 个独立配置可以从一个图表运行。
每个配置都可以拥有自己的交易时间、策略组合、指标周期、所需的信号一致数量、交易方向、基于 ATR 的止损和止盈,以及仓位管理设置。
这样,不同配置可以在交易日的不同时段运行,而不是强迫单一策略在不断变化的市场环境中持续交易。配置在策略层面保持相互独立,而风险引擎则从整个账户层面评估风险。
经过验证的预设配置
EA 包含完整、预先配置好的交易组合。使用这些预设配置不需要先进行优化。
- EURUSD — 8 个配置,覆盖欧洲至美国交易时段。
- GBPUSD — 6 个配置,在经过验证的交易品种中具有最广泛的时间覆盖。
- USDJPY — 4 个配置,主要集中在下午和晚间。
- AUDUSD — 5 个配置,覆盖欧洲及后续交易时段。
EURUSD 默认启用,因此将 EA 加载到 H1 图表后即可运行。其他经过验证的交易品种默认保持关闭,你可以根据需要单独启用,也可以将它们组合成一个投资组合。
这些配置由什么组成
每个配置都使用相同的十个策略组件:order-flow imbalance、Fibonacci breaks、candlestick patterns、support and resistance、Bollinger Bands、RSI、moving averages、MACD、ADX 和 Stochastic。决定一个配置的并不是组件列表本身,而是这些组件的组合方式以及所需的信号一致阈值。
这里不存在单独的“RSI 配置”或“趋势配置”。在四个经过验证的预设中,Bollinger Bands 出现在 15 个配置中,Fibonacci 出现在 14 个配置中,ADX 出现在 13 个配置中,MACD 出现在 12 个配置中,support and resistance 出现在 11 个配置中,moving averages 出现在 11 个配置中,Stochastic 出现在 10 个配置中,RSI 出现在 6 个配置中,而 candlestick patterns 出现在 1 个配置中。这些组合通过对历史数据进行系统搜索得到,然后按照下面介绍的验收流程进行筛选。
每个预设的验证结果
以下结果来自 out-of-sample forward 期间,该期间的数据没有用于配置选择。“Margin”表示盈利交易率超过其自身盈亏平衡线的百分点数。“t”表示这一优势相对于标准误差的大小。通常,超过 2 的数值被视为具有统计显著性。
| 预设 | 配置数量 | 超过盈亏平衡 | t | 最大回撤 |
| GBPUSD | 6 | +3.78 | 4.42 | 4.70% |
| AUDUSD | 5 | +8.94 | 4.04 | 7.04% |
| USDJPY | 4 | +7.97 | 3.75 | 9.13% |
| EURUSD | 8 | +4.24 | 3.56 | 8.17% |
四个交易品种都分别通过了相同的验收标准。因此,产品提供的是四个经过验证的交易品种,而不是仅依赖单一交易品种。
同时运行全部配置时会发生什么
当四个预设作为一个组合在同一账户上运行时,综合结果为 t = 7.60,共 1,540 笔交易,其中 158 笔亏损,最大回撤为 10.34%。
综合结果高于任何单独预设,其中单独表现最高的是 GBPUSD,t 为 4.42。四个交易品种并不是简单地把结果相加。它们在不同时间、不同货币上交易,其亏损阶段也并不总是同时发生。
安全余量是观察这一结果的另一种方式。根据 forward 期间的结果,需要大约 19 笔额外亏损交易才能抹去 EURUSD 的结果,GBPUSD 需要 16 笔,而四个交易品种同时运行则需要大约 90 笔。
共享风险引擎也会直接影响组合的交易行为。在投资组合模式下,每个货币对的交易次数都略低于单独运行时——EURUSD 为 492 笔,而单独运行为 521 笔;USDJPY 为 278 笔,而单独运行为 315 笔——因为当另一个交易品种已经使用了可用风险预算时,部分入场会被拒绝。
这些数据是如何测量的
- 经纪商:Darwinex,冬季服务器时间 GMT+2,夏季 GMT+3。
- 期间:2020 年 1 月 1 日至 2026 年 8 月 3 日,分为选择阶段和完全未参与选择的 forward 阶段。
- 建模:"Every tick based on real ticks"。
- 初始资金:100,000,四个预设共享同一个账户。
- 时间设置:经纪商冬季 offset 设置为 2,与该服务器一致。
服务器时间设置非常重要。如果预设运行在错误的交易时间上,那么它就不再是产生上述验证结果的同一个预设。
两个实验性预设,以及为什么它们仍然包含在产品中
XAUUSD 和 GBPJPY 已包含在 EA 中,并标记为实验性配置,同时默认关闭。它们用于研究,而不是作为经过验证的预设进行推广。
Gold:存在结果,但数据不足以作为经过验证的预设。 7 个配置,forward margin 为 +1.08,t = 1.00,回撤 5.63%。t = 1.00 表示该优势仅约为零点以上一个标准误差,这不足以将其视为经过充分测量的独立优势。安全余量也说明了同样的问题:额外 2.5 笔亏损交易就会抹去整个 forward 结果,而 EURUSD 约需要 19 笔。结果并非负数,只是数据不足以支持将其作为经过验证的结果。
GBPJPY:两个阶段的结果不一致。 6 个配置。在选择阶段,margin 为 −0.33,t = −0.43,约包含 37 笔亏损交易。在 forward 阶段,margin 转为 +2.99,t = 3.82,但这一结果只基于约 10 笔亏损交易,低于验证方法要求的最低数量。
两个交易品种都被保留,以便用户无需重新构建配置即可进行研究。它们用于观察,而不是资金配置。 如果未来某个交易品种通过验收流程,它可以通过免费更新成为经过验证的预设。
只要你的订阅保持有效,新的经过验证的交易品种将免费添加。 每个候选交易品种都会经过相同的验收流程后,才会被标记为经过验证。
交易是如何产生的
EA 不是一个黑箱。交易决策过程可以从配置中理解,也可以通过 Experts log 进行观察。
1. 配置必须处于激活状态。
每个配置只在指定的交易时间窗口内运行,其他时间忽略市场。
2. K 线必须已经收盘。
信号基于已经完成的 H1 K 线进行评估。正在形成的 K 线绝不会用于生成入场信号,因此信号逻辑可以在 Strategy Tester 和实际交易中基于已完成 K 线进行复现。
3. 多个信号必须达成一致。
每个配置定义启用哪些组件以及需要多少个信号一致。单一指标不足以触发开仓。
4. 仓位大小根据止损计算。
在基于风险的 sizing 模式下,EA 首先根据当前波动率确定 Stop Loss 距离,而不是使用固定点数,然后计算能够按照你设定的风险比例对应到该距离的仓位。因此,更宽的 Stop Loss 会产生更小的仓位。
5. 检查账户级限制。
在发送订单之前,EA 会评估总开放风险、deposit load 和 equity drawdown。任何一个限制都可以拒绝交易,而拒绝交易被视为正常的系统行为。
6. 保护措施随订单发送。
Stop Loss 和 Take Profit 是开仓指令的一部分,而不是稍后再添加。如果开仓后立即发生连接中断,保护水平已经存在于经纪商服务器上。
7. 亏损后不会启动恢复序列。
EA 不会向亏损仓位追加仓位,不会将 Stop Loss 向更远方向移动,也不会为了追回之前的亏损而重新入场。
手动模式:创建自己的配置
经过验证的预设只是使用该引擎的一种方式。手动模式可以访问相同的底层框架。
你可以定义启用哪些策略、开仓前需要多少策略达成一致、精确到分钟的交易窗口、指标周期、允许的交易方向、每个配置的最大持仓数量,以及基于 ATR 的 Stop Loss 和 Take Profit 距离。
你还可以选择仓位计算方式:
- Risk based — 仓位大小根据 Stop Loss 距离和所选风险比例计算,与预设配置相同。
- Fixed lot — 无论 Stop Loss 距离如何,都使用相同的手数。适合研究,因为可以保持一个变量不变。
- Proportional — 仓位大小随账户余额变化。
经纪商最小交易量、最大交易量、交易量步长以及交易品种的交易量限制都会被遵守。自定义 sizing 方式会改变仓位计算方法,但不会关闭风险保护机制。
自定义优化标准
EA 为 Strategy Tester 提供自定义优化标准。它不会仅按照净利润对配置进行排名,而是评估观察到的盈利比例超过由 Stop Loss 和 Take Profit 距离决定的盈亏平衡水平的程度,并可以直接拒绝亏损交易数量不足的结果。
原因很简单:一个非常宽的 Stop Loss 配合非常近的 Take Profit,可能仅仅因为测试期间 Stop Loss 很少被触发,就产生平滑的资金曲线和较高的 profit factor。如果只按照利润排名,这类配置可能首先被选中。这个标准的目的就是过滤它们。
在 Strategy Tester 中选择 Custom max 即可使用该标准。
风险管理
仓位大小跟随 Stop Loss。 在基于风险的 sizing 模式下,手数根据实际 Stop Loss 距离和经纪商合约规格计算。因此,更宽的 Stop Loss 会产生更小的手数,同时保持相对一致的资金风险。
仓位会随账户自动缩放。 账户余额增加一倍,仓位也会增加一倍;余额减少一半,仓位也会相应减少。无需为了这种缩放手动调整手数。
这不是一个固定的“每多少余额对应多少手”的比例。由于仓位大小取决于每个配置自己的 Stop Loss 距离,因此,在相同的条件下,具有较宽 Stop Loss 的配置会使用更小的仓位,而具有较窄 Stop Loss 的配置会使用更大的仓位,同时目标风险保持一致。在验证期间的所有 EURUSD 入场中,以默认的 0.5% 风险设置计算,配置使用了每 100,000 余额 0.12 至 3.07 手的范围,平均约为 0.90 手。这种变化正是机制正常工作的体现:仓位会根据 Stop Loss 距离调整,从而保持目标资金风险的一致性。
EA 不会忽略经纪商的最小手数。 在小账户以及 Stop Loss 较宽的交易品种上,经纪商允许的最小交易量可能大于你所设定风险比例所要求的交易量。EA 会检测这一情况,并报告相关配置、经纪商强制使用的交易量、该交易量产生的实际风险、你的风险限制,以及该配置为了正确进行 sizing 所需要的账户余额。
如果启用 SkipTradeIfMinLotExceedsRisk,当经纪商最小手数会导致实际风险超过你的限制时,该配置会拒绝交易,而不是超过你的风险上限。对于账户规模不足以支持某个预设的情况,这可能意味着该配置完全不会交易。
三个全局风险上限
- Total open risk — 如果所有当前持仓的 Stop Loss 同时触发,可能产生的潜在亏损。
- Deposit load — 可能被占用的保证金数量。这是抵押品占用,不等同于亏损风险。
- Equity drawdown — 相对于账户 equity 峰值所允许的下降幅度。
三个限制都会针对 EA 管理的所有配置、交易品种和图表进行评估,而不是分别计算。因此,同时运行四个交易品种不会悄悄地将允许的风险敞口扩大四倍。
Configuration guards 还会拒绝以下配置:Stop Loss 过于接近、导致 spread 可能主导结果;或者 Stop Loss 和 Take Profit 距离过近,以至于两者可能同时落在同一根 K 线之内。这两种情况都可能产生难以在真实交易中复现的回测结果。相关阈值可以在输入参数中查看。
可以在小账户上运行吗?
可以,而且这不是简单的声明,而是经过测试的。整个投资组合在相同测试期间运行于一个500 单位账户,所有预设都启用,包括两个实验性配置。EA 在整个测试期间持续产生交易,margin level 从未低于 259%,约 2,300 笔 out-of-sample 交易的最大回撤为余额 10.3% 和 equity 14.4%,其中 91% 的交易最终盈利。随着账户增长,仓位大小从经纪商最小交易量开始自动增加,无需修改手数设置。
但真正重要的是这一点。 当账户低于约 2,500 单位时,由于经纪商最小手数的限制,风险控制无法完全维持你设定的风险比例。在做决定之前,请先理解原因。
每个经纪商都有最小交易量。当你账户的 0.5% 风险小于经纪商最小手数所产生的风险时,实际交易只能使用该最小手数,因此实际风险会高于你的设定。在这次 500 单位的测试中,当余额仍接近初始值时,一笔典型亏损交易约占账户的1.0%,而配置的风险为 0.5%,大约是两倍。这是经纪商交易量限制,而不是 EA 可以消除的问题。AbacuQuant 所做的是测量这一限制,确定每个配置需要的账户余额,并让你自己决定是否在这种条件下交易。
Cent account 替代方案
对于小额资金,有一种实际方式可以绕过最小交易量限制。
许多经纪商提供 cent accounts,账户余额以美分计价,交易手数的规模也可以比标准账户细分得更小。存入 100 美元,账户可能显示为 10,000。资金本身没有改变,变化的是仓位大小的粒度。因此,经纪商最小手数可以对应更小的资金敞口,使 EA 能够更接近你实际选择的风险比例进行仓位计算。
无需修改配置。EA 中的每个手数都是根据经纪商实际合约规格计算,而不是基于固定金额假设,因此 cent account 会根据其实际交易条件进行处理。
Cent account 不会放大收益。 100 美元仍然是 100 美元,百分比结果不会改变。它的优势在于更细的仓位大小粒度。请确认你的经纪商为计划交易的品种提供 cent account,并在入金之前先在模拟账户上验证配置。
小账户上不要做的一件事
不要启用实验性预设。在同一次 500 单位测试中,四个经过验证的预设中最差的单笔交易约占账户 3%。而 Gold 的一笔交易达到9.9%。在小账户上,实验性配置可能将风险集中到你最难承受的位置,因此这是默认关闭它们的另一个原因。EA 出厂时已经将它们关闭。
经纪商服务器时间
交易时段是根据参考服务器时间定义的,因为不同经纪商使用不同的服务器时间偏移。这里列出的每一项验证结果,都依赖于交易时间窗口被正确设置。
EA 默认将 AutoGmtOffset 关闭。默认配置使用冬季 GMT+2作为参考,与验证所使用的服务器一致,并应用相应的季节性调整。你只需要输入winter数值。
如果你的经纪商使用不同的冬季服务器偏移,请在运行经过验证的预设之前,在输入参数中设置对应的偏移。经纪商通常会公布这一信息,你也可以通过比较 Market Watch 时钟与 GMT 时间进行确认。
这个默认设置是有意设计的。默认不启用自动经纪商时间偏移检测,因为服务器时间的读取在 Strategy Tester 中可能表现不同,而错误的结果可能会在 EA 看起来正常工作的情况下悄悄改变所有交易窗口。固定参考偏移更加可预测,也更容易检查。对于能够正确读取时间偏移的经纪商,仍然可以使用自动检测。
EA 启动时会在 Experts log 中打印检测到的偏移、使用的偏移、参考值以及最终调整的分钟数,因此你可以在依赖预设配置之前验证交易时段的转换是否正确。
交易品种兼容性
不同经纪商可能使用不同名称表示相同的交易品种,例如 EURUSD、EURUSD.pro、mEURUSD 以及其他前缀和后缀。EA 会自动解析适合你经纪商的交易品种,并在需要时提供手动映射输入。
Magic numbers 按交易品种生成,因此不同配置之间不会发生冲突。EA 会在启动时进行检查,如果检测到冲突则拒绝交易。
预设配置如何验证
每一个经过验证的预设都通过相同的验收流程。未通过标准的配置不会被纳入。测试使用真实 Tick 历史数据,并包含一个未用于配置选择的 forward 期间。
- 统计验证。 观察到的盈利交易率必须高于由 Stop Loss 和 Take Profit 结构决定的盈亏平衡水平,并且优势幅度必须足够大,使其不太可能仅由随机性解释。该优势通过 out-of-sample 数据上的 t-statistic 进行测量。
- 足够的亏损交易数量。 如果一个结果只建立在少量亏损交易上,就不能认为它已经被充分测量。低于最低数量的结果会被拒绝,无论其表面结果多么优秀。
- Stop Loss 验证。 几乎所有亏损交易都必须真正以 Stop Loss 结束。如果不是,那么 Stop Loss 实际上没有得到充分测试,这样的 backtest 描述的是一种市场状态,而不是可靠的策略表现。
开发过程中研究的两个交易品种未通过这些标准,因此被排除在验证集合之外,而不是仅仅为了让产品看起来拥有更多交易品种而加入。未来新增的每一个交易品种都将遵循相同标准。
设置
- 将 EA 安装到 H1 图表。一个图表可以管理所有启用的交易品种。
- 启用你希望运行的预设或配置。
- 设置风险参数,并在 Experts log 中检查服务器时间信息。
日志会显示活动配置、交易时间、Stop Loss 和 Take Profit 设置、每个配置所需的账户余额、时间调整以及经纪商实际解析出的交易品种。如果出现配置问题,EA 会用明确的文字报告,而不是静默失败。运行过程中,图表上的状态面板会显示实时状态。
购买前先测试
使用 MetaTrader 5 Strategy Tester 中的免费 Demo 进行测试。 对于提供的预设配置,请使用 H1 和 Every tick based on real ticks 来重现验证条件。将初始资金设置为你实际计划投入的金额,包括小额账户。
你可以自行查看交易列表并验证上面描述的所有内容:Stop Loss 和 Take Profit 如何设置,仓位大小如何随着 Stop Loss 距离变化,全局风险控制如何工作,亏损仓位不会被平均加仓,实际盈利与亏损交易的分布,以及各配置处于非交易状态的时间段。
特别关注亏损交易。 历史盈利交易比例很高,但单笔亏损可能明显大于单笔盈利。如果这种交易分布与你愿意承担的风险不匹配,那么这个产品就不适合你的账户。
我更希望你在 Strategy Tester 中免费发现这一点,而不是投入真实资金之后才发现。
开发者支持
订阅包含软件以及开发者的直接支持。
- 英语和西班牙语支持,由开发者直接提供,而不是模板化回复。
- 安装支持 — MetaTrader 5、经纪商配置、交易品种映射以及 VPS 设置。
- Experts log 支持 — 协助理解配置、风险以及经纪商兼容性信息。
- 风险设置指导 — 协助判断配置是否适合你的账户规模。
- 如果配置不适合,会直接告诉你。 如果你的账户或经纪商条件不适合某个预设,目标是明确告诉你,而不是销售一个实际上无法正常工作的解决方案。
更新包含在订阅中。 新交易品种会持续进行研究,通过验收流程的交易品种将在你的订阅保持有效期间免费加入。引擎改进也会通过产品更新提供。
要求
- MetaTrader 5。
- 多配置预设需要 Hedging account。 经过验证的预设可以在同一交易品种上维持相互独立的仓位,每个仓位都有自己的 Stop Loss。Netting account 会按照平台机制合并同一交易品种的仓位,因此配置无法保持独立,预设也不会按照验证时的方式运行。
- H1 图表。 一个图表可以管理所有启用的交易品种。
- 提供所需交易品种并具有适当交易条件的经纪商。建议使用低 spread 账户。
- 建议使用 VPS 进行持续运行,但不是强制要求。
使用 netting account 的用户可以在符合其经纪商和账户条件的情况下,以单一配置运行手动模式。
账户规模
根据验证期间的每个预设测试,正确进行 sizing 大约需要以下账户余额:
USDJPY 约 2,100 | EURUSD 约 2,500 | AUDUSD 约 2,500 | GBPUSD 约 4,200
四个交易品种一起运行,建议的充足余额约为:4,200。低于该水平仍然可以交易,但经纪商最小手数可能使实际风险高于你设定的值,具体原因已在小账户部分解释。在 cent account 中,这些数值对应的是美分,这正是 cent account 的作用所在。
EA 会在启动时显示每个配置所需的准确余额,而 Demo 版本可以让你免费验证。
诚实的限制
- 这不是一种“设置后无需管理”的产品。预设配置基于历史研究,随着市场环境变化可能需要调整。这也是持续更新机制存在的原因。
- 交易并非持续进行。每个配置只在指定交易窗口内运行,因此没有交易的时间段是正常现象,并不代表 EA 出现故障。
- 宽 Stop Loss 配置需要更大的账户才能正确进行 sizing。如果账户低于约 2,500,除非使用 cent account,否则经纪商最小手数可能显著提高单笔实际风险。
- 历史盈利交易比例较高,但单笔亏损可能明显大于单笔盈利。如果一系列亏损会让你关闭 EA,那么这种交易结构并不适合你。
- 本描述中的每一个数字都基于特定历史期间、特定经纪商和特定时间设置进行测量。这些数字描述的是已经发生的结果,而不是未来一定会发生的结果。
- 历史 backtest 和验证结果不能保证未来表现。任何 Expert Advisor 都无法保证盈利,也无法消除资本损失风险。
交易存在资本损失风险。 只使用你能够承受损失的资金,并在你实际计划使用的经纪商、账户规模和交易条件下评估 EA。
AbacuQuant Portfolio 的设计理念是让交易和风险结构透明可见,而不是隐藏它们。Strategy Tester 允许你在投入真实资金之前,检查交易分布、回撤以及每个配置的实际行为。

