Skip to content
PipFixAlgo

Price action · EA-034 · v1.00

PipFix SmcFairValueGap

Trades the fill of a fair value gap left by an impulsive move

PipFix SmcFairValueGap

Backtest

XAUUSD · M15 · 2024-09-01 to 2026-09-01

Published · not all gate criteria met
Net profit
$6,700
Profit factor
1.12
Relative drawdown
17.78%
Trades
1585
Win rate
69.15%
Modelling quality
98%

Test conditions. Symbol XAUUSD, timeframe M15, 2024-09-01 to 2026-09-01, initial balance $10,000, spread 1 minute OHLC, modelling quality 98%, run on Exness-MT5Real39. Past results do not predict future results.

Publish gate

CriterionMeasuredNeedsResult
Closed trades ≥ 80 1585 trades >= 80 Pass
Profit factor ≥ 1.15 1.120 >= 1.15 Fail
Relative drawdown ≤ 25% 17.78% <= 25% Pass
Modelling quality ≥ 90% 98.00% >= 90% Pass
Out-of-sample not a catastrophe true true in stats.json Pass
Curve not carried by one trade true true in stats.json Pass

Download

The EA and its set file are free. You just need to be signed in. There is no payment, no checkout and no licence for anything in this library. An account exists so downloads can be rate limited, and so you can be told when an EA you have taken is updated.

Sign in Create a free account

Waiting behind the sign-in: ea.ex5 · PipFix_SmcFairValueGap_XAUUSD_M15_BACKTESTED.set

Limitations

Walk-forward validated on XAUUSD M15 only. Tested at 1% risk per trade on Exness data with 1 minute OHLC modelling; a different broker will give different results.

How it works

# PipFix SmcFairValueGap

**Trades the fill of a fair value gap left by an impulsive move**

* Product name: `PipFixSmcFairValueGap`
* File: `PipFix_SmcFairValueGap.mq5`
* Category: Smart Money Concepts
* Default timeframe: M15
* Validated on: **XAUUSD M15** (this is the only symbol it was walk-forward tested on)
* Magic number: 8850202
* Martingale / grid / averaging: **NO - none, ever**
* Stop Loss + Take Profit: **attached to every order at the moment it is opened**
* Branding: `pipfixalgo.com` watermark locked to the chart

---

## 1. What this robot does

A fair value gap is a three-candle imbalance: price moved so fast that the wicks of the first and third candle never overlap, leaving a window with no trading in it. Price tends to come back and fill that window. The robot scans for unfilled gaps and takes the trade as price re-enters one, in the direction of the prevailing trend.

## 2. Exact trading rules

1. Bullish gap: the high of the first candle is below the low of the third.
2. The gap must be at least 0.35 x ATR wide, otherwise it is noise.
3. Gaps older than 25 bars are discarded.
4. BUY when price re-enters a bullish gap while above the 100 EMA; SELL on the mirror.
5. Stop Loss 1.5 x ATR, Take Profit 2.6 x ATR, ATR trailing enabled.

## 3. Risk management built in

| Protection | What it does |
|---|---|
| Percent risk sizing | Lot size is calculated from `InpRiskPercent` and the real stop distance, so every trade risks the same fraction of the balance. |
| Fixed lot mode | Set `InpUseRiskPercent = false` to use `InpFixedLot` instead. |
| Hard lot cap | `InpMaxLot` can never be exceeded, whatever the balance. |
| One position rule | `InpMaxOpenTrades` (default 1) - no stacking, no averaging down. |
| Daily loss stop | Trading halts for the rest of the day after `InpDailyLossStopPct` percent loss. |
| Daily trade cap | `InpMaxTradesPerDay` limits overtrading (0 = unlimited). |
| Spread guard | No entry while spread is above `InpMaxSpreadPoints`. |
| Break-even | Stop moves to entry after `InpBE_ATR` x ATR of profit. |
| ATR trailing stop | Locks in profit as the move extends. |

**No martingale guarantee.** The position size function of this EA reads only the account balance, the
risk percent and the stop distance. It never reads the result of the previous trade, so a loss can
never increase the next lot size. There is no grid, no hedge basket and no recovery multiplier
anywhere in the code.

## 4. Parameters

