Join waitlist
Strategies / Trend / EMA Crossover With Bollinger Stop

EMA Crossover With Bollinger Stop

A long-only trend system that buys when the 20-period EMA crosses above the 50-period EMA. It exits when the EMAs cross back down or when a bar low reaches the lower Bollinger Band recorded at entry.

TrendLong onlySwingNasdaq 100Daily
3.55Profit factor
20,689Net profit EUR
49.00%Win rate
100Trades
-3,270Max drawdown
207Avg trade

Best run of 41. Nasdaq 100, Daily, spread 3, from run pf:2026-10-11-NAS100-D.tsv:8.

Entry rules, long

  1. The lower Bollinger Band (20, 2) on this bar becomes the stop level.
  2. A long is entered at market only when no long is open.

Exit rules

  1. The long closes at market when a bar low is at or below the stop level from the signal bar.

Test conditions

PeriodUp to 2026-10-11
InstrumentNasdaq 100, Daily
Spread3 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-12

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
Nasdaq 100Best runDaily3.55 10049.0020,689 EUR-3,270
Nikkei 2254 hours1.74 24537.9638,580 USD-7,742
Nasdaq 10030 min1.19 1,83632.1913,289 EUR-3,266
USD/JPYDailyn/a 11533.911,165,460 USD-520,750
USD/JPY30 minn/a 1,83130.42770,930 USD-198,380
USD/JPY1 hourn/a 1,34031.72544,620 USD-376,010
USD/JPY15 minn/a 1,89231.03390,650 USD-142,580
USD/JPY10 minn/a 1,90329.85350,490 USD-115,020
EUR/USD2 minn/a 2,08722.4784,024 USD-76,572
EUR/USDDailyn/a 12632.5458,672 USD-43,952
Nikkei 225Dailyn/a 10532.3847,512 USD-13,427
Nikkei 2251 hourn/a 97430.1822,405 USD-12,182
Dow JonesDailyn/a 14233.1021,199 EUR-8,049
Nikkei 2252 minn/a 1,84229.4816,198 USD-8,059
Nikkei 2253 minn/a 1,90629.0113,312 USD-7,664
Dow Jones30 minn/a 75631.3511,774 EUR-6,206
Nasdaq 1004 hoursn/a 31236.2211,284 EUR-5,188
Nasdaq 1001 hourn/a 1,12032.7710,957 EUR-4,438
US Crude OilDailyn/a 10636.7910,728 EUR-5,029
DAX 40Dailyn/a 14535.8610,546 EUR-4,857
Nasdaq 1005 minn/a 1,86829.289,302 EUR-4,100
Dow Jones4 hoursn/a 10439.428,504 EUR-6,118
DAX 4030 minn/a 1,85730.108,174 EUR-5,190
Nasdaq 10015 minn/a 1,88430.157,323 EUR-3,586
DAX 404 hoursn/a 32231.996,876 EUR-4,178
Nasdaq 10010 minn/a 1,87028.666,702 EUR-4,418
Brent CrudeDailyn/a 4936.736,029 EUR-5,827
DAX 4010 minn/a 1,92228.725,056 EUR-3,224
DAX 4015 minn/a 1,88128.074,533 EUR-4,170
S&P 500Dailyn/a 14537.934,315 EUR-1,129
GoldDailyn/a 13334.593,066 EUR-1,191
Gold30 minn/a 1,89527.923,022 EUR-765
Gold1 hourn/a 1,12531.472,459 EUR-1,290
S&P 5004 hoursn/a 30237.092,231 EUR-971
Gold10 minn/a 1,94426.752,000 EUR-833
Gold4 hoursn/a 31130.231,856 EUR-1,563
S&P 5001 hourn/a 1,15834.461,495 EUR-969
Gold15 minn/a 1,93327.831,485 EUR-855
Gold5 minn/a 1,96929.361,452 EUR-704
S&P 50030 minn/a 1,85531.371,439 EUR-936
Gold3 minn/a 2,00827.391,066 EUR-614

Charts

Results by run

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

Above 1.0 made money, below 1.0 lost money.

The code

ProBuilder code, as tested

// ==============================================================
// EMA Crossover With Bollinger Stop
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Trend
// Direction: Long only
// Timeframe tested: Daily
// ==============================================================

DEFPARAM CumulateOrders = false

ONCE sl = 0

emaf = ExponentialAverage[20](close)
emas = ExponentialAverage[50](close)
bblower = Average[20](close) - 2 * STD[20](close)

13 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

EMABollinger BandsStandard Deviation
Longer historyRe-run on up to 1,000,000 barsNasdaq 100 · Daily · older data 0.00 EUR

Nasdaq 100 had no history beyond the standard run, so both runs used 10,000 bars.

Nasdaq 100 · Daily

Bars available10,000
Net, standard 200,000-bar run20,689.30 EUR
Net, long run20,689.30 EUR
Net on the older data alone0.00 EUR
Read this firstKnown weaknesses2 points
  • Results include the spread only. Commissions and overnight financing are not included.
  • The code is published as it was backtested and has not been compiled again since.

Questions

About this strategy

Can I run EMA Crossover With Bollinger Stop 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 41 market and timeframe combinations. The best run was Nasdaq 100, Daily, with a profit factor of 3.55 over 100 trades.

How large was the drawdown?

The best run had a maximum drawdown of 3,270 EUR at the tested position size, against a net result of 20,689 EUR.

Does it trade long, short or both?

It only takes long trades.

Related

Strategies like this one

Reversal Pattern With Chaikin Volatility

Uses the same indicator.

2.26 PF · 6,872 trades

Volatility Spike Regression Long

Best run on the same market, Nasdaq 100.

1.22 PF · 1,850 trades

SMA Crossover With Trailing Stop

Also a trend strategy.

3.58 PF · 1,730 trades

Put your name on the ProRealAlgos waitlist to trade a tested portfolio instead of single strategies.

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