
La stratégie est un système de négociation basé sur la rupture des prix et le suivi dynamique des arrêts de perte. Il traite en surveillant les prix les plus élevés et les plus bas des N derniers cycles et en effectuant des transactions lorsque les prix franchissent ces niveaux critiques. La stratégie utilise un mécanisme de perte intelligente qui active le suivi des arrêts de perte uniquement après la réalisation d’un gain de 1%, ce qui permet au profit de se développer pleinement.
La logique fondamentale de la stratégie comprend les éléments clés suivants :
Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle, combinée à des ruptures de prix et à des arrêts dynamiques, capable à la fois de capturer les grandes tendances et de contrôler efficacement les risques. La stratégie est hautement personnalisable et peut s’adapter à différents environnements de marché grâce à l’optimisation des paramètres. Il est recommandé de commencer par des positions de petite taille dans le monde réel et de vérifier progressivement la performance de la stratégie dans différentes conditions de marché.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
//TSLA has the buest results on the 5 min or 1 hour chart
//NQ 15 minute
strategy("!! 🔥 Breakout Strategy with Trailing Stop", overlay=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=100,
pyramiding=100)
// User inputs
var int lookbackBars = input.int(10, title="Lookback Bars", minval=1)
var float breakoutThresholdPct = input.float(0.05, title="Breakout Threshold Percentage", minval=0.0001, maxval=5, step=0.01)
var float stopLossPct = input.float(0.2, title="Stop Loss Percentage", minval=0.1) / 100
// Adjusted: No longer directly using takeProfitPct for a fixed take profit level
var float trailStartPct = input.float(0.5, title="Trail Start at Profit Percentage", minval=0.001) / 100
// Tracking the last entry time
var float lastEntryTime = na
// Calculate the highest high and lowest low over the last N bars excluding the current bar
float previousHigh = ta.highest(high[1], lookbackBars)
float previousLow = ta.lowest(low[1], lookbackBars)
// Entry condition adjusted to compare current price against the previous period's high/low
bool breakoutHigh = close > previousHigh * (1 + breakoutThresholdPct / 100) and (na(lastEntryTime) or (time - lastEntryTime) > 3600000 )
bool breakoutLow = close < previousLow * (1 - breakoutThresholdPct / 100) and (na(lastEntryTime) or (time - lastEntryTime) > 3600000 )
// Execute strategy based on the breakout condition
if (breakoutHigh)
strategy.entry("Breakout Buy", strategy.long)
lastEntryTime := time
else if (breakoutLow)
strategy.entry("Breakout Sell", strategy.short)
lastEntryTime := time
// Exiting the strategy with a trailing stop that starts after reaching 1% profit
// Adjusted: Implementing a dynamic trailing stop that activates after a 1% profit
if strategy.position_size > 0
strategy.exit("Trailing Stop Exit", "Breakout Buy", trail_points = close * trailStartPct, trail_offset = close * stopLossPct)
if strategy.position_size < 0
strategy.exit("Trailing Stop Exit", "Breakout Sell", trail_points = close * trailStartPct, trail_offset = close * stopLossPct)
// Visualization for debugging and analysis
plot(previousHigh, color=color.green, linewidth=2, title="Previous High")
plot(previousLow, color=color.red, linewidth=2, title="Previous Low")
// plotshape(series=breakoutHigh, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
// plotshape(series=breakoutLow, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")