Files
mymt5opp/README.md
T
2026-06-26 18:47:35 +08:00

118 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Backtesting + Optuna + MT5-Verification Stack — Knowledge Base
A blueprint for building a **personal trading-strategy research lab**: a fast Python
backtesting engine, a Bayesian parameter optimizer (Optuna), and an automated bridge to the
**MetaTrader 5 Strategy Tester** that cross-checks every result against the real terminal.
This is a **knowledge base, not a code drop.** It describes the *architecture, algorithms, rules,
and tooling* so you can build your own version from scratch — with **your own** Expert Advisors,
**your own** strategies, and **your own** presets. There are no ready-made engines or strategy
files here on purpose: you supply those from your own MQL5 bots (ideally open-source EAs you own
or have the right to use).
---
## What this stack does for you
You have MQL5 Expert Advisors and a pile of ideas to test. The MetaTrader Strategy Tester is
accurate but **slow** — a single multi-year backtest with a real-tick model can take 1030 minutes,
and an exhaustive optimization can run for days. That kills iteration speed.
This stack solves it with a **two-tier model**:
1. **Tier 1 — a fast Python "mirror engine"** that reproduces your EA's trade logic bar-by-bar over
pre-downloaded historical data. It is an *approximation* (more on fidelity below), but it runs a
full multi-year backtest in **seconds**, so you can rank thousands of parameter combinations with
Optuna in the time MT5 would run a handful.
2. **Tier 2 — MetaTrader 5 as the gold standard.** Only the **finalists** from the Python search are
compiled and run in the real Strategy Tester. The Python number gets you the *shortlist*; the MT5
number is what you trust for anything that goes live.
```
Idea ─► Python mirror engine ─► Optuna search (thousands of trials, fast)
23 diverse finalists
MetaTrader 5 Strategy Tester (gold standard)
Python-vs-MT5 comparison table ─► keep / discard / iterate
```
The whole point is **disciplined isolation**: the engine is frozen and trusted, instruments are
described by data not code, every hypothesis is an isolated experiment, and only triple-checked
results are promoted. That discipline is what keeps a research lab from rotting into a pile of
one-off scripts that nobody can reproduce.
---
## Who this is for
- You run **MetaTrader 5** and write or use **MQL5** Expert Advisors.
- You want to test and optimize strategies **much faster** than the MT5 optimizer allows.
- You are comfortable with **Python** (intermediate) and the command line.
- You can run **MT5 on Windows** — either on the same machine (simplest) or on a separate
Windows box/VPS that your Python machine talks to.
You do **not** need to be a quant. The hard parts (engine fidelity, Bayesian search, robustness
testing) are explained from first principles.
---
## How to read this KB
Start with `CLAUDE.md` if you plan to use an AI coding assistant (Claude Code, Cursor, etc.) to
build this with you — it is an **adaptive setup playbook** that profiles *your* machine and OS and
walks the install from zero. Otherwise read the numbered docs in order:
| # | Doc | What you get |
|---|-----|--------------|
| — | [`CLAUDE.md`](CLAUDE.md) | Adaptive AI-assistant playbook: profiles your device, drives install from scratch. Doubles as `AGENTS.md`. |
| 01 | [`01-stack-and-install.md`](01-stack-and-install.md) | The exact tech stack, every library, where to get it, and how to install — per OS. |
| 02 | [`02-architecture.md`](02-architecture.md) | The layered architecture and data flow. The mental model for everything else. |
| 03 | [`03-engine-design.md`](03-engine-design.md) | How to design your own bar-by-bar engine. Grid logic used as the worked example. Fidelity vs MT5. |
| 04 | [`04-isolation-rules.md`](04-isolation-rules.md) | The isolation discipline: frozen engines, forks, separated instruments/strategies, curated registry. |
| 05 | [`05-config-and-inputs.md`](05-config-and-inputs.md) | How test inputs are kept *separate*: instrument config, parameter space, the pre-run wizard, lot/money mode. |
| 06 | [`06-optimization-and-robustness.md`](06-optimization-and-robustness.md) | Optuna objective design, constraints, diverse top-N selection, and anti-overfit robustness layers. |
| 07 | [`07-mt5-bridge.md`](07-mt5-bridge.md) | Connecting to MT5: compiling EAs, auto-running the tester, parsing reports, comparing Python vs MT5. Local-Windows and remote variants. |
| 08 | [`08-workflow-cycle.md`](08-workflow-cycle.md) | The full repeatable cycle: hypothesis → scaffold → stats → optimize → verify → promote. |
---
## The 30-second mental model
- **The engine knows nothing about your strategy.** It takes bars + entry signals + stop/target
prices and simulates fills. All strategy math lives in *caller* code. (Doc 0203.)
- **The engine is frozen.** You never edit a validated engine to test an idea — you fork it,
prove the fork reproduces the original 1:1 with the change off, then test. (Doc 04.)
- **Instruments are data, not code branches.** Tick value, spread model, swap, lot steps — all in a
per-symbol config object. The engine reads everything from it. (Doc 05.)
- **Search inputs are declared, not scattered.** Every tunable parameter, its range, and its
constraints live in one declared search space; one wizard captures the run settings; one YAML
records the answers so any run is reproducible. (Doc 0506.)
- **Python ranks, MT5 decides.** Fast Python search produces a shortlist; MT5 produces the trusted
number; a comparison table is saved for every finalist. (Doc 03, 06, 07.)
---
## What you must bring yourself
This KB is deliberately empty of trading IP. To build a working lab you supply:
- **Your MQL5 EA(s)** — compiled `.ex5` plus source `.mq5`, and any custom indicators they call.
- **Your strategy logic** — encoded once in Python (the caller) so the mirror engine can run it.
- **Your presets** — the `.set` files / input templates you want to test and optimize.
- **Historical data** — downloaded from your broker via MT5 (the stack includes a recipe).
- **A broker demo account** — for the MT5 Strategy Tester runs.
Everything else — the architecture, the optimizer, the MT5 bridge, the robustness checks, and the
rules that hold it together — is described in the docs above.
---
*This KB is brand-free and self-contained. Drop the folder into a Git repository, open it with your
AI coding assistant, and build your own lab.*