| Parameter | Default | Meaning |
|---|---|---|
| `InpTF` | `15` | Working timeframe |
| `InpAllowLong` | `true` | Allow BUY trades |
| `InpAllowShort` | `true` | Allow SELL trades |
| `InpUseStrategyExit` | `false` | Close early on opposite signal |
| `InpMaxAge` | `25` | How many bars back a gap stays valid |
| `InpMinGapATR` | `0.35` | Gap must be at least ATR x this |
| `InpNeedTrend` | `true` | Only trade gaps in the direction of the 100 EMA |
| `InpTrendEMA` | `100` | Trend EMA period |
| `InpUseRiskPercent` | `true` | Size position from % risk (false = fixed lot) |
| `InpRiskPercent` | `1.0` | Risk per trade, % of balance |
| `InpFixedLot` | `0.10` | Fixed lot when % risk is off |
| `InpMaxLot` | `5.0` | Hard maximum lot |
| `InpMaxOpenTrades` | `1` | Max simultaneous positions of this EA |
| `InpMaxTradesPerDay` | `0` | Max entries per day (0 = unlimited) |
| `InpDailyLossStopPct` | `5.0` | Stop for the day after this % loss (0 = off) |
| `InpATRPeriod` | `14` | ATR period for stops |
| `InpSL_ATR` | `1.5` | Stop Loss = ATR x this |
| `InpTP_ATR` | `2.6` | Take Profit = ATR x this |
| `InpMinSLPoints` | `80` | Minimum SL distance in points |
| `InpUseBreakEven` | `true` | Move SL to break-even |
| `InpBE_ATR` | `1.0` | Break-even trigger = ATR x this |
| `InpUseTrailing` | `true` | ATR trailing stop |
| `InpTrail_ATR` | `1.5` | Trailing distance = ATR x this |
| `InpMaxSpreadPoints` | `30` | Max allowed spread in points |
| `InpUseTimeFilter` | `false` | Restrict trading hours (server time) |
| `InpStartHour` | `7` | Trading start hour |
| `InpEndHour` | `20` | Trading end hour |
| `InpAvoidFriday` | `false` | No new trades on Friday |
| `InpMagic` | `8850202` | Magic number - keep unique per chart |
| `InpTradeComment` | `PipFix SmcFairValueGap` | Order comment |
| `InpSlippage` | `20` | Max deviation in points |

## 5. Installation

The robot ships **compiled**. There is nothing to build and no source file to copy.

1. In MetaTrader 5: **File -> Open Data Folder** -> open `MQL5\Experts\` -> create a folder `PipFix`
2. Copy **`PipFix_SmcFairValueGap.ex5`** into it
3. Refresh the **Navigator** panel (right-click -> Refresh), then drag **PipFix SmcFairValueGap** onto a
**M15** chart of **XAUUSD**
4. On the **Common** tab tick **Allow Algo Trading**
5. On the **Inputs** tab press **Load** and select
**`Settings/PipFix_SmcFairValueGap_XAUUSD_M15_BACKTESTED.set`**
(or the `_LOWRISK` version for half the risk)
6. Make sure the **Algo Trading** button in the toolbar is green

## 6. How to reproduce the backtest

1. **View -> Strategy Tester** (Ctrl+R).
2. Expert: `PipFix\PipFix_SmcFairValueGap`, Symbol: **XAUUSD**, Period: **M15**.
3. Modelling: *Every tick based on real ticks* (or *1 minute OHLC* for a fast first pass).
4. Set the date range, deposit and leverage you want to publish, load the `.set` file, press **Start**.
5. When it finishes, open the **Backtest** tab, right-click -> **Report** to save the HTML/XML report.

The measured results for this EA are in `Backtest/BACKTEST_RESULTS.md` in this folder, together with
the report screenshots. Those numbers come from an actual Strategy Tester run - the settings, symbol,
period and date range used are printed at the top of that file so anyone can repeat it.

## 7. Honest notes

* Past backtest performance is not a promise of future results. Spread, swap and execution differ
between brokers, and a different broker will produce a different curve.
* This robot trades one position at a time with a fixed stop. It is designed to survive, not to
produce a straight equity line.
* Use it on a demo account for at least a few weeks before risking real money.

---

(c) pipfixalgo.com - PipFix SmcFairValueGap v1.00

**Best conditions:** M15 on gold and indices, where impulsive moves leave the cleanest gaps.

Back to the library