Close All Except Largest Winner
"Take everything off except my best runner" is a standard de-risking move before news, before a weekend, or when a basket has done its job and one position deserves more room. Done by hand it means closing N-1 positions while carefully not touching one - the exact situation where a mis-click costs the most, because the one position you must not close is also the most valuable one on the book. The trap in a naive version of this script is subtle: profits move while you close. Closing a dozen positions takes seconds, prices tick the whole time, and if the script re-ranked the book as it worked, the "best" position could change mid-run - and the script would then close the position its own prompt promised to keep. This implementation therefore decides everything from a snapshot taken before the first close: which position is kept, which are closed, and the totals shown in the prompt. The keeper is skipped by snapshot index, not by re-ranking. If another position overtakes it thirty seconds later, the confirmed keeper still survives, because that is what you agreed to. The ranking is net of costs - profit plus swap plus commission on MQL4, profit plus swap on MQL5 (see the platform notes) - because raw price profit routinely crowns the wrong winner once a few nights of swap are counted. And the winner must be real. If nothing on the book is in net profit, the script refuses: the "keeper" would just be the least bad loser, and flattening everything around it is a full-flatten decision in disguise. A full flatten wants a close-all script, chosen deliberately. Positions that close themselves mid-run (a take profit hit while the script worked through the list) are counted as done, not failed - the goal for every non-keeper is a flat book, and the book is no less flat for it. Notes and limitations - Market positions only. Pending orders are not touched. - The keeper is fixed at snapshot time. A position that overtakes it during the run is still closed - by design, because it is what the prompt showed and you confirmed. - The realised total in the summary is the sum of each position's last-seen net figure at the moment it was closed; the account statement is the authority (on MQL5 it excludes commission). - Closing the rest of a hedged book around one keeper changes net exposure and can raise margin requirements rather than lower them. Check free margin before running this on a heavily hedged account. - On a FIFO account the server can refuse closes that are out of order; each refusal is reported and counted as failed.
Script · MT5 · v1.0 · Free
About Close All Except Largest Winner
Close All Except Largest Winner is an expert advisor (trading robot) for MetaTrader 5. It has 6 settings, such as Current symbol only, Magic filter and Slippage pips. MQL source code included.
Files in the download: CloseAllExceptBest.ex5, CloseAllExceptBest.mq5, CloseAllExceptBest.txt.
Trading robots can lose money. Check every setting and test on a demo account before using real funds.
Settings
| Setting | Default | What it does |
|---|---|---|
| Current symbol only | false | Restrict to this chart's symbol |
| Magic filter | -1 | Magic number (-1 takes every magic) |
| Slippage pips | 3 | Slippage tolerance, in pips |
| Max retries | 5 | Attempts per position before giving up |
| Retry wait ms | 500 | Pause between attempts, milliseconds |
| Confirm first | true | Ask for confirmation before closing |
How to install
- Download the ZIP from your PolyMaria library and unzip it.
- In MetaTrader 5 open File → Open Data Folder, then go to MQL5 → Experts.
- Copy the .mq5 file(s) there. Put any .mqh files in MQL5 → Include.
- Open the .mq5 file in MetaEditor and press Compile (F7) if MetaTrader does not show it.
- Drag the expert advisor from the Navigator onto a chart, check the settings, allow Algo/Auto Trading and press OK.
- Test it first on a demo account or in the Strategy Tester.
Tags: News Trading · MT5 Script · MQL5 Source Code