Les ressources ont été chargées... Je charge...

Algoritme de négociation de tendance dynamique de super-tendance sur plusieurs délais

Auteur:ChaoZhang est là., Date: 2025-01-06 16h38 et 12h
Les étiquettes:ATRMTFLe taux d'intérêtIndice de résistance

img

Résumé

Cette stratégie est un système de suivi de tendance adaptatif basé sur l'indicateur Multi-Timeframe Supertrend. Elle intègre des signaux Supertrend de 15 minutes, 5 minutes et 2 minutes pour créer un cadre d'identification de tendance complet.

Principes de stratégie

Le mécanisme de base repose sur la cohérence de la tendance sur plusieurs délais pour confirmer les signaux de trading.

  1. Calcule les lignes de Supertrend en utilisant la période ATR et le facteur multiplicateur pour chaque période.
  2. Les déclencheurs achètent des signaux lorsque les conditions haussières s'alignent sur les trois délais (prix au-dessus des lignes de Supertrend).
  3. Les initiés vendent des signaux lorsque le prix dépasse la ligne Supertrend de 5 minutes ou atteint la fin de la journée de négociation.
  4. Contrôle des heures de négociation via les paramètres de fuseau horaire et le filtre de session (par défaut 09:30-15:30).

Les avantages de la stratégie

  1. La confirmation de tendance multidimensionnelle améliore la fiabilité du signal et réduit les risques de fausse rupture.
  2. Les paramètres adaptatifs de Supertrend permettent d'ajuster la stratégie à différents environnements de volatilité du marché.
  3. Un mécanisme de gestion du temps strict élimine les interférences liées aux périodes de négociation inefficaces.
  4. Une interface de visualisation claire affiche l'état de la tendance sur toutes les périodes.
  5. Le système de gestion de position flexible prend en charge la configuration basée sur le pourcentage.

Risques stratégiques

  1. Peut générer des signaux de négociation excessifs sur des marchés variés, augmentant les coûts de transaction.
  2. Des conditions de filtrage multiples pourraient entraîner des opportunités rentables manquées.
  3. La dépendance de l'optimisation des paramètres nécessite des ajustements pour différents environnements de marché.
  4. Une grande complexité de calcul peut entraîner des problèmes d'efficacité d'exécution.

Directions d'optimisation

  1. Introduire un mécanisme d'adaptation à la volatilité pour ajuster dynamiquement les paramètres de Supertrend.
  2. Ajouter des indicateurs de confirmation du volume pour améliorer la précision du jugement de la tendance.
  3. Développer un algorithme de filtrage du temps intelligent pour identifier automatiquement les sessions de trading optimales.
  4. Optimiser l'algorithme de gestion des positions pour un contrôle des risques plus précis.
  5. Ajouter le module de classification de l'environnement du marché pour mettre en œuvre des stratégies différenciées pour différentes caractéristiques du marché.

Résumé

La stratégie construit un système de trading robuste grâce à une analyse de tendance à plusieurs délais et à des mécanismes de contrôle des risques stricts.


/*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.")


Relationnée

Plus de