Algorithme de combinaison dynamique de la stratégie de trading de tendance Supertrend sur plusieurs périodes

ATR MTF EMA RSI
Date de création: 2025-01-06 16:38:12 Dernière modification: 2025-01-06 16:38:12
Copier: 2 Nombre de clics: 482
1
Suivre
1617
Abonnés

Algorithme de combinaison dynamique de la stratégie de trading de tendance Supertrend sur plusieurs périodes

Aperçu

La stratégie est un système de suivi de tendance adaptatif basé sur l’indicateur Supertrend à périodes multiples. Il construit un cadre complet d’identification des tendances en intégrant les signaux Supertrend de trois périodes différentes : 15 minutes, 5 minutes et 2 minutes. La stratégie utilise des filtres temporels pour garantir qu’elle s’exécute uniquement pendant les heures de trading les plus actives et ferme automatiquement les positions à la fin de la journée pour éviter les risques pendant la nuit.

Principe de stratégie

Le cœur de la stratégie consiste à confirmer les signaux de trading grâce à la cohérence des tendances sur plusieurs périodes. Spécifiquement:

  1. La ligne Supertrend est calculée pour chaque période à l’aide de la période ATR et du facteur de multiplication.
  2. Un achat est déclenché lorsque des signaux haussiers apparaissent sur les trois périodes (le prix est supérieur à la ligne Supertrend).
  3. Une vente est déclenchée lorsque le prix tombe en dessous de la ligne Supertrend de 5 minutes ou atteint la fin de la journée de négociation.
  4. Contrôlez les heures de trading en définissant le fuseau horaire et le filtre de session de trading (par défaut 09h30-15h30).

Avantages stratégiques

  1. La confirmation de tendance multidimensionnelle améliore la fiabilité du signal et réduit efficacement le risque de fausses percées.
  2. Les paramètres adaptatifs de Supertrend permettent à la stratégie de s’adapter à différents environnements de volatilité du marché.
  3. Un mécanisme strict de gestion du temps évite les interférences causées par des périodes de négociation inefficaces.
  4. L’interface visuelle claire montre l’état des tendances de toutes les périodes.
  5. Le système de gestion de position flexible prend en charge la configuration en pourcentage.

Risque stratégique

  1. Dans un marché latéral et volatil, trop de signaux de trading peuvent être générés, augmentant les coûts de transaction.
  2. Des conditions de filtrage multiples peuvent entraîner la perte de certaines opportunités potentiellement rentables.
  3. Cela dépend de l’optimisation des paramètres et différents environnements de marché peuvent nécessiter un ajustement des paramètres.
  4. La complexité de calcul est élevée et il peut y avoir des problèmes avec l’efficacité de l’exécution du programme.

Orientation de l’optimisation de la stratégie

  1. Introduisez un mécanisme adaptatif de volatilité pour ajuster dynamiquement les paramètres de Supertrend en fonction des conditions du marché.
  2. Ajoutez des indicateurs de confirmation de volume pour améliorer la précision du jugement de tendance.
  3. Développez des algorithmes de filtrage temporel intelligents pour identifier automatiquement les meilleures heures de trading.
  4. Optimisez les algorithmes de gestion de position pour obtenir un contrôle des risques plus sophistiqué.
  5. Ajoutez un module de classification de l’environnement de marché et adoptez des stratégies différenciées en fonction des différentes caractéristiques du marché.

Résumer

Cette stratégie construit un système de trading robuste grâce à une analyse des tendances sur plusieurs périodes et à un système de contrôle des risques strict. Bien qu’il y ait une certaine marge d’optimisation, sa logique de base est solide et adaptée à un développement ultérieur et à une application dans le monde réel. La conception modulaire du système constitue également une bonne base pour une extension future.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Supertrend Strategy", 
         overlay=true, 
         shorttitle="MTF Supertrend TF", 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=50000, 
         currency=currency.USD)

// === Input Parameters === //
atrPeriod = input.int(title="ATR Period", defval=10, minval=1)
factor = input.float(title="Factor", defval=3.0, step=0.1)

// === Time Filter Parameters === //
// Define the trading session using input.session
// Format: "HHMM-HHMM", e.g., "0930-1530"
sessionInput = input("0930-1530", title="Trading Session")

// Specify the timezone (e.g., "Europe/Istanbul")
// Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').")

// === Calculate Supertrend for Different Timeframes === //
symbol = syminfo.tickerid

// 15-Minute Supertrend
[st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 5-Minute Supertrend
[st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 2-Minute Supertrend
[st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// === Current Timeframe Supertrend === //
[st_current, dir_current] = ta.supertrend(factor, atrPeriod)

// === Time Filter: Check if Current Bar is Within the Trading Session === //
in_session = true

// === Define Trend Directions Based on Supertrend === //
is_up_15m = close > st_15m
is_up_5m  = close > st_5m
is_up_2m  = close > st_2m
is_up_current = close > st_current

// === Buy Condition === //
buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0

// === Sell Conditions === //
// 1. Price falls below the 5-minute Supertrend during trading session
sellCondition1 = close < st_5m

// 2. End of Trading Day: Sell at the close of the trading session
is_new_day = ta.change(time("D"))
sellCondition2 = not in_session and is_new_day

// Combined Sell Condition: Only if in Position
sellSignal = (sellCondition1 and in_session) or sellCondition2
sellCondition = sellSignal and strategy.position_size > 0

// === Execute Trades === //
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// === Plot Supertrend Lines === //
// Plotting current timeframe Supertrend
plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line)

// Plotting higher timeframe Supertrend lines
plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line)

// === Plot Buy and Sell Signals === //
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="BUY", size=size.small)

plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// === Optional: Background Color to Indicate Position === //
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background")

// === Alerts === //
// Create alerts for Buy and Sell signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")