Join waitlist
Strategies / Mean reversion / MACD Crossover Bollinger RSI Filter

MACD Crossover Bollinger RSI Filter

The strategy buys when the MACD line crosses above its 9 period signal line while RSI is below 50 and price is below the 20 period average. It sells when RSI is above 70 and price closes above the upper Bollinger Band.

Mean reversionLong onlyIntradayS&P 50030 min
1.48Profit factor
4,673Net profit EUR
71.61%Win rate
796Trades
-1,024Max drawdown
5.87Avg trade

Best run of 35. S&P 500, 30 min, spread 1, from run pf:2026-10-10-USA500-30m.tsv:1.

Entry rules, long

  1. The 14 period RSI is below 50.
  2. The close is below the 20 period simple moving average, the Bollinger basis.

Exit rules

  1. The 14 period RSI is above 70 and the close is above the upper Bollinger Band (20 periods, 2 standard deviations).

Test conditions

PeriodUp to 2026-10-10
InstrumentS&P 500, 30 minutes
Spread1 points
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-10-10

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
S&P 500Best run30 min1.48 79671.614,673 EUR-1,024
Nikkei 2251 hourn/a 42871.7341,468 USD-10,828
Nikkei 22510 minn/a 83468.9439,251 USD-10,270
Nikkei 2254 hoursn/a 10572.3829,223 USD-8,960
EUR/USD15 minn/a 80564.7228,577 USD-15,797
Dow JonesDailyn/a 4686.9627,574 EUR-11,142
Nikkei 22515 minn/a 82267.0323,393 USD-10,248
Dow Jones15 minn/a 65871.4320,231 EUR-9,149
Dow Jones1 hourn/a 19073.6817,951 EUR-9,739
Nasdaq 10030 minn/a 80171.0415,035 EUR-4,210
Nasdaq 100Dailyn/a 3786.4914,436 EUR-4,516
DAX 40Dailyn/a 5275.0013,314 EUR-5,475
Dow Jones30 minn/a 34471.8012,768 EUR-8,023
Nikkei 22530 minn/a 78865.2312,361 USD-10,219
Nasdaq 1004 hoursn/a 12775.5911,548 EUR-5,693
Nasdaq 10015 minn/a 79069.4910,213 EUR-5,498
DAX 404 hoursn/a 12171.909,818 EUR-4,306
Dow Jones10 minn/a 77570.459,570 EUR-6,812
Nasdaq 1001 hourn/a 55570.099,189 EUR-5,453
Dow Jones4 hoursn/a 4271.438,993 EUR-8,850
DAX 4030 minn/a 81968.137,391 EUR-6,094
FTSE 10030 minn/a 80869.316,120 EUR-2,635
FTSE 100Dailyn/a 3683.335,940 EUR-3,289
DAX 4010 minn/a 77668.695,257 EUR-3,890
S&P 5004 hoursn/a 12176.034,521 EUR-1,205
FTSE 1001 hourn/a 46671.243,727 EUR-2,973
S&P 5001 hourn/a 55273.373,451 EUR-1,283
S&P 500Dailyn/a 4782.983,398 EUR-1,124
Dow Jones1 minn/a 72668.602,907 EUR-2,469
S&P 50015 minn/a 78670.742,794 EUR-1,099
FTSE 10010 minn/a 76268.772,334 EUR-1,296
FTSE 1005 minn/a 77766.152,253 EUR-879
S&P 50010 minn/a 75969.431,697 EUR-1,025
Gold1 hourn/a 53166.48980 EUR-914
S&P 5001 minn/a 65468.35500 EUR-454

Charts

Results by run

Top 10 of 35 runs. The full list is in the table above.

Net profitMax drawdown

The code

ProBuilder code, as tested

// ==============================================================
// MACD Crossover Bollinger RSI Filter
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long only
// Timeframe tested: 30 minutes
// ==============================================================

DEFPARAM CumulateOrders = false

myMacd = ExponentialAverage[12](close) - ExponentialAverage[26](close)
signal = ExponentialAverage[9](myMacd)
basis = Average[20](close)
upper = basis + 2 * STD[20](close)
myRsi = RSI[14](close)

12 more lines: the entry and exit rules.

Setup

How to load it

  1. Copy the code with the copy button on 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.

Indicators used

MACDRSIBollinger BandsSMA
Longer historyRe-run on up to 1,000,000 barsS&P 500 · 30 min · older data -466.00 EUR

On the long run with 228,000 bars the net result was 4,207 EUR, against 4,673 EUR on the standard 200,000-bar run. The older data alone gave -466 EUR.

S&P 500 · 30 min

Bars available228,000
Net, standard 200,000-bar run4,673.44 EUR
Net, long run4,207.44 EUR
Net on the older data alone-466.00 EUR
Read this firstKnown weaknesses2 points
  • The code sets no stop loss, so a losing trade stays open until an exit signal arrives.
  • On the older part of the 1,000,000-bar history it lost -466 EUR.

Questions

About this strategy

Can I run MACD Crossover Bollinger RSI Filter in ProOrder?

Yes. The code is ProBuilder and runs as an automated ProOrder system. Backtest it on your own account with your own spread and position size before trading it live.

Which markets was it tested on?

It was tested on 35 market and timeframe combinations. The best run was S&P 500, 30 minutes, with a profit factor of 1.48 over 796 trades.

How large was the drawdown?

The best run had a maximum drawdown of 1,024 EUR at the tested position size, against a net result of 4,673 EUR.

Does it trade long, short or both?

It only takes long trades.

Related

Strategies like this one

Trend Surfer

Uses the same indicator.

1.04 PF · 10,813 trades

CCI Sign With EMA Alignment

Best run on the same market, S&P 500.

1.23 PF · 1,253 trades

Trend Pullback Reversal

Also a mean reversion strategy.

1.47 PF · 849 trades

Get the full rules, the complete code and the ProRealAlgos portfolio as a member.

Copy trading on US indices is available to ProRealAlgos members as spots open.

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