$ cat projects/trading-systems.md
Unattended trading systems
DEMO · retired Dec 2025 — Present Developer
at a glance
- Account
- Demo
- Runtime
- Retired on 2026-10-05
- Instrument
- Gold (XAUUSD)
- Stack
- MQL5 and Python
context
An automated trading program for MetaTrader 5, a trading platform that calls such programs Expert Advisors: software that places trades on its own. It traded gold (XAUUSD) on a demo account, continuously and without supervision, until every running variant was retired on 2026-10-05: a pre-registered rebuild found no demonstrable edge.
This page is about the engineering. No money results are published: not gains, not losses, not account figures.
the problem
With nobody watching, an open position must never be left without management. The protection layers described below were built after tracing a trade that had been left unmanaged.
A program that combines many strategies also has to know when not to act: when buy and sell are roughly equal, or when a trade would go against a confirmed strong trend.
approach
What was tried — and, where it applies, what it taught. The second half is the part that usually gets edited out, and the part that is actually useful.
-
- Put risk containment in layers that act independently of the strategy logic.
learned There are 8 layers, among them a stop-loss on every trade, a hard daily loss stop, and a sweep every 5 seconds for positions that nothing is managing.
-
- Let 57 strategies vote, in a rotating batch of at most 8 on each price update (a tick).
learned The votes add up to a weighted buy score and sell score. A pipeline of 9 phases adjusts them to the market regime and vetoes the signal when the two are roughly equal.
-
- Checked safety on both sides of the verdict.
learned Before a verdict is requested, an entry gate checks the market, the connection, operator stops and the spread. After it, exit levels come from recent volatility and the trade size from the selected risk model.
-
- Ran new strategies and features as challengers beside the current best configuration, the champion, on the demo account.
learned The written rule is that a change is never swapped straight into the champion, is judged only after at least 10 days and 40 trades, and must reach at least 0.95 times the champion on three measures. Two fixes went to every running variant at once instead.
outcome
what I would do differently
Keep a model switched off until it shows predictive ability on data kept apart from its training. The deployed model failed that test, a fresh retrain came out at chance level, and the main configuration ran without it until the fleet was retired.
Hold every challenger to a minimum time and trade count before judging it. The minimum has already caught one early favourite that lost its advantage; at the same review, another challenger's early lead turned out to be noise.
Write the stopping rule down before a rebuild and accept its answer. Two pre-registered rounds found no edge, so the fleet stays frozen rather than tuned until something passes.