MultiStrat Engine EA
- 专家
- 版本: 1.0
- 激活: 5
MultiStrat Engine EA 基于一条基本的黄金法则:每一笔开仓交易都是完全假设的交易。 如果没有止损,就不会有损失真正发生——仓位会一直持有到回到平衡点(零点) 。
一款旨在全面自动化管理各类金融工具(外汇、股票、指数、商品)仓位的智能交易系统(EA) 。它采用极其丰富的模块化架构,融合了超过28种不同的交易模式、动态风险管理、经纪商费用补偿系统以及用于对比回测分析的交互式HTML仪表盘。
总体架构
智能交易系统(EA)基于买卖双方的清晰分离,各自拥有独立的参数:追踪止盈、时间周期、手数、止盈、止损、订单间距和动态行为。这种二元性允许交易者根据自身需求组合非对称或完全对称的策略。
28 种以上的交易方法
买方:
- BUY_MODE_NONE —下达简单的追踪止损买单,每个仓位设置固定止盈。
- BUY_MODE_NONE_CANDLE —相同,但如果整体净利润为正,则由蜡烛图触发全局平仓。
- BUY_CLOSE_CANDLE —如果总利润为正,则在每个新蜡烛图上平掉所有买入头寸。
- BUY_CUMUL_SINGLE —虚拟累计止盈:所有买入仓位的加权点数总和(扣除手续费后)必须在全局平仓前达到配置的止盈点。
- BUY_CUMUL_MULTI — CUMUL 变体:目标 TP 乘以总成交量/基础成交量比率,以补偿手数的累积。
- BUY_CUMUL_POS —按职位数量递增的 TP:每增加一个职位,单位TP就会根据可配置的系数减少,但有最低限度。
- BUY_HEDGE_CANDLE —每个BUY条目都会自动生成一个按比例大小的 SELL 对冲头寸;如果总利润为正,则在蜡烛图上平仓。
- BUY_HEDGE_SINGLE —自动对冲 + 单个累积目标价位。
- BUY_HEDGE_MULTI —自动对冲 + 累计 TP MULTI。
- BUY_HEDGE_SINGLE_ADD_SELL_TP —单一对冲,在计算 BUY TP 时,将 SELL 对冲的浮动损失进行综合补偿。
- BUY_HEDGE_MULTI_ADD_SELL_TP —以相同的补偿对冲 MULTI。
- 买入直接对冲——永久直接对冲:每次执行新的买入操作时,原有的卖出对冲将被新的对冲所取代。卖出对冲会在买入操作成功平仓后自动关闭。
- BUY_DIRECT_HEDGE_ADD_SELL_TP —将卖出损失计入 BUY TP 的 DIRECT_HEDGE。
- BUY_DIRECT_HEDGE_ADD_SELL_TP_AUTO_MAX —与通过移动平均线自动计算最大购买价格相同。
- BUY_PARTIAL_CLOSURE —复杂的局部平仓系统:主手被分割成若干单元,辅助手根据达到的网格级别逐步放置,辅助手+主手单元的利润总和会触发对主手交易的逐步蚕食。
- BUY_LADDER_PROFIT —当每个仓位的净点数达到设定的止盈点( TP )时,立即单独平仓。
- BUY_WAVE_RIDING —一旦达到目标价位的 30%,就迅速关闭,然后立即重新开放以“冲浪”下一波浪潮。
- BUY_VIX_REVERSION — VIX 专业化:如果VIX超过回归均值的阈值,则平仓。
- BUY_MOMENTUM_BURST —在目标价的 20%处快速平仓,然后以较低的成交量多次入场,以利用动能冲击。
- BUY_SCALP_ACCUMULATOR —以每仓目标价的15%进行短线交易,然后立即重新开仓以累积微小的收益。
- BUY_VIX_OSCILLATION_MASTER —高级多区域 VIX管理,收盘规则取决于入场价格和当前 VIX 水平。
- BUY_PROFIT_COMPOUNDING —放大再投资:根据获得的利润,再入场手数将成倍增加(最高可达x2 ) 。
- BUY_BREAKOUT_SURFER — M1动量检测:在目标价的 70%处收盘,如果检测到突破,则有条件重新入场。
- BUY_ADAPTIVE_PYRAMID —根据波动率(开盘价的标准差)和未平仓头寸数量计算的自适应止盈。
- BUY_GRID_RECOVERY_SMART —智能电网恢复检测:如果利润为正且价格高于电网中位数则平仓,然后以减少的交易量重新入场。
- BUY_PATIENCE_ACCUMULATOR — TP随时间推移而减少(每小时-1 %),以鼓励耐心并补偿长时间持有的交易。
- BUY_FIBONACCI_ZONES —在斐波那契水平 50%、61.8% 或 78.6% 处收盘,该水平根据活跃仓位的开盘价计算得出。
- BUY_VOLATILITY_RIDER —基于ATR M1 的自适应止盈:波动性越高,止盈越低,以快速锁定收益。
- BUY_PROFIT_PYRAMID —单个金字塔在达到目标价位的 60%时关闭,如果仍有 2 个以上的仓位处于活跃状态,则重新开放新层。
卖出模式完全对称,并有其自身的变体,例如 SINGLE、MULTI、CANDLE、DIRECT_HEDGE、ADD_BUY_TP 等。
动态网格系统
EA支持双方各采用两种批次处理方式:
- 固定模式:固定手数,可通过参数LotSizeBuy / LotSizeSell 配置。
- 网格模式:地块数量按基数 × 网格乘数^N 的几何级数递增,上限为最大基数。乘数可以是1.0 (线性网格)或更高(鞅网格)。
订单之间的距离(DistanceOrderBuy/Sell)和调整阈值( TrailingDistanceOrderBuy /Sell)精确控制着每个价格变动或K线时挂单的重新定位。
订单管理
“管理挂单”功能会自动调整买入止损单、买入限价单、卖出止损单和卖出限价单的位置,使其与当前价格保持适当的距离。它采用了“新订单价格更高”(动态)逻辑:在“仅保留低价”模式下,买入订单仅保留低于当前最低价的订单;过于接近的重复订单将被删除。此外,还有保护机制防止删除最后一个剩余的订单/仓位。
自动补偿经纪费用
根据交易历史记录计算每笔仓位实际支付的佣金、累计隔夜利息,并估算未来的平仓佣金。这些费用会通过 MoneyToPoints 转换为点数,并自动添加到每笔仓位的止盈 (TP) 中(AdjustTPWithRealFees),从而确保每次平仓都能真正实现扣除费用后的盈利。可配置的缓存系统(CommissionCacheSeconds)可以防止过于频繁的重新计算。
自动对冲和腿部管理
对冲模式会在每次新入场时自动生成一个反向仓位。在直接对冲模式下,仅维持一个卖出仓位与活跃的买入仓位同时存在,并且每次新买入都会替换该卖出仓位。盈利的买入仓位平仓(通过OnTradeTransaction和ProcessDealTicket 检测)会自动触发相关卖出仓位的平仓。对冲手数比例可通过预设值(1:1、1:2、1:3、1:4、2:1、3:1)或自定义值进行配置。
EDGE虚拟信号
对冲交易模式采用虚拟信号:智能交易系统 (EA) 不下达传统的挂单,而是维护一个带有动态追踪的内部信号 (g_buyEdgeVirtualSignalActive)。只有当价格突破该信号时,才会将其转化为实际交易,从而最大限度地减少误触发,并在距离约束发生变化时实现自动重新校准。
最高动态购买价格(MA)
MaximumPurchasePriceSource 参数会根据两条可配置的移动平均线(周期、 EMA /SMA/SMMA/LWMA 方法、时间范围)自动计算最大购买价格。这两条移动平均线的平均值会根据一个可配置的百分比( MaximumPurchasePriceAutoOffsetPct)进行偏移,从而创建一个动态安全区。图表上的橙色线表示当前水平。
高级部分闭包系统( PARTIAL_CLOSURE )
这种独特的模式会自动将每个主手交易量分割成最优单位(根据SYMBOL_VOLUME_STEP进行调整)。辅助交易会根据达到的网格级别在市场上进行。当辅助交易和主手交易的盈利之和达到目标止盈时,辅助交易将被平仓,主手交易的单位数将减少一个单位( PositionClosePartial ) 。该循环会重复进行,直到主手交易的单位数完全耗尽。
高级时间管理
买入/卖出均有独立的交易周期,起始小时和分钟均可配置。有效性计算(IsValidTradingTime)将触发信号与起始时间精确对齐,防止K线内重复交易。收盘后, “快速重启”逻辑允许在下一个周期的前半段立即进入交易,无需等待下一次完全对齐。可选参数BlockTradingAroundSessionEdges会阻止交易时段开盘或收盘前后5分钟内的所有交易。
预算控制和资本保护
CanAffordNextTrade 函数模拟价格回落至零时的总成本(现有持仓 + 新交易) ,如果该成本超过分配的资金(回测中为 MaxAccountBalance,实盘交易中为 BackTestStopThreshold) ,则会阻止任何新的入场操作。无论网格配置如何,此保护机制都能防止意外的追加保证金通知。
排除时期(幽灵时期)
最多可排除两个日历周期。智能交易系统 (EA) 会等待所有未平仓交易自然平仓后,才会暂停在虚拟周期内的任何新交易活动。排除的天数会自动从无盈利周期的计算中扣除,以避免对业绩统计数据产生负面影响。
报告系统和HTML仪表板
后,智能交易系统 (EA)会生成一个累积的CSV 文件 (backtest_monthly_totals.csv),记录所有运行结果,包括:OnTester 评分、月度总计、最大回撤、最长无盈利天数以及识别参数。每次运行都会重新生成一个交互式HTML控制面板( backtest_monthly_totals.html ) ,用户可以通过月度饼图、排名表以及两个评分(纯收益评分( OnTester) 和平衡评分(通过归一化标准差惩罚月度波动))直观地比较所有回测结果。用户无需重新加载页面即可在浏览器中直接访问动态筛选器(显示数字、波动权重、排除负值月份) 。
自动回测终止标准
多种提前终止机制可保护优化过程:
- 回撤背景:如果余额-权益≥ BackTestStopThreshold 则停止。
- 非正数日历月:StopIfNonPositiveClosedMonth 选项用于在一个月结束时≤ € 0时立即停止。
- 月度滑动窗口过滤器:如果过去 N 个已关闭月份的利润小于MonthlyMinProfitThreshold 阈值,则停止。
- 无盈利日:如果连续 X 个日历日(不包括虚拟时期)没有盈利交易,则停止交易。
实时图形显示
受监控资产/魔数都实时显示一个可配置面板(颜色、大小、位置) :未平仓的买入/卖出仓位数量、经纪商交易时间、当前点差、下次下单时间、零余额水平(多空盈亏平衡点),并以水平线显示在图表上;此外,还动态地以绿/红颜色显示7个周期(浮动周期、当日、昨日、7天、14天、当月、上月)的盈亏情况。对于累计模式,虚拟止盈点以线条形式显示在图表上。
追踪止损
边均提供标准追踪止损,可通过`TrailingStartBuy /Sell`(以点数为单位的激活阈值)和 `TrailingStopLossBuy/Sell`(止损距离)进行设置。在累积 (CUMUL) 和对冲 (HEDGE) 模式下,追踪止损是根据所有活跃仓位的加权点数总和计算的,而非逐个仓位计算。
兼容性和配置
- 兼容所有 MT5 交易品种(外汇、差价合约股票、指数、商品、 VIX )。
- 账户上共存。
- 在回测中使用自定义价差来模拟真实情况。
- 可以启用/禁用调试日志,以避免影响优化性能。
- 启动时进行参数一致性检查,如果配置无效则阻塞。
拖曳式 SL 仅在以下模式下有效
买方:
- 购买模式_无
- 直接购买对冲
- 买入_直接对冲_添加_卖出_目标价位(家族)
- 买入_累计_单笔
- 买入_累计_倍数
- 买入_对冲_单笔交易
- 买入_对冲_多路
- 买入_对冲_单笔_追加_卖出_目标价位
- 买入_对冲_多加_卖出_止盈
- BUY_CUMUL_POS
卖方:
- 销售模式_无
- 直接对冲
- 卖出_直接对冲_加买_目标价位
- 单价累计卖出
- 卖出累计多
- 卖出对冲单笔交易
- 卖出对冲多
- 卖出对冲单笔加买入目标价位
- 卖出对冲多加买入目标价位
- 累计销售点
