BreakoutStrategy
该EA实现了通道突破策略,当价格突破可配置回看期内的最高价或最低价时,分别放置BuyStop和SellStop挂单。它基于通道对侧边界或中线进行跟踪止损,并根据每笔交易占权益的固定风险比例计算仓位大小。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| GBPUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| USDJPY | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| XAUUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
这个 EA 从未交易的原因:转换后没有留下任何开仓规则。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念基于唐奇安通道突破,利用N周期最高价和最低价形成价格通道,突破上轨做多、突破下轨做空。入场条件为:当没有同方向持仓时,在最高价加一个tick上方挂BuyStop单,在最低价减一个tick下方挂SellStop单。出场条件采用跟踪止损机制:若启用中线出场,多头止损跟踪中线和最低价的较大值,空头止损跟踪中线和最高价的较小值;若未启用,则多头跟踪最低价、空头跟踪最高价。当价格反向突破跟踪线时直接平仓,否则将跟踪线作为新止损价修改持仓。仓位管理基于固定风险比例模型,通过OrderCalcProfit计算1手在止损距离下的亏损金额,再根据风险金额反算手数,并向下取整到品种最小手数步长。资金管理还考虑了自由保证金不足时自动缩减手数的机制,以及超过最大手数限制时分批下单的处理。订单管理方面,每个新K线开盘时删除所有未成交挂单并重新挂单,使用ORDER_TIME_DAY类型的挂单避免隔夜残留。
优势
- 基于固定风险比例的仓位管理,风险可控且与账户规模自适应
- 使用挂单入场避免滑点,并设有止损止盈逻辑,风险管理体系较为完整
- 通道突破策略逻辑清晰简洁,参数可配置性强,易于理解和回测
- 考虑了最大手数限制的分批下单和自由保证金不足时的手数缩减
- 每个新K线才执行逻辑,避免高频交易和过度交易
劣势
- ATR指标句柄在每次调用ATR()函数时都重新创建但从未释放,会造成严重的资源泄漏
- 挂单仅使用ORDER_TIME_DAY过期,在周末或节假日跳过时可能导致意外行为
- 缺乏品种过滤器、交易时段过滤和新闻事件过滤,可能在低流动性时段产生不利入场
- PositionManaging中positions--在平仓后递减但循环从高到低遍历,可能导致索引偏移问题
- 没有对交易操作(BuyStop、SellStop、PositionModify等)的返回值进行错误检查和处理
改进建议
- 将ATR指标句柄移到OnInit()中创建并在OnDeinit()中释放,避免每次调用时重复创建导致资源泄漏
- 为所有交易操作添加错误检查和重试机制,并在日志中记录失败原因以便调试
- 添加交易时段过滤和点差过滤,避免在低流动性或高点差时段入场
风险评估
总体风险: 中等
- ATR句柄资源泄漏可能导致长期运行后终端性能下降甚至崩溃
- 交易操作无错误检查,失败时无反馈可能导致策略状态与实际持仓不一致
- 缺乏交易时段和点差过滤,可能在不利条件下入场导致异常滑点
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
BOT_NAME | BreakoutStrategy | EA名称标识 |
EXPERT_MAGIC | 1 | EA魔术号码,用于标识本EA的订单 |
ENTRY_PERIOD | 20 | 入场通道回看周期数 |
ENTRY_SHIFT | 1 | 入场通道偏移量(1=从上一根K线开始计算) |
EXIT_PERIOD | 20 | 出场通道回看周期数 |
EXIT_SHIFT | 1 | 出场通道偏移量 |
EXIT_MIDDLE_LINE | true | 是否使用通道中线作为出场参考 |
TRADING_TIMEFRAME | PERIOD_H1 | 交易使用的时间周期 |
RISK_PER_TRADE | 0.01 | 每笔交易风险占权益的比例(1%) |
同类 EA:突破
回测是历史模拟,不代表未来收益,不构成投资建议。