The client's idea
Rayan Algorithmic Team works EURUSD / GBPUSD / USDJPY on M30; the opening brief was: One bot for three symbols, without losing sight of the risk across all open positions.
Project and starting point
Running three symbols at once while keeping total exposure in view: each pair behaved on its own, but on volatile days the combined exposure ran away.
Solution architecture
A shared signal core with per-symbol parameters, an account-level basket risk cap, and entry priority ordered by signal strength.
One shared core with a separate filter per symbol keeps the code maintainable for a small team. It matches how EURUSD / GBPUSD / USDJPY is actually traded and can be tested against the data already available.
Why this design
One shared core with a separate filter per symbol keeps the code maintainable for a small team. It matches how EURUSD / GBPUSD / USDJPY is actually traded and can be tested against the data already available.
Implemented capabilities
Modules and components built: Basket risk.
Delivered output:
Multi-symbol expert advisor — EURUSD / GBPUSD / USDJPY (M30)
Specification document and the rule-to-code mapping table
Full MQL5 source, commented
Test report: Optimization
Parameter document and install guide (9 weeks)
Safeguards and risk control
Per-trade risk is derived from stop distance, the daily loss cap is enforced in code, and the kill switch is independent of the signal logic.
Backtest and forward test method
Test method: Optimization.
Testing runs in three stages: a backtest on historical data, limited optimisation inside the contract's scope, and a forward run with the parameters frozen.
Tools and stack: MQL5, market-data service, Python reporting scripts.
Every figure from this project is published together with its measurement conditions: the data window, the tick model, the spread, the commission and the build of the executable. Without them a number cannot be compared with anything.
Publishable results
Combined exposure never crossed the agreed ceiling during the test, and the desk could run all three symbols without manual coordination.
Limitations and cautions
Per-trade risk is derived from stop distance, the daily loss cap is enforced in code, and the kill switch is independent of the signal logic.
Every test result depends on the quality of the historical data, the broker's spread and market conditions, and none of it is a promise about the future. Through a severe price gap or a broker disconnection a stop loss cannot be guaranteed, so behaviour in those conditions must be reviewed separately.
Our next-step proposal
The next step for this project is a monthly performance report and an annual review of the EURUSD / GBPUSD / USDJPY filters.
Portfolio
Measured results
These are the figures the test produced — not a promise about future performance.
- 3 Concurrent position cap
- 3 Symbols covered
- 9.4 % Max drawdown in test
- 27 Configurable inputs