This guide shows every screen and every setting. Follow it exactly and MetaTrader's own report will show the same trades as the tables on solvex.space/gold-robot — the same number of trades, on the same dates, at the same prices. Then change the deposit to your own size and see what the robot does with it.
The desktop terminal. The Strategy Tester is part of it and is free.
Free to open. It gives your tester the same gold price history we used, symbol XAUUSDm.
The full 2018–2026 run takes a few minutes the first time, while MetaTrader downloads the history.
What this edition is. The licensed robot's own trading code. It runs in the Strategy Tester only: it cannot be attached to a demo or a real account, it opens no trade on history after 10 November 2026, it needs no licence key and it connects to nothing.
SolvexGoldRobot_Free.ex5 into it.Do not put the file on a chart. This edition only works in the Strategy Tester; on a chart it shows a message and removes itself.
Nothing is traded in the Strategy Tester. It replays old prices; no order ever reaches a broker.
These eleven settings reproduce Dataset A on the website: one $1,000 account from 28 June 2018 to 10 November 2026.
| Field | Value | Why |
|---|---|---|
| 1. Expert | SolvexGoldRobot_Free | The file you copied in step 1. |
| 2. Symbol | XAUUSDm | Gold on an Exness MetaTrader 5 demo account. On another broker the symbol has another name and another history. |
| 3. Timeframe | M15 | The chart timeframe. The robot reads its own timeframes, so the result is the same on any; M15 is the view we used. |
| 4. Date | Custom period: 2018.06.28 – 2026.11.10 | The whole history of the published back-test. |
| 5. Forward | No | |
| 6. Delays | Zero latency, ideal execution | With “Random delay” every run gives a slightly different result. |
| 7. Modelling | 1 minute OHLC | Fast, and it takes the same trades every time. “Every tick” takes longer and ends a little higher. |
| 8. Deposit | 1000 USD | Change this to see your own account size — see the capital guide below. |
| 9. Leverage | 1:100 | |
| 10. Optimization | Disabled | The robot refuses to be optimised. |
| 11. Visual mode | Off | Switch it on if you want to watch the trades being placed on a chart. |
The symbol decides the history. If your broker is not Exness, choose your broker's gold symbol (XAUUSD, GOLD, XAUUSD.a …). The robot will run, but on that broker's prices it takes other trades, so your numbers will not be ours. That is a real result for that broker — not an error.
The robot's default inputs are the published settings. Open the Inputs tab and check that nothing was changed; if you are unsure, right-click the list and choose Defaults.
There are 48 inputs. You do not need to understand them to repeat the back-test — but every one is listed here with its default value and what it does, so nothing is hidden.
The one most people change later is the first: InpRiskPct, the risk of one unit as a percentage of the balance. The back-test uses 5.0, the highest the robot accepts.
| Input | Default | What it does |
|---|---|---|
| Risk | ||
| InpRiskPct | 5.0 | Risk per x1 trade, % of balance (0.1..5); a trade is x2 or x3 |
| InpCapitalSharePct | 100.0 | Share of the account balance the robot sizes on, % |
| InpMaxLotPerOrder | 0.0 | Largest lot per order (0 = automatic: 0.5 lot per 1,000 of start capital) |
| InpStartCapital | 0.0 | Start capital for the automatic lot limit (0 = the balance when the robot first started) |
| InpDayLossPct | 30.0 | Daily-loss breaker, % of the balance at the start of the day |
| InpBrakeDdPct | 10.0 | Drawdown brake: balance this % below its high... |
| InpBrakeMult | 0.5 | ...multiplies the risk by this |
| InpBrakeDays | 120 | ...high of this many daily values (1..400) |
| InpBrake2DdPct | 0.0 | Second brake step: balance this % below the high (0 = off) |
| InpBrake2Mult | 0.25 | ...multiplies the risk by this |
| InpBrake3DdPct | 0.0 | Third brake step (0 = off) |
| InpBrake3Mult | 0.1 | ...multiplies the risk by this |
| InpWeekLossStop | 0.0 | Weekly stop: no new trades this week once earlier days of the week lost this many risk units (0 = off; 2 = one full loss) |
| InpStreakLosses | 0 | After this many losing trades in a row... (0 = off) |
| InpStreakMult | 0.5 | ...the risk is multiplied by this until a winning trade |
| InpRiskMon | 1.0 | Risk multiplier for trades entered on Monday (0 = no trade) |
| InpRiskTue | 1.0 | ...Tuesday |
| InpRiskWed | 0.0 | ...Wednesday (0 = no trade, selected) |
| InpRiskThu | 1.0 | ...Thursday |
| InpRiskFri | 0.0 | ...Friday (0 = no trade, selected) |
| InpMaxDdStopPct | 0.0 | Stop trading when the balance is this % below its high (0 = off) |
| InpResumeAfterDdStop | false | Set true once to resume after a drawdown stop |
| Strategy | ||
| InpEntryMode | Market order when the level is reached | Entry method |
| InpTradeLeg1 | true | Trade the 00:00 UTC level |
| InpTradeLeg2 | true | Trade the 02:00 UTC level |
| InpLeg3AnchorMin | 180 | Third leg: anchor in minutes after 00:00 UTC, whole hours (180 = 03:00, selected; 0 = off) |
| InpLeg4AnchorMin | 0 | Fourth leg: anchor in minutes after 00:00 UTC (0 = off; 240 = 04:00) |
| InpNeedH4 | true | The H4 trend must agree |
| InpBreakEvenR | 0.0 | Stop to the entry price after this many R (0 = off; 0.5 was tested) |
| InpExitMin | 1200 | Exit time in minutes after 00:00 UTC (1200 = 20:00, as tested) |
| InpHoldDays | 1 | A position still open at the exit time is held this many more days (1 = selected; 0 = exit the same day) |
| InpLeg2NeedsLeg1 | true | Skip the later legs when the 00:00 leg was decided today without a trade |
| InpPrevCloseMin | 0.25 | Skip when the previous day closed in the worst part of its range (0.25 = worst quarter; 0 = off) |
| InpMinRangePct | 1.0 | Quiet-market filter: skip when the median daily range of 20 days is below this % of the price (1.0 = selected; 0 = off) |
| Execution filters | ||
| InpMaxSpread | 0.60 | No new order when the spread is above this (price units) |
| InpMaxPingMs | 1000 | No new order when the last ping is above this (ms) |
| InpSlippage | 0.05 | Allowed slippage of market orders (price units) |
| Broker time | ||
| InpUtcOffsetHours | 99 | Server time minus UTC in hours (99 = detect automatically) |
| InpForceUtcEngine | false | Build days from H1 bars even when the server is on UTC (test switch) |
| General | ||
| InpMagicBase | 20261100 | Magic number base (uses base+1, +2, +5, +6) |
| InpShowPanel | true | Show the information panel |
| InpShowLevels | true | Draw today's levels on the chart |
| InpChartTheme | true | Apply the Solvex chart colours |
| InpKeepM15 | true | Keep the chart on M15 (recommended view) |
| InpPanelX | 10 | Panel position X (pixels) |
| InpPanelY | 22 | Panel position Y (pixels) |
| InpPanelScale | 0.0 | Panel scale (0 = from the screen DPI) |
| InpPanelCompact | false | Compact panel (without the Settings and Filters blocks) |
Press Start. When the green progress bar finishes, open the Backtest tab. With the settings above on Exness history, on 12 November 2026 we read:
MetaTrader writes large numbers with spaces: 219 616.23. The Graph tab shows the balance curve, and the list of deals at the bottom of the Backtest tab is the same list our tables were made from.
The trades: on the same history the robot takes the same trades — the same Total Trades, on the same dates, at the same prices. The last deal of the run is 2026.10.30 20:00:00, buy out, at 3883.900.
The money moves a little: Total Net Profit contains swap, and the Strategy Tester charges swap at the rate your broker publishes on the day you test, for the whole history. We ran this test on two days: every deal had the same time, price, volume and profit, and the swap in it was −2,305.18 USD on 11 November 2026 and −3,040.88 USD on 12 November 2026. In the yearly run of 2026 the slightly different balance also moved some lot sizes by 0.01 to 0.02, and with them the profit of those trades. Expect a net result close to ours, not the same last digits.
Result of the trades closed in each year, and the balance at the end of it, as of 12 November 2026. Two years ended lower: 2019, 2023.
| Year | Net result, USD | Balance at the end | Trades opened |
|---|---|---|---|
| 2018 | — | 1,000 | 0 |
| 2019 | −106.28 | 894 | 5 |
| 2020 | +17,657.57 | 18,551 | 28 |
| 2021 | +24,728.35 | 43,280 | 47 |
| 2022 | +18,579.40 | 61,859 | 25 |
| 2023 | −5,551.85 | 56,307 | 28 |
| 2024 | +19,619.62 | 75,927 | 58 |
| 2025 | +63,465.99 | 139,393 | 62 |
| 2026 (to 10 Nov) | +81,223.43 | 220,616 | 44 |
This is Dataset B on the website. It answers a harder question than one long run: what if you had started in that particular year? Use the settings of step 3 with three changes:
| Year | Custom period | Net result, USD | Trades | $1,000 became |
|---|---|---|---|---|
| 2018 | 2018.01.01 – 2018.12.31 | — | 0 | 1,000 |
| 2019 | 2019.01.01 – 2019.12.31 | −393.41 | 7 | 607 |
| 2020 | 2020.01.01 – 2020.12.31 | +17,901.49 | 28 | 18,901 |
| 2021 | 2021.01.01 – 2021.12.31 | +21,594.35 | 47 | 22,594 |
| 2022 | 2022.01.01 – 2022.12.31 | +5,907.73 | 25 | 6,908 |
| 2023 | 2023.01.01 – 2023.12.31 | −819.22 | 28 | 181 |
| 2024 | 2024.01.01 – 2024.12.31 | +15,475.70 | 58 | 16,476 |
| 2025 | 2025.01.01 – 2025.12.31 | +58,360.12 | 60 | 59,360 |
| 2026 | 2026.01.01 – 2026.10.31 | +39,601.77 | 41 | 40,602 |
2018 has no trade: the history starts in late June and the robot needs months of it before its first trade. 2023 is the year to look at closely — a new account lost most of its money in it.
You do not need a different robot or different settings for a different account. Change the Deposit field in step 3 and run it again.
One unit risks InpRiskPct percent of the balance; a trade is 2 or 3 units. The lot follows from the distance to the stop.
Largest order: 0.5 lot per $1,000 of start capital — 0.05 lot on $100, 5 lots on $10,000, 500 lots on $1,000,000, up to your broker's own maximum.
When the calculated lot is below the broker's minimum, the robot trades the minimum with a tighter stop that loses the same risk amount, and takes no add-on.
One account, 28 June 2018 to 10 November 2026, 1-minute OHLC, default inputs. Only the deposit changes. Simulated, like every number in this guide.
| Deposit | Balance at the end | Trades | Largest fall | Lowest balance | Lots used | Order limit |
|---|---|---|---|---|---|---|
| 100 USD (1:100) | 21,884 | 295 | 22.8% | 77 | 0.01 – 0.05 | 0.05 lot |
| 100 USD (1:500) | 22,004 | 298 | 40.2% | 60 | 0.01 – 0.05 | 0.05 lot |
| 500 USD (1:100) | 109,587 | 296 | 25.2% | 374 | 0.04 – 0.25 | 0.25 lot |
| 1,000 USD (1:100) | 220,616 | 297 | 25.7% | 743 | 0.08 – 0.50 | 0.50 lot |
| 10,000 USD (1:100) | 2,206,374 | 297 | 26.1% | 7,393 | 0.80 – 5.00 | 5 lots |
| 100,000 USD (1:100) | 22,063,942 | 297 | 26.1% | 73,872 | 8.01 – 50.00 | 50 lots |
| 1,000,000 USD (1:100) | 89,566,785 | 298 | 28.2% | 717,600 | 77.88 – 200.00 | 200 lots (the broker's maximum) |
Large orders. The Strategy Tester fills an order of any size at the simulated price. A real market does not: the larger the order, the worse the fill. The rows for large deposits are therefore the least realistic ones in this table. On 1,000,000 USD the robot's own limit would be 500 lots, but this broker accepts 200 lots per order, so the largest orders were 200 lots and the account grew less in proportion. On a large account, set InpMaxLotPerOrder to a size your broker fills well.
| Input | Default | When to change it |
|---|---|---|
InpRiskPct | 5.0 | The size of every trade. The table below shows 1.0 and 2.5 on the same history — read the “Largest fall” column before choosing: on this history a lower setting did not always mean a smaller fall. |
InpCapitalSharePct | 100 | Let the robot size on only part of the account — for example 50 to trade half of it and leave half untouched. |
InpMaxLotPerOrder | 0 (automatic) | Set your own largest order, for example your broker's maximum lot on a very large account. |
InpStartCapital | 0 (the first balance) | The capital the automatic order limit is counted from. Raise it after you add money, so the limit grows with the account. |
InpDayLossPct | 30 | The robot stops for the day after losing this share of the day's opening balance. |
| InpRiskPct | Balance at the end | Largest fall | Lowest balance | Worst year |
|---|---|---|---|---|
| 1.0% | 187,498 | 19.6% | 873 | −5,358.28 (2023) |
| 2.5% | 208,411 | 28.8% | 712 | −5,551.85 (2023) |
| 5.0% | 220,616 | 25.7% | 743 | −5,551.85 (2023) |
| What you see | The usual reason |
|---|---|
| The same trades, a slightly different net result | Swap. The tester charges it at the rate your broker publishes on the day of the test, so the net result moves from day to day while the trades stay the same. Compare Total Trades and the dates and prices in the deals list. On a swap-free account type no swap is charged and the net is a little higher. |
| Different profit and different trades | Another broker or another gold symbol. The robot trades what that history shows. To match ours, use an Exness MT5 demo account and XAUUSDm. |
| A little higher, same number of trades | Modelling is “Every tick” instead of “1 minute OHLC”. On every tick our run ended at 231,700 USD. |
| Different every time you press Start | Delays is set to “Random delay”. Choose “Zero latency, ideal execution”. |
| Fewer trades, or none in the first years | The history was not downloaded completely. Open an XAUUSDm chart, scroll far back, wait, and run again. “History Quality” in the report should be 98% or more. |
| No trade after 10 November 2026 | That is this edition's limit. Newer history needs the licensed robot. |
| “runs only in the Strategy Tester” | The file was put on a chart. Use View → Strategy Tester instead. |
| “optimisation is not supported” | Set Optimization to “Disabled”. |
The same trading code, with the account lock removed and a licence check added, a panel on the chart, a pause button and logs. Every licence includes 10 demo accounts, so you can run it forward on demo before real money.
Everything in this guide is a simulation on historical prices, and the rules were chosen by looking at that same history. It is not a live result and not a forecast. The robot has losing months and losing years, and trading gold with leverage can lose all the money in an account.