Join today
Strategies / Mean reversion / Gap Catcher

Gap Catcher: Buying Weakness Against the 5 Day Close

Gap Catcher buys when an intraday bar closes below the daily close from 5 days ago and sells once price climbs back above it. A 1% stop is placed on the entry bar. It only trades long.

Mean reversionLong onlyIntradayEUR/USD3 min
4.51Profit factor
123,862Net profit USD
74.64%Win rate
631Trades
-33,131Max drawdown
196Avg trade

Best run of 17. EUR/USD, 3 min, spread 1, from run pf:2026-09-15-EURUSD-3m.tsv:2.

Entry rules, long

  1. Members only
  2. The bar's high differs from the previous bar's low (any size move)

Exit rules

  1. Stop loss 1%
  2. Members only

Test conditions

PeriodUp to 2026-09-15
InstrumentEUR/USD, 3 minutes
Spread1 points
Contracts1
Starting capital1,000,000
CostsSpread only. Commissions and overnight financing are not included.
BarsUp to 200,000 bars, fewer where the instrument has less history
Last tested2026-09-15

Parameters

positionSize
Lots per trade
1
minGap
Minimum bar-to-bar move as a fraction
0
lookbackDays
Days back for the reference close
5
stopLossPct
Protective stop, percent
1

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
EUR/USDBest run3 min4.51 63174.64123,862 USD-33,131
EUR/USD2 min4.13 54464.7189,237 USD-33,319
EUR/USD5 min2.16 87177.1568,512 USD-33,907
EUR/USD10 min1.64 1,42680.8677,394 USD-25,468
Dow Jones2 min1.35 58184.687,098 EUR-3,933
DAX 403 min1.18 87579.774,409 EUR-3,779
Dow Jones5 min1.15 94281.428,114 EUR-7,654
S&P 5002 min1.15 66773.16593 EUR-352
Dow JonesDaily1.14 3,50234.4724,548 EUR-10,514
DAX 405 min1.13 1,13478.224,154 EUR-3,691
Dow Jones10 min1.12 1,54076.9512,873 EUR-6,685
DAX 4010 min1.11 1,74174.676,526 EUR-3,487
Dow Jones30 min1.10 1,30866.7412,871 EUR-8,354
FTSE 100Daily1.10 2,39242.986,899 EUR-2,694
Dow Jones1 hour1.09 1,07361.1411,168 EUR-9,054
Dow Jones15 min1.08 1,64271.6211,115 EUR-8,388
DAX 40Daily1.04 3,11837.464,962 EUR-4,536

Charts

Results by run

Profit factor by run

Above 1.0 made money, below 1.0 lost money.

0.01.32.53.85.01.0 = break-evenEUR/USD · 3 min4.51EUR/USD · 2 min4.13EUR/USD · 5 min2.16EUR/USD · 10 min1.64Dow Jones · 2 min1.35DAX 40 · 3 min1.18Dow Jones · 5 min1.15S&P 500 · 2 min1.15Dow Jones · Daily1.14DAX 40 · 5 min1.13Dow Jones · 10 min1.12DAX 40 · 10 min1.11Dow Jones · 30 min1.10FTSE 100 · Daily1.10Dow Jones · 1 hour1.09Dow Jones · 15 min1.08DAX 40 · Daily1.04

Net profit against max drawdown

Net profitMax drawdown
0-50K-25K100K200KEUR/USD · 3 minEUR/USD · 2 minEUR/USD · 10 minEUR/USD · 5 minDow Jones · DailyDow Jones · 10 minDow Jones · 30 minDow Jones · 1 hourDow Jones · 15 minDow Jones · 5 minDow Jones · 2 minFTSE 100 · DailyDAX 40 · 10 minDAX 40 · DailyDAX 40 · 3 minDAX 40 · 5 min

Longer history

Re-run on up to 1,000,000 bars

With 915,000 bars available on S&P 500 2 minutes, net profit turned to EUR -412.07 from EUR 593.2 in the standard run, because the older data alone lost EUR 1,005.27.

S&P 500 · 2 min

Bars available915,000
Net, standard 200,000-bar run593.20 EUR
Net, long run-412.07 EUR
Net on the older data alone-1,005.27 EUR

The code

ProBuilder, rewritten to house standard

Every file in the library uses the same header, the same section order and the same variable names. The numbers above were produced by the original version before the rewrite, and the rewrite has not yet been compiled in ProRealTime.

// ============================================================
// Gap Catcher
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long only
// Timeframe tested: 3 minutes
// ============================================================

// --- Settings ---
DEFPARAM CumulateOrders = false
DEFPARAM PreloadBars = 1000

// --- Parameters ---
positionSize = 1          // lots per trade
minGap = 0                // bar-to-bar move, as a fraction, that must be exceeded
lookbackDays = 5          // compare the close with the daily close this many days ago
stopLossPct = 1           // protective stop, percent of entry price

// --- Indicators ---
upMove = abs((high - low[1]) / low[1])
downMove = abs((low - high[1]) / high[1])
pastClose = DClose(lookbackDays)

17 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • Drawdowns are large on the forex runs: 33,131 USD on EUR/USD 3 minutes against 123,862 USD of profit.
  • With minGap at 0 the move filter passes on almost every bar, so the gap part of the name does little in practice.
  • The stop is only set on the entry bar, as in the original code, so later bars in the trade may not carry it.
  • Profit factors on the index runs are thin, for example 1.04 on DAX 40 Daily and 1.08 on Dow Jones 15 minutes.

How to load it

  1. Copy the code with the copy button above the code block.
  2. In ProRealTime, open a chart of the instrument and timeframe you want to test, then open ProOrder > New trading system and choose "Create with programming".
  3. Paste the code, give the system a name and save it.
  4. Click "Backtest", set your own spread and position size, and run it before you consider trading it live.

Questions

About this strategy

Can I run it in ProOrder?

Yes, it is fully automated and long only. Because the stop is set only on the entry bar, check that your protection stays in place in demo before going live.

How did it do on different instruments?

EUR/USD 3 minutes led with 123,862 USD over 631 trades and a 74.64% win rate. Every run in the table was profitable, across EUR/USD, Dow Jones, DAX 40, FTSE 100 and S&P 500.

How much drawdown at 1 contract?

With 1 contract and a 1 point spread, EUR/USD 3 minutes dropped 33,131 USD from peak. S&P 500 on 2 minutes had a much smaller 351.70 EUR drawdown.

Why short intraday bars?

The rule compares each bar with a fixed daily level, so faster bars catch the dip sooner. The 2 and 3 minute EUR/USD charts gave the highest profit factors.

Related

Strategies like this one

Slow MACD Slope

Best run on the same market, EUR/USD.

6.80 PF · 7,305 trades

Turn Of The Month

A similar profit factor.

4.86 PF · 47 trades

Monday Dip Buy

Also a mean reversion strategy.

n/a PF · 146 trades

Want to see how this fits a wider portfolio? Put your name on the ProRealAlgos waitlist.

The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.

Past backtest results do not guarantee future results. This is not financial advice. Curated and maintained by ProRealAlgos. ProRealTime™ is a trademark of ProRealTime SAS. prorealalgos.comStatsDocs