
La stratégie est un système de trading avancé de suivi de tendance basé sur l’indicateur Supertrend, combinant plusieurs mécanismes de confirmation de signal et une gestion dynamique des positions. Le cœur de la stratégie consiste à calculer la ligne Supertrend via l’ATR (Average True Range) et à générer des signaux de trading basés sur les tendances des prix et les fenêtres de temps de détention pour obtenir une capture intelligente des tendances du marché.
La stratégie utilise un mécanisme de filtrage du signal à trois couches :
En termes de gestion du capital, la stratégie utilise 15 % des fonds propres du compte comme volume de transaction unique. Ce contrôle de position conservateur contribue à la gestion des risques.
Il s’agit d’une stratégie de suivi des tendances dotée d’une structure complète et d’une logique rigoureuse. Elle présente une bonne valeur d’application pratique grâce à de multiples mécanismes de confirmation des signaux et à un système complet de gestion des risques. La stratégie est hautement évolutive et sa stabilité et sa rentabilité peuvent être encore améliorées grâce aux orientations d’optimisation recommandées.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Strategy", overlay=true)
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step=0.01)
// Compute supertrend values
[supertrendValue, supertrendDirection] = ta.supertrend(factor, atrPeriod)
var float direction = na
if not na(supertrendDirection[1]) and supertrendDirection[1] != supertrendDirection
direction := supertrendDirection > 0 ? 1 : -1
// Variables to track conditions
var int lastShortTime = na
var int lastLongTime = na
// Detecting short and long entries
if direction == -1
strategy.entry("My Short Entry Id", strategy.short)
lastShortTime := bar_index
if direction == 1
strategy.entry("My Long Entry Id", strategy.long)
lastLongTime := bar_index
// Custom signal logic
bool bullishSignal = false
bool bearishSignal = false
// Define bullish signal conditions
if not na(lastShortTime) and (bar_index - lastShortTime >= 15 and bar_index - lastShortTime <= 19)
if close > open and close[1] > open[1] and close[2] > open[2]
bullishSignal := true
// Define bearish signal conditions
if not na(lastLongTime) and (bar_index - lastLongTime >= 15 and bar_index - lastLongTime <= 19)
if close < open and close[1] < open[1] and close[2] < open[2]
bearishSignal := true
// Plot signals
if bullishSignal
strategy.entry("Bullish Upward Signal", strategy.long)
label.new(bar_index, close, text="Bullish", style=label.style_circle, color=color.green, textcolor=color.white)
if bearishSignal
strategy.entry("Bearish Downward Signal", strategy.short)
label.new(bar_index, close, text="Bearish", style=label.style_circle, color=color.red, textcolor=color.white)
// Optionally plot the strategy equity
//plot(strategy.equity, title="Equity", color=color.red, linewidth=2, style=plot.style_areabr)