Tungman
该EA在每个tick处放置BuyStop和SellStop挂单,形成突破式入场系统。它包含移动止损功能来管理持仓,将止损移至保本后跟踪止损。然而,TrailingStop()函数从未在OnTick()中被调用,使其完全无法运行。
打开交互版(权益曲线、切换品种)基本信息
回测结果(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 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念是基于突破入场,在每个tick检查是否存在买单和卖单挂单,若不存在则在当前Ask价上方放置BuyStop挂单,在当前Bid价下方放置SellStop挂单,形成双向突破捕捉系统。入场条件为当前无同类型挂单且手数和资金检查通过,订单有效期为当日结束。出场条件依赖StopLoss和TakeProfit设置,以及TrailingStop函数实现保本止损和跟踪止损——但TrailingStop从未被调用。仓位管理为固定0.01手,无任何动态调整机制。资金管理通过CheckMoneyForTrade检查可用保证金是否充足,并有手数合规性验证。该EA存在严重逻辑缺陷:TrailingStop未被调用、重复的资金检查、循环索引越界(PositionsTotal和OrdersTotal应从Total-1开始)、以及第二阶段止损计算错误(bid-ValidBuy和ask+ValidSell)。
优势
- 双向挂单设计可捕捉多空两个方向的突破行情
- 包含资金检查和手数合规性验证,有基本的风控意识
- 挂单有效期限制为当日,避免过夜持仓风险
- 订单注释机制便于识别和管理自身挂单
劣势
- TrailingStop()函数从未被调用,移动止损功能完全失效
- 每个tick都尝试下挂单,无新bar检查,会频繁产生无效订单请求
- 循环索引从Total开始而非Total-1,导致越界访问
- 第二阶段跟踪止损计算错误:bid-ValidBuy和ask+ValidSell是价格减价格,结果无意义
- 重复的资金检查代码(60-70行重复了56-64行的逻辑)
- 固定0.01手无任何仓位优化机制
改进建议
- 在OnTick()中调用TrailingStop()函数,使移动止损功能生效
- 添加新bar检查机制,避免每个tick重复下单
- 修复循环索引为i=Total-1,修复第二阶段止损计算逻辑
- 将固定手数改为可配置参数,并考虑基于ATR或风险的动态仓位管理
- 添加点差过滤和交易时段过滤,避免在高点差或低流动性时段交易
风险评估
总体风险: 高风险
- 无新bar检查导致每个tick尝试下单,可能触发broker限频或产生大量无效请求
- 移动止损功能完全失效,持仓只能靠初始止损保护
- 双向挂单同时成交时将形成对冲持仓,加倍保证金占用且无额外风控
- 止损计算存在数学错误,可能在跟踪阶段设置错误的止损位
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
PriceTP | 900 | 止盈点数(0=不使用止盈) |
PriceSL | 300 | 止损点数 |
trailingstoppoint | 200 | 跟踪止损触发点数 |
同类 EA:突破
回测是历史模拟,不代表未来收益,不构成投资建议。