Join today
Strategies / Breakout / Kumo ATR Breakout

Kumo ATR Breakout for S&P 500

Here the Ichimoku cloud is widened by 1 ATR(14) to make two bands. The system buys when close sits at or below the lower band while MACD, Stochastic and the 43 period EMA all point up. It exits at 60 points profit, a 100 point stop or when close crosses below the upper band.

BreakoutLong onlySwingS&P 5001 hour
1.29Profit factor
7,842Net profit EUR
65.80%Win rate
383Trades
-3,214Max drawdown
20.47Avg trade

Best run of 5. S&P 500, 1 hour, spread 1, from run pf:2026-09-16-USA500-1h.tsv:2.

Entry rules, long

  1. The MACD line (21, 44, 24) is at or above its 24-period EMA signal
  2. Stochastic %K (28, 8) is at or above its 22-period average
  3. Members only
  4. Close is at or above the 43-period EMA

Exit rules

  1. Stop loss of 100 points
  2. Profit target of 60 points
  3. Members only

Test conditions

PeriodUp to 2026-09-16
InstrumentS&P 500, 1 hour
Spread1 points
Contracts5
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-16

Parameters

positionSize
Contracts per trade, as published
5
tenkanPeriod
Ichimoku conversion line length
9
kijunPeriod
Ichimoku base line length, also the cloud shift
26
senkouPeriod
Ichimoku span B length
52
kumoAtrMultiplier
ATR multiple for the bands around the cloud level
1
atrPeriod
ATR length
14
macdFast
MACD fast length
21
macdSlow
MACD slow length
44
macdSignalPeriod
MACD signal length
24
stochPeriod
Stochastic %K length
28
stochSmooth
Stochastic %K smoothing
8
stochSignalPeriod
SMA of %K used as its signal line
22
entryOffset
Close plus this must be at or below the lower band
5
trendPeriod
EMA trend filter length
43
stopLossPoints
Protective stop (points)
100
takeProfitPoints
Profit target (points)
60

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
S&P 500Best run1 hour1.29 38365.807,842 EUR-3,214
FTSE 1004 hours1.22 19966.336,815 EUR-3,302
Gold1 hour1.22 35063.143,521 EUR-1,608
FTSE 1005 min1.21 55257.434,699 EUR-3,566
S&P 50015 min1.13 58164.033,873 EUR-3,655

Charts

Results by run

Profit factor by run

Above 1.0 made money, below 1.0 lost money.

0.00.51.01.52.01.0 = break-evenS&P 500 · 1 hour1.29FTSE 100 · 4 hours1.22Gold · 1 hour1.22FTSE 100 · 5 min1.21S&P 500 · 15 min1.13

Net profit against max drawdown

Net profitMax drawdown
0-5K-3K5K10KS&P 500 · 1 hourFTSE 100 · 4 hoursFTSE 100 · 5 minS&P 500 · 15 minGold · 1 hour

Longer history

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

On FTSE 100 5 minutes, 940,000 bars were available: the long run lost 16,497.5 EUR against a 4,699 EUR profit in the standard run, so the older data alone lost 21,196.5 EUR.

FTSE 100 · 5 min

Bars available940,000
Net, standard 200,000-bar run4,699.00 EUR
Net, long run-16,497.50 EUR
Net on the older data alone-21,196.50 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.

// ============================================================
// Kumo ATR Breakout
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Breakout
// Direction: Long only
// Timeframe tested: 1 hour
// ============================================================

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

// --- Parameters ---
positionSize = 5          // contracts per trade, as published
tenkanPeriod = 9          // Ichimoku conversion line length
kijunPeriod = 26          // Ichimoku base line length, also the cloud shift
senkouPeriod = 52         // Ichimoku span B length
kumoAtrMultiplier = 1     // ATR multiple for the bands around the cloud level
atrPeriod = 14            // ATR length
macdFast = 21             // MACD fast length
macdSlow = 44             // MACD slow length
macdSignalPeriod = 24     // MACD signal length
stochPeriod = 28          // Stochastic %K length
stochSmooth = 8           // Stochastic %K smoothing
stochSignalPeriod = 22    // SMA of %K used as its signal line
entryOffset = 5           // close plus this must be at or below the lower band
trendPeriod = 43          // EMA trend filter length
stopLossPoints = 100      // protective stop (points)
takeProfitPoints = 60     // profit target (points)

// --- Indicators ---
// Ichimoku cloud
tenkanLine = (Highest[tenkanPeriod](high) + Lowest[tenkanPeriod](low)) / 2
kijunLine = (Highest[kijunPeriod](high) + Lowest[kijunPeriod](low)) / 2
spanA = (tenkanLine[kijunPeriod] + kijunLine[kijunPeriod]) / 2
spanB = ((Highest[senkouPeriod](high[kijunPeriod])) + Lowest[senkouPeriod](low[kijunPeriod])) / 2

priceInput = CustomClose

IF priceInput >= spanA AND priceInput >= spanB THEN
  aboveCloud = 1
ELSE
  aboveCloud = 0
ENDIF

IF priceInput <= spanA AND priceInput <= spanB THEN
  belowCloud = 1
ELSE
  belowCloud = 0
ENDIF

// Inside the cloud, keep the side price came from.
IF aboveCloud[1] = 1 AND aboveCloud = 0 AND belowCloud = 0 THEN
  aboveCloud = 1
ELSIF belowCloud[1] = 1 AND belowCloud = 0 AND aboveCloud = 0 THEN
  belowCloud = 1
ENDIF

IF aboveCloud = 1 THEN
  cloudState = 1
ELSE
  cloudState = -1
ENDIF

turnedBearish = (cloudState[1] = 1 AND cloudState = -1)
turnedBullish = (cloudState[1] = -1 AND cloudState = 1)
bearishCloud = (spanA < spanB)
bullishCloud = (spanA > spanB)

// The cloud edge price just crossed becomes the reference level.
IF turnedBearish THEN
  IF bearishCloud THEN
    kumoLevel = spanA
  ELSIF bullishCloud THEN
    kumoLevel = spanB
  ENDIF
ELSIF turnedBullish THEN
  IF bearishCloud THEN
    kumoLevel = spanB
  ELSIF bullishCloud THEN
    kumoLevel = spanA
  ENDIF
ELSE
  kumoLevel = kumoLevel[1]
ENDIF

atrValue = AverageTrueRange[atrPeriod](close)
upperKumoBand = kumoLevel + (kumoAtrMultiplier * atrValue)
lowerKumoBand = kumoLevel - (kumoAtrMultiplier * atrValue)

// Momentum filters
macdMain = MACDline[macdFast, macdSlow, macdSignalPeriod](close)
macdTrigger = ExponentialAverage[macdSignalPeriod](MACDline[macdFast, macdSlow, macdSignalPeriod](close))
stochK = Stochastic[stochPeriod, stochSmooth](close)
stochSignal = Average[stochSignalPeriod](Stochastic[stochPeriod, stochSmooth](close))
trendMA = ExponentialAverage[trendPeriod](close)

17 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • It trades 5 contracts per signal, so every point counts five times. The worst drawdown on S&P 500 1 hour was 3,214.25 EUR.
  • The stop (100 points) is wider than the target (60 points). The 65.8% win rate produced a profit factor of 1.29.
  • Long only, so it has nothing to offer in a falling market.
  • Profit factors were modest across the board, from 1.13 on S&P 500 15 minutes to 1.22 on FTSE 100 4 hours and Gold 1 hour.

Indicators used

IchimokuATRMACDStochasticEMA

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 this run in ProOrder?

Yes. It is fully automated. Repeat signals do not add to an open trade, so it holds one position of 5 contracts at most.

How did it do outside the S&P 500?

FTSE 100 4 hours made 6,815 EUR and Gold 1 hour made 3,521 EUR, both with a profit factor of 1.22. FTSE 100 5 minutes reached 1.21.

What drawdown comes with 5 contracts?

On S&P 500 1 hour the worst drawdown was 3,214.25 EUR at 5 contracts, with an average trade of 20.47 EUR.

Why the 1 hour chart?

It gave the best result for the S&P 500. The 15 minute chart made 3,873.15 EUR with a similar drawdown, so the edge was thinner there.

Related

Strategies like this one

Monday Dip Buy

Uses the same indicator.

n/a PF · 146 trades

Candle Body Sum Intraday

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

2.86 PF · 124 trades

Super Smoother Trend

A similar profit factor.

1.28 PF · 801 trades

Interested in S&P 500 systems? Join the ProRealAlgos waitlist and follow what we build.

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