Why I Size Every Trade as a Fixed % of Equity (Before I Click Buy)
I have been trading for more than fifteen years. I am not going to tell you that a script or indicator will make you money — nothing on a chart does that by itself. What good tools can do is cut down on stupid mistakes: wrong lot size, stop in the wrong place, entering before you know where you are wrong. That is a modest goal, but over hundreds of trades it matters.
For me, the fractal swing — a clear local high or low on closed bars — is the smallest useful unit of structure. It is not a holy grail. It will not win every trade. But it gives you a concrete invalidation point, and that is enough to size the position and pair with other signals (trend bias, higher-timeframe confluence, whatever you already use) to close the loop: idea → stop → size → entry. This post is about the middle two steps.
Fixed lots hide your real risk
Early on I picked lots by habit. Forex 0.1, gold 0.5 — whatever felt "about right." That held until a gold stop hit much harder than I had in mind and erased several good days in one move. The setup was not the main problem. I had never tied size to the actual distance to the stop.
If you always trade the same lot size, your dollar risk changes every trade:
-
Tight stop → small loss, but you might be under-risking
-
Wide stop → the same lots can cost several times more than you expect
The order I use now:
-
Decide where the trade is wrong (stop loss)
-
Decide how much of the account you can lose if wrong (e.g. 1% of equity)
-
Calculate lots from those two numbers
In plain terms:
risk money = account equity × risk % lot size = risk money ÷ loss per lot at stop distance
On MetaTrader 5, OrderCalcProfit() is the reliable way to get "loss per lot." Tick value and contract size differ between EURUSD and XAUUSD; a hand-rolled formula can be wrong by an order of magnitude. I found that out on a demo account before it could hurt me live.
Stop placement comes first
You cannot size correctly without a defined stop. I use two modes:
Fixed pip stop
Stop is N points from entry. Simple and easy to test, but it ignores structure.
Structure-based (fractal) stop
Stop goes beyond a recent swing high (shorts) or swing low (longs), plus a small buffer. If price takes that level, the idea is invalid — no need to negotiate.
This is not the default Williams Fractals arrow on the chart. It is a closed-bar pattern that looks for a break of a local extremum. I wait for that level, then size, then click. The fractal is the anchor; it does not replace your directional view.
A practical workflow
-
Fix bias on higher timeframes (trend, range, or flat).
-
On the entry timeframe, mark the fractal invalidation level.
-
Measure entry-to-stop distance in price.
-
Set risk % (I use 1% on both demo and live as a default).
-
Compute lots — do not round up because the stop looks "too tight."
-
Send the order with stop attached.
Brokers often enforce a minimum stop distance ( STOPS_LEVEL ). The stop on the ticket may end up wider than your structural level. Lot size must use the final stop on the ticket. Otherwise you risk far more than your chosen percentage.
Gold vs forex: same rule, different lots

Example on a $100k account at 1% risk ($1,000):
| Symbol | SL distance | Approx lots @ 1% |
|---|---|---|
| EURUSD | ~18 pips | ~5–6 lots |
| XAUUSD | ~$22 | ~0.45 lots |
Same risk rule, very different lot counts. That is correct, not a bug.
What I still do not do
-
Chase losses with larger size
-
Drop the stop because the setup "looks obvious"
-
Treat a one-click script like an EA — one drag, one order, done
Tools should enforce discipline. They do not replace judgment, and they do not guarantee an edge.
Closing thought
Fifteen years in, I still think the edge is mostly boring: know where you are wrong, risk a fixed fraction of equity, execute the same way every time. Fractals give me the smallest piece of structure I trust for that. Confluence, regime filters, and timeframe alignment handle the rest of the loop.
I publish a few free utilities on my MQL5 profile — including a one-click entry script sized by risk % and a multi-timeframe confluence indicator. They mirror how I trade; they are not signals and they are not promises. If they help you avoid one sizing mistake, that is enough.
Disclaimer: Educational content only. Past performance does not guarantee future results. Test on a demo account. Trading involves risk of loss.

![[XAUUSD]: Weekly Liquidity Activation Points (timings), June 22-26, 2026 [XAUUSD]: Weekly Liquidity Activation Points (timings), June 22-26, 2026](https://c.mql5.com/6/1013/splash-preview-771790.png)
