EA-1229 · 机器学习

svmTrader

该EA使用两个支持向量机(SVM)模型,基于标准技术指标训练后生成买入和卖出交易信号。当SVM发出信号时,EA开仓并下挂止损和止盈订单,通过票号缓存系统将配对订单作为独立交易管理。

打开交互版(权益曲线、切换品种)

基本信息

风险需谨慎
爆仓风险低
评分★★☆☆☆
类型交易型 EA
周期M15, H1, H4
指标Bears Power, Bulls Power, ATR, Momentum, MACD, Stochastic, Force Index
作者MetaQuotes Software Corp.

回测结果(H1,约 1 年)

品种盈亏年化最大回撤交易数胜率夏普恢复因子最长连亏每笔期望状态
EURUSD0.00%0.00%0.00%0—————暂不支持转换
GBPUSD0.00%0.00%0.00%0—————暂不支持转换
USDJPY0.00%0.00%0.00%0—————暂不支持转换
XAUUSD0.00%0.00%0.00%0—————暂不支持转换

这个 EA 从未交易的原因:转换后没有留下任何开仓规则。

由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。

爆仓风险: 未发现爆仓模式

  • 最多可同时持有 5 个仓位

单独这一点不算典型的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。

高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →

策略分析

策略概念:利用支持向量机(SVM)对多种技术指标(Bears Power、Bulls Power、ATR、Momentum、MACD、Stochastic、Force Index)进行机器学习训练,分别建立买入信号模型和卖出信号模型。入场条件:每个新K线形成时,classify()函数用当前指标数据评估已训练的SVM模型,若买入SVM返回true则开多仓,若卖出SVM返回true则开空仓。出场条件:通过挂单方式实现手动止损止盈,买入后放置SellStop止损和SellLimit止盈,卖出后放置BuyStop止损和BuyLimit止盈;当一方触发时,通过OnTrade()事件删除配对的另一方挂单。仓位管理:固定手数(Vol=1),通过Current_Order_Exposure()函数计算当前挂单总量的二分之一作为风险敞口,限制不超过risk_exp(5)时才允许开仓。资金管理:仅通过最大同时持仓风险敞口参数控制,无动态仓位调整或百分比风险计算。

优势

  • 使用机器学习(SVM)方法进行信号生成,具有较强的非线性模式识别能力
  • 买卖信号分别由独立SVM模型产生,避免了单一模型的双向判断冲突
  • 通过票号缓存系统实现止损止盈挂单配对管理,能够将多笔交易独立处理
  • 新K线判断机制避免了同一K线内重复开仓

劣势

  • SVM仅在使用时初始化训练一次(OnInit),不会随市场变化重新训练,模型可能快速过时
  • 固定手数(Vol=1)缺乏动态仓位管理,无法根据账户资金或波动性调整风险
  • Pip_Size()函数通过取对数推算pip大小,逻辑脆弱,对JPY等非标准报价品种可能计算错误
  • Current_Order_Exposure()用挂单总量的一半估算风险敞口,方法粗糙且不准确
  • OnTrade()中遍历逻辑存在缺陷:用ticket索引访问tickets数组,当ticket值大于数组大小时可能越界

改进建议

  • 增加定期重新训练机制(如每日或每周),使SVM模型能适应市场状态变化
  • 实现基于账户余额百分比或ATR的动态仓位管理,替代固定手数
  • 修复OnTrade()中的票号缓存查找逻辑,避免数组越界风险
  • 使用SymbolInfoDouble(SYMBOL_POINT)和SYMBOL_DIGITS正确计算pip大小

风险评估

总体风险: 需谨慎

  • SVM模型不重新训练,随时间推移信号质量下降可能导致连续亏损
  • OnTrade()中的票号缓存查找存在数组越界风险,可能引发运行时错误
  • Pip_Size()对非标准品种计算可能出错,导致止损止盈价位不正确
  • 无滑点和点差过滤,在新闻事件或低流动性时段可能以不利价格成交

评估得分

代码质量2.0
策略逻辑3.0
风险管理2.0
稳健性2.0
创新性4.0
文档4.0
综合2.8

参数

参数默认值说明
takeProfit100止盈水平,以点(pip)为单位
stopLoss150止损水平,以点(pip)为单位
hours6计算训练输出时的最大假设交易持续时间(小时)
risk_exp5最大同时持仓风险敞口
Tolerance_Value0.1SVM训练的误差容忍度(默认10%)
N_DataPoints100生成并使用的训练数据点数量

同类 EA:机器学习

回测是历史模拟,不代表未来收益,不构成投资建议。

订阅每周 Arena 周报

每周一封邮件:排名变化、新信号和新研究。不发垃圾邮件,随时可以退订。