Files
zhutoutoutousan 605faf5310 Prepare source-only public release for develop.
Add cluster audit pipeline, united EA updates, brochure generators, and publication hygiene (gitignore, MT5 path desensitization, pre-upload scan). Remove tracked reports, models, and binary artifacts from the repo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 15:03:43 +02:00

4.7 KiB
Raw Permalink Blame History

SimpleEMA — 练手实验室

双 EMA 金叉/死叉策略,默认货币对 EURUSD H1(流动性好、点差低,适合入门优化)。

策略逻辑

项目 规则
入场 快 EMA 上穿/下穿慢 EMA(收盘 K 确认)
出场 反向交叉 / ATR 或固定 SL·TP / 最大持仓 K 线数 / 可选 trailing
过滤 最大点差、最小 EMA 间距

文件

文件 用途
main.mq5 MT5 EAStrategy Tester / 实盘)
SimpleEMA_EURUSD.set 默认参数
SimpleEMA_Genetic_Optimization.set 遗传优化范围
run_mt5_tester.py 调 MT5 原生 Strategy Tester(你要的实时回测)
run_backtest.py Python 快速回测(MT5 拉历史 K 线)
run_optimize.py Python 随机搜索优化
trades.csv 逐单复盘(Python 回测产出)

1. MT5 原生回测(推荐)

先确保 MT5 已登录,EURUSD H1 历史数据已下载。

cd lab\EAs\SimpleEMA

# 单次回测(自动编译 EA → 启动 Strategy Tester → 生成 HTML 报告)
python run_mt5_tester.py backtest

# 可视化模式:看 K 线一根根跑(实时感最强)
python run_mt5_tester.py backtest --visual

# 遗传优化(Optimization=2,用 SimpleEMA_Genetic_Optimization.set
python run_mt5_tester.py optimize

回测完成后:

  • HTML 报告路径会打印在终端(通常在 %APPDATA%\MetaQuotes\Terminal\...\SimpleEMA_EURUSD_backtest.htm
  • 在 MT5 结果 → 报告 里可逐单查看开平仓、滑点、盈亏
  • 优化结果在 Optimization Results 标签页,右键可 Set as Input

2. Python 快速迭代(改逻辑 → 立刻看 trades.csv

python run_backtest.py
python run_backtest.py --start 2024-01-01 --fast 10 --slow 30

产出:trades.csv(每单 side / 开平时间 / 价格 / profit / exit_reason)、report.png

4. 多品种组合(20 品种)

分品种调参 + 组合(推荐)

# 每个品种独立随机搜索,自动剔除 net<=0 / PF<1 的品种,再跑组合回测
python run_optimize_portfolio.py --trials 350

# 仅用已有 portfolio_params.json 重跑组合
python run_optimize_portfolio.py --skip-opt

# 验证组合
python run_portfolio_v5.py

产出:portfolio_params.json(每品种最优参数 + enabled 标记)、portfolio_opt_trials/*.csvbest_run/portfolio_trades.csv

统一参数(对比用)

python run_portfolio_v5.py --shared-params best_params.json
文件 用途
portfolio_symbols.json 20 品种列表 + 各品种最大点差
portfolio_curated.json 全扫描后 net>0 的子集
run_portfolio_v5.py 组合回测,产出 portfolio_report.json
main_portfolio.mq5 MT5 多品种 EA(挂任意图表,监控 SymbolList 内全部品种)

MT5 组合 EA

python run_mt5_tester.py backtest --ea main_portfolio.mq5 --period M15 --from 2020.01.01 --to 2026.01.01

3. Python 随机搜索优化

python run_optimize.py --trials 500

产出:optimize_trials.csvbest_params.jsonbest_run/trades.csv

best_params.json 里的值填回 .setmain.mq5 input,再用 run_mt5_tester.py optimize 做 MT5 遗传精调。

5. MT5 回测(唯一准绳)

2598 笔是 Python 组合模拟;SimpleEMA_report.pdf 只是单品种 EURUSD~115 笔)。

组合请以 MT5 为准:

# 12 个启用品种各跑一遍 MT5 Strategy Tester(每品种独立 .set
python run_mt5_portfolio.py --from 2020.01.01 --to 2026.01.01

# 从 MT5 HTML 报告汇总生成正式报告
python generate_mt5_portfolio_report.py

产出:

  • best_run/mt5_results.json — MT5 汇总(交易数、净利)
  • best_run/mt5_reports/*.htm — 各品种 MT5 原生报告(逐单复盘)
  • best_run/MT5_PORTFOLIO_REPORT.md — 组合说明
  • best_run/SimpleEMA_report.png — 由 MT5 数据生成的组合图

Python portfolio_trades.csv / run_portfolio_v5.py 仅用于快速迭代参数,不作最终成绩

改 main.mq5 逻辑
    ↓
python run_backtest.py          ← 秒级验证 + trades.csv 逐单复盘
    ↓
python run_optimize.py          ← 粗搜参数空间
    ↓
python run_mt5_tester.py optimize  ← MT5 遗传优化确认
    ↓
python run_mt5_tester.py backtest --visual  ← 目视检查

手动在 MT5 里操作

  1. main.mq5 复制到 MQL5/Experts/ 或用 MetaEditor 打开编译
  2. Strategy TesterExpert = SimpleEMASymbol = EURUSDPeriod = H1
  3. Inputs → Load → SimpleEMA_EURUSD.set
  4. 优化时 Load → SimpleEMA_Genetic_Optimization.setOptimization = Genetic