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

Stratégie de suivi de tendance avancée avec arrêt de suivi adaptatif

Auteur:ChaoZhang est là., Date: 2024-12-20 14:12:05 Je vous en prie.
Les étiquettes:ATRSLLe TS

img

Résumé

Il s'agit d'une stratégie de suivi de tendance basée sur l'indicateur Supertrend, combinée à un mécanisme d'arrêt de perte adaptatif. La stratégie utilise principalement l'indicateur Supertrend pour identifier la direction de la tendance du marché et emploie des arrêts de suivi ajustés dynamiquement pour gérer le risque et optimiser le timing de sortie.

Principes de stratégie

La logique de base de la stratégie repose sur les éléments clés suivants:

  1. Utilise l'indicateur Supertrend comme base principale pour la détermination de la tendance, qui combine ATR (Average True Range) pour mesurer la volatilité du marché
  2. Les signaux d'entrée sont déclenchés par des changements de direction de la Supertrend, soutenant le trading long, court ou bilatéral.
  3. Le mécanisme de stop-loss utilise des stops de suivi adaptatifs qui s'ajustent automatiquement en fonction de la volatilité du marché.
  4. Le système de gestion des transactions comprend des mécanismes de dimensionnement des positions (par défaut 15% du capital du compte) et de filtrage du temps

Les avantages de la stratégie

  1. Une forte capacité de capture des tendances: identifie efficacement les principales tendances grâce à l'indicateur Supertrend, réduisant les faux signaux
  2. Contrôle complet des risques: utilise divers mécanismes de stop loss adaptés à différents environnements de marché
  3. Une grande souplesse: permet de configurer plusieurs directions de négociation et des méthodes de stop loss
  4. Une grande adaptabilité: les arrêts de trailing s'ajustent automatiquement en fonction de la volatilité du marché, ce qui améliore l'adaptabilité de la stratégie
  5. Système complet de backtesting: fonctionnalité de filtrage temporel intégrée pour l'analyse des performances historiques

Risques stratégiques

  1. Risque d'inversion de tendance: de faux signaux peuvent se produire sur des marchés très volatils
  2. Risque de dérapage: l'exécution de l'arrêt de suivi peut être affectée par la liquidité du marché
  3. Sensitivité des paramètres: les paramètres du facteur supertrend et des paramètres de la période ATR ont une incidence significative sur les performances de la stratégie
  4. Dépendance de l'environnement du marché: les échanges fréquents sur différents marchés peuvent augmenter les coûts

Directions d'optimisation de la stratégie

  1. Optimisation du filtrage des signaux: des indicateurs techniques supplémentaires peuvent être ajoutés pour filtrer les faux signaux
  2. Optimisation de la gestion des positions: la taille des positions peut être ajustée dynamiquement en fonction de la volatilité du marché
  3. Amélioration du mécanisme de stop loss: une logique de stop loss plus complexe peut être conçue en incorporant le prix moyen des coûts
  4. Optimisation du calendrier d'entrée: l'analyse de la structure des prix peut être ajoutée pour améliorer la précision de l'entrée
  5. Amélioration du système de backtesting: l'ajout d'autres indicateurs statistiques pour évaluer le rendement de la stratégie

Résumé

Il s'agit d'une tendance bien conçue qui suit une stratégie avec un risque contrôlable. En combinant l'indicateur Supertrend avec des mécanismes de stop loss flexibles, la stratégie peut maintenir une rentabilité élevée tout en contrôlant efficacement le risque. La stratégie est hautement configurable et adaptée à une utilisation dans différents environnements de marché, mais nécessite une optimisation approfondie des paramètres et une vérification de backtesting. Des améliorations futures peuvent être apportées en ajoutant plus d'outils d'analyse technique et de mesures de contrôle des risques pour améliorer davantage la stabilité et la rentabilité de la stratégie.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Inputs
atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings")
factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings")
tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings")
sl_type    = input.string("%", "SL Type", options=["%", "ATR", "Absolute"])
// Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes 

sl_perc    = input.float(4.0, "% SL", group="Stop Loss Einstellung")
atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung")
atr_mult   = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung")
sl_absol   = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung")

//-------------------------//
// BACKTESTING RANGE
fromDay   = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung")
fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung")
fromYear  = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung")
toDay     = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung")
toMonth   = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung")
toYear    = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung")

startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond  = time >= startDate and time <= finishDate

//-------------------------//
// Supertrend calculation
[_, direction] = ta.supertrend(factor, atrPeriod)

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * ta.atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
var pos         = 0
var float trailing_sl = 0.0

// Signals
long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 

// Calculate SL
trailing_sl := short_signal     ? high + sl_val : 
               long_signal      ? low  - sl_val : 
               nz(pos[1]) ==  1 ? math.max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

// Entry logic
if ta.change(direction) < 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Long"
        strategy.entry("Long", strategy.long, stop=trailing_sl)
    else
        strategy.close_all("Stop Short")

if ta.change(direction) > 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Short"
        strategy.entry("Short", strategy.short, stop=trailing_sl)
    else
        strategy.close_all("Stop Long")

// Exit logic: Trailing Stop and Supertrend
//if strategy.position_size > 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl)

//if strategy.position_size < 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl)

// Trailing Stop visualization
plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)
//plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")


Relationnée

Plus de