Join today
Strategies / Momentum / Market Cycle

Market Cycle Strategy

Three Stochastic lines of increasing length act as fast, medium and slow cycles. A long opens when they are stacked fast over medium over slow, the fast cycle is well above the slow one, and either the cycles are rising or volume confirms. The trade closes when the stack breaks or the fast cycle turns down.

MomentumLong onlySwingDow JonesDaily
1.62Profit factor
16,402Net profit EUR
46.39%Win rate
485Trades
-2,876Max drawdown
33.82Avg trade

Best run of 10. Dow Jones, Daily, spread 3, from run pf:2026-09-28-DOW30-D.tsv:1.

Entry rules, long

  1. Members only
  2. The fast cycle is more than 10% above the slow cycle
  3. Either the fast and medium cycles are both rising, or volume is over 1.2 times its 21-bar average on a rising fast cycle
  4. Not already in a trade

Exit rules

  1. Members only
  2. No stop loss or target

Test conditions

PeriodUp to 2026-09-28
InstrumentDow Jones, Daily
Spread3 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-28

Parameters

positionSize
Contracts per trade
1
fastCyclePeriod
Short cycle stochastic lookback
13
fastCycleSmooth
Short cycle smoothing
8
midCyclePeriod
Medium cycle lookback
21
midCycleSmooth
Medium cycle smoothing
13
slowCyclePeriod
Long cycle lookback
34
slowCycleSmooth
Long cycle smoothing
21
volumePeriod
Average volume length
21
strengthLevel
Minimum cycle strength, percent
10
volumeRatioLevel
Volume multiple of its average
1.2

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
Dow JonesBest runDaily1.62 48546.3916,402 EUR-2,876
DAX 40Daily1.46 52241.959,104 EUR-1,976
USD/JPYDailyn/a 60446.69517,220 JPY-300,850
EUR/USD2 minn/a 8,90222.71152,668 USD-89,504
Nikkei 225Dailyn/a 41444.4420,056 USD-7,132
Nasdaq 1004 hoursn/a 1,15841.717,023 EUR-3,739
Nasdaq 100Dailyn/a 39639.903,124 EUR-2,386
FTSE 100Dailyn/a 47446.202,043 EUR-1,890
S&P 500Dailyn/a 52738.711,216 EUR-581
Gold4 hoursn/a 1,21941.841,112 EUR-461

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-evenDow Jones · Daily1.62DAX 40 · Daily1.46

Net profit against max drawdown

Net profitMax drawdown
0-500K-250K500K1.0MUSD/JPY · DailyEUR/USD · 2 minNikkei 225 · DailyDow Jones · DailyDAX 40 · DailyNasdaq 100 · 4 hoursNasdaq 100 · DailyFTSE 100 · DailyS&P 500 · DailyGold · 4 hours

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.

// ============================================================
// Market Cycle
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Momentum
// Direction: Long only
// Timeframe tested: Daily
// ============================================================

// --- Settings ---
DEFPARAM CumulateOrders = false

// --- Parameters ---
positionSize = 1           // contracts per trade
fastCyclePeriod = 13       // short cycle stochastic lookback
fastCycleSmooth = 8        // short cycle smoothing
midCyclePeriod = 21        // medium cycle stochastic lookback
midCycleSmooth = 13        // medium cycle smoothing
slowCyclePeriod = 34       // long cycle stochastic lookback
slowCycleSmooth = 21       // long cycle smoothing
volumePeriod = 21          // average volume length
strengthLevel = 10         // minimum cycle strength, percent
volumeRatioLevel = 1.2     // volume must be this multiple of its average

ONCE inTrade = 0           // own position flag, as published

// --- Indicators ---
fastCycle = Stochastic[fastCyclePeriod, fastCycleSmooth](close)
midCycle = Stochastic[midCyclePeriod, midCycleSmooth](close)
slowCycle = Stochastic[slowCyclePeriod, slowCycleSmooth](close)

cyclesAligned = fastCycle > midCycle AND midCycle > slowCycle
cycleStrength = (fastCycle - slowCycle) / slowCycle * 100

fastCycleMom = fastCycle - fastCycle[1]
midCycleMom = midCycle - midCycle[1]

volumeRatio = volume / Average[volumePeriod](volume)
volumeStrength = volumeRatio * (fastCycleMom > 0)

strongCycle = cycleStrength > strengthLevel
risingMomentum = fastCycleMom > 0 AND midCycleMom > 0
volumeSurge = volumeStrength > volumeRatioLevel

17 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • The win rate is 46.39% on the best run and just 22.71% on EUR/USD 2 minutes, so most trades lose.
  • There is no stop loss. Losses are only cut when the cycles fall out of order or the fast cycle turns.
  • USD/JPY daily shows a max drawdown of JPY 300,850.00 against JPY 517,220.00 profit.
  • The exit logic keeps an operator order from the published code, so the in trade check only applies to one part of it.

Indicators used

StochasticVolume

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 written for automated trading at 1 contract, long only.

Which markets were tested?

Dow Jones daily gave profit factor 1.62 and EUR 16,402.00 over 485 trades. DAX 40 daily followed at 1.46, and every tested market ended in profit.

What drawdown should I expect?

The Dow Jones daily run had a max drawdown of EUR 2,875.70 at 1 contract.

Why daily bars?

Stochastic cycles of 13, 21 and 34 bars describe multi-week swings on daily charts. The EUR/USD 2 minute run traded 8,902 times with a low win rate.

Related

Strategies like this one

Stochastic Extreme Reversal

Uses the same indicator.

3.94 PF · 974 trades

Navigator

Best run on the same market, Dow Jones.

2.93 PF · 181 trades

Range Breakout Pending

A similar profit factor.

1.64 PF · 808 trades

Cycle-based entries are one piece of a portfolio. Join the ProRealAlgos waitlist for the rest.

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