Rejoindre la liste d'attente
Stratégies / Breakout / Trend Breakout

Trend Breakout

Un sommet fractal démarre une ligne de tendance descendante, et une cassure en deux étapes de cette ligne arme un buy stop 0.3 ATR(7) au-dessus du plus haut récent. Les sorties utilisent une bande exponentielle et le RSI(2), fermant les longs dès que le RSI est à 85 ou plus et que le prix est repassé sous la bande supérieure. Les shorts suivent la logique en miroir.

BreakoutLong & shortSwingUSD/JPY4 heures
n/aProfit factor
161,440Gain net JPY
53.36%Taux de réussite
819Trades
-93,910Max drawdown
197Trade moyen

Meilleure exécution sur 8. USD/JPY, 4 heures, spread 1, d'après l'exécution sweeps:2026-09-17-USDJPY-4h-opt.tsv:2.

Règles d'entrée, long

  1. Un sommet fractal (un bar plus haut que les deux bars de chaque côté) démarre une ligne de tendance descendante
  2. Un buy stop est placé 0.3 ATR(7) au-dessus du plus haut des 2 derniers bars et replacé à chaque bar tant que la cassure tient

Règles d'entrée, short

  1. Un creux fractal démarre une ligne de tendance ascendante
  2. Un sell stop est placé 0.3 ATR(7) en dessous du plus bas des 2 derniers bars et replacé à chaque bar tant que la cassure tient

Règles de sortie

  1. Pas de stop loss ni d'objectif fixes
  2. Une sortie de long est armée quand le prix retombe à l'intérieur de la bande exponentielle supérieure (34, 1.618 déviations) ou fait un nouveau plus haut ou plus bas à 100 bars
  3. Les shorts font l'inverse avec la bande inférieure et le RSI(2) à 15 ou moins

Conditions de test

PériodeJusqu'au 2026-09-17
InstrumentUSD/JPY, 4 heures
Spread1 points
Contrats1
Capital de départ1,000,000
CoûtsSpread uniquement. Les commissions et le financement overnight ne sont pas inclus.
BarresJusqu'à 200,000 barres, moins lorsque l'instrument a moins d'historique
Dernier test2026-09-17
Paramètres (12)
positionSize
Contrats par trade
1
fractalBars
Bars que le centre du fractal à 5 bars doit dépasser (structurel, garder à 4)
4
breakoutBars
Bars utilisés pour le plus haut ou plus bas du breakout
2
atrPeriod
Période de l'ATR pour la marge d'entrée
7
atrMultiplier
Marge d'entrée au-delà du niveau de breakout, en ATR
0.3
bandPeriod
Longueur des bandes exponentielles de log-prix
34
seedPeriod
Période de la SMA utilisée pour initialiser les bandes sur les premiers bars
3
bandWidth
Largeur des bandes en écarts-types
1.618
rsiPeriod
Période du RSI pour la sortie
2
overboughtLevel
Niveau de RSI requis pour une sortie de long
85
oversoldLevel
Niveau de RSI requis pour une sortie de short
15
lookbackPeriod
Fenêtre pour le plus haut et le plus bas de swing précédents
100

Chaque exécution

Marchés et unités de temps testés

MarchéUnité de tempsPFTrades% de réussiteNetMax DD
USD/JPYMeilleure exécution4 heuresn/a 81953.36161,440 JPY-93,910
USD/JPYJournaliern/a 30059.00754,540 JPY-174,840
Nikkei 225Journaliern/a 26261.0720,201 USD-12,694
ArgentJournaliern/a 25550.598,055 USD-2,895
Pétrole BrentJournaliern/a 11960.504,755 EUR-4,645
GBP/USDJournaliern/a 33459.883,432 USD-2,003
FTSE 100Journaliern/a 29754.552,325 EUR-948
OrJournaliern/a 28755.05624 EUR-317

Graphiques

Résultats par exécution

Gain netMax drawdown

Le code

ProBuilder, réécrit selon le standard maison

// ============================================================
// Trend Breakout
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Breakout
// Direction: Long & short
// Timeframe tested: 4 hours
// ============================================================

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

// --- Parameters ---
positionSize = 1          // contracts per trade
fractalBars = 4           // bars the centre of the 5-bar fractal must beat, keep at 4
breakoutBars = 2          // bars for the breakout high / low
atrPeriod = 7             // ATR length for the entry buffer
atrMultiplier = 0.3       // entry buffer beyond the breakout level, in ATRs
bandPeriod = 34           // length of the log-price exponential bands
seedPeriod = 3            // SMA used to seed the bands on early bars
bandWidth = 1.618         // band width in standard deviations
rsiPeriod = 2             // RSI length for the exit
overboughtLevel = 85      // long exit needs RSI at or above this
oversoldLevel = 15        // short exit needs RSI at or below this
lookbackPeriod = 100      // window for the prior swing high / low

// State, seeded so every value is defined on the first bar.
ONCE fractalHighCount = 0
ONCE fractalLowCount = 0
ONCE trendBreak = 0
ONCE bearSetup = 0
ONCE bullSetup = 0
ONCE fractalHigh = 0
ONCE fractalLow = 0
ONCE fractalBar = 0
ONCE trendHeight = 0
ONCE closeHeight = 0
ONCE maxAngle = 0
ONCE logEma = 0
ONCE logVariance = 0
ONCE longExitArmed = 0
ONCE shortExitArmed = 0

// --- Indicators ---
// Count how many of the last five bars the bar two back beats.
FOR i = 0 TO fractalBars DO
  IF high[2] > high[i] THEN
    fractalHighCount = fractalHighCount + 1
  ENDIF
  IF low[2] < low[i] THEN
    fractalLowCount = fractalLowCount + 1
  ENDIF
NEXT

// A fractal high starts a bearish trend line, a fractal low a bullish one.
IF fractalHighCount = fractalBars THEN
  IF bearSetup = 0 AND bullSetup = 0 THEN
    bearSetup = 1
  ENDIF
  fractalHigh = high[2]
  fractalBar = BarIndex - 2
ENDIF
IF fractalLowCount = fractalBars THEN
  IF bearSetup = 0 AND bullSetup = 0 THEN
    bullSetup = 1
  ENDIF
  fractalLow = low[2]
  fractalBar = BarIndex - 2
ENDIF
fractalHighCount = 0
fractalLowCount = 0

IF bearSetup = 1 THEN
  trendHeight = fractalHigh - high
  closeHeight = fractalHigh - close
ELSIF bullSetup = 1 THEN
  trendHeight = low - fractalLow
  closeHeight = close - fractalLow
ENDIF

// Track the steepest angle of the trend line from the fractal, then detect
// a two-step break of that line (trendBreak 1, then 2).
IF BarIndex - 2 = fractalBar THEN
  maxAngle = Tan(2 / trendHeight)
ENDIF
IF BarIndex - 2 > fractalBar THEN
  IF bearSetup = 1 THEN
    IF Tan((BarIndex - fractalBar) / trendHeight) > maxAngle AND (close < open OR close < close[1]) THEN
      maxAngle = Tan((BarIndex - fractalBar) / trendHeight)
      trendBreak = 0
    ENDIF
    IF trendBreak = 0 AND Tan((BarIndex - fractalBar) / closeHeight) > maxAngle AND close > open THEN
      trendBreak = 1
    ELSIF trendBreak = 1 AND Tan(((BarIndex - 1) - fractalBar) / closeHeight) > maxAngle AND close > close[1] THEN
      trendBreak = 2
    ENDIF
  ELSIF bullSetup = 1 THEN
    IF Tan((BarIndex - fractalBar) / trendHeight) > maxAngle AND (close > open OR close > close[1]) THEN
      maxAngle = Tan((BarIndex - fractalBar) / trendHeight)
      trendBreak = 0
    ENDIF
    IF trendBreak = 0 AND Tan((BarIndex - fractalBar) / closeHeight) > maxAngle AND close < open THEN
      trendBreak = 1
    ELSIF trendBreak = 1 AND Tan(((BarIndex - 1) - fractalBar) / closeHeight) > maxAngle AND close < close[1] THEN
      trendBreak = 2
    ENDIF
  ENDIF
ENDIF

atrValue = AverageTrueRange[atrPeriod](close)

67 lignes de plus : les règles d'entrée et de sortie.

Configuration

Comment la charger

  1. Copiez le code avec le bouton Copier du bloc de code.
  2. Dans ProRealTime, ouvrez un graphique de l'instrument et de l'unité de temps que vous voulez tester, puis ouvrez ProOrder > Nouveau système de trading et choisissez "Créer par programmation".
  3. Collez le code, donnez un nom au système et enregistrez-le.
  4. Cliquez sur "Backtest", définissez votre propre spread et votre position size, puis lancez-la avant d'envisager de la trader en réel.

Indicateurs utilisés

ATRRSIBandes de Bollinger
À lire d'abordFaiblesses connues3 points
  • Pas de stop loss ni d'objectif fixes. Les sorties dépendent uniquement des conditions de bande et de RSI.
  • L'indicateur de sortie armée n'est jamais réinitialisé une fois activé, donc après la première sortie armée la condition de bande n'a plus d'importance.
  • Le profit factor n'a été enregistré pour aucun marché. La meilleure exécution sur USD/JPY 4 heures a rapporté JPY 161,440 avec un max drawdown de JPY 93,910.

Questions

À propos de cette stratégie

Trend Breakout peut-elle tourner dans ProOrder ?

Oui, les entrées sont des ordres stop en attente valables pour un bar. Le code a été réécrit mais pas vérifié à la compilation, et les statistiques proviennent de la version antérieure.

Quels ont été les résultats par marché ?

Les sept lignes étaient profitables. USD/JPY journalier a rapporté JPY 754,540 sur 300 trades, et Nikkei 225 journalier USD 20,201.20.

Combien de drawdown par contrat ?

Avec 1 contrat, la meilleure exécution a eu un max drawdown de JPY 93,910. Gold journalier était bien plus faible à EUR 317.10.

Pourquoi des barres de 4 heures et journalières ?

Les lignes de tendance tracées depuis des fractals ont besoin d'assez de bars entre les points de swing. Chaque ligne testée utilisait des bars de 4 heures ou journaliers.

Voir aussi

Des stratégies comme celle-ci

Bollinger Squeeze

Utilise le même indicateur.

14.30 PF · 86 trades

Supertrend Counter Trend

Meilleure exécution sur le même marché, USD/JPY.

3.47 PF · 1,444 trades

Breakout Regime Filter

Également une stratégie breakout.

6.28 PF · 70 trades

Les cassures de lignes de tendance sont difficiles à coder à la main. Découvrez comment nous testons des idées comme celle-ci dans la communauté ProRealAlgos.

La communauté ProRealAlgos obtient les règles complètes, le code complet et le portefeuille automatisé.

Les résultats passés de backtest ne garantissent pas les résultats futurs. Ceci n'est pas un conseil financier. Sélectionné et maintenu par ProRealAlgos. ProRealTime™ est une marque de ProRealTime SAS. prorealalgos.comStatsDocumentation