Skip to content

构建多交易品种EA

一、问题背景

在量化交易中,经常需要在一个EA(智能交易系统)中运行多个交易策略,以实现以下目标:

  1. 多品种组合:同一策略在不同交易品种(如EURUSD、BTCUSD、US500)上的差异化参数配置。
  2. 多周期管理:同一策略在不同时间周期(如M15、H1、D1)上的独立运行。
  3. 绩效合并:将多个策略的交易结果合并,生成统一的资金曲线、胜率、回撤等指标,便于投资组合分析。

传统方法(如MT5市场扫描)存在以下局限:

  • 参数固定:只能使用同一组参数在不同品种上回测,无法针对每个品种定制参数。
  • 结果分离:不同品种的回测结果独立,无法直接合并生成整体绩效报告。
  • 资源消耗:每个策略需独立运行,占用多个图表和计算机资源。

本章将通过面向对象编程(OOP)实现多品种EA,解决上述问题。

二、核心思路:策略类封装与数组管理

1. 策略类设计

将每个交易策略抽象为一个类,包含以下要素:

  • 成员变量:存储策略的核心参数(如Magic Number、止损、指标周期等)。
  • 成员函数:实现策略的核心逻辑(如初始化、订单处理、销毁)。
  • 构造函数:初始化策略参数,支持硬编码或用户输入两种方式。

2. 多策略管理

使用数组存储多个策略对象,并在系统回调函数(如OnTick())中循环调用每个对象的方法。
核心逻辑

  1. 策略初始化:在OnInit()中创建策略对象数组。
  2. 策略执行:在OnTick()中遍历数组,调用每个对象的OnTick()方法。
  3. 资源释放:在OnDeinit()中销毁数组中的对象。

五、代码实现与注意事项

1. 完整代码框架

cpp
#