$ cat projects/trading-systems.md

Unattended trading systems

Automated gold trading on a demo account, built to run with nobody watching; retired in October 2026

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

Operation
Retired on 2026-10-05
after continuous, unattended operation on a demo account
Pre-registered rebuild
No edge
none of 34 combinations, nor 18 variants in a second round
Machine-learning model
Switched off
no usable ability to predict direction out of sample
Challenger review
6 of 6 failed
none was merged into the champion

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.

artifacts

No public artifact: this work lives in private repositories. The description above is the citable summary.