svmTrader
该EA使用两个支持向量机(SVM)模型,基于标准技术指标训练后生成买入和卖出交易信号。当SVM发出信号时,EA开仓并下挂止损和止盈订单,通过票号缓存系统将配对订单作为独立交易管理。
打开交互版(权益曲线、切换品种)基本信息
回测结果(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% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 未发现爆仓模式
- 最多可同时持有 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()对非标准品种计算可能出错,导致止损止盈价位不正确
- 无滑点和点差过滤,在新闻事件或低流动性时段可能以不利价格成交
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
takeProfit | 100 | 止盈水平,以点(pip)为单位 |
stopLoss | 150 | 止损水平,以点(pip)为单位 |
hours | 6 | 计算训练输出时的最大假设交易持续时间(小时) |
risk_exp | 5 | 最大同时持仓风险敞口 |
Tolerance_Value | 0.1 | SVM训练的误差容忍度(默认10%) |
N_DataPoints | 100 | 生成并使用的训练数据点数量 |
同类 EA:机器学习
回测是历史模拟,不代表未来收益,不构成投资建议。