Basé sur la stratégie Super Trend


Date de création: 2024-02-02 11:11:48 Dernière modification: 2024-02-02 11:11:48
Copier: 0 Nombre de clics: 782
1
Suivre
1617
Abonnés

Basé sur la stratégie Super Trend

Aperçu

Cette stratégie utilise l’indicateur hypertrend pour juger de la tendance des prix et pour entrer en position plus ou moins élevée lorsque la tendance change. La stratégie permet d’ajuster le cycle ATR et le multiplicateur ATR pour optimiser les paramètres. En outre, la stratégie offre également la possibilité de modifier la méthode de calcul de l’ATR pour obtenir des résultats légèrement différents.

La stratégie a également la fonctionnalité intégrée de réglage de la plage de dates de retracement et de négociation uniquement dans certaines périodes de temps. Ceci est particulièrement utile pour les actions de négociation intra-journée. Lorsque l’option de plage de temps est activée, il est possible de choisir d’entrer immédiatement dans la position actuelle au début de la période ou d’entrer dans le premier ordre après avoir attendu la conversion de la tendance.

La stratégie peut également définir des stop-loss et des stop-loss sur la base du pourcentage. Dans la plupart des cas, aucun stop-loss supplémentaire n’est nécessaire car les stop-loss basés sur l’ATR sont fournis par la tendance à la hausse elle-même. Il est donc possible d’activer uniquement les stop-loss pour optimiser le mécanisme d’exit.

Enfin, la stratégie dispose d’une fonctionnalité d’alerte d’entrée et de sortie de transactions personnalisée, qui peut être utilisée dans les services de trading automatique.

Principe de stratégie

Les stratégies hypertrend fonctionnent selon les principes suivants:

  1. Calculer l’ATR: il est possible d’utiliser le calcul SMA ou l’indicateur ATR intégré. La formule de la version SMA est:
   atr2 = sma(tr, Periods) 
  1. Calculer la montée et la descente: la montée est le prix moins ATR multiplié par ATR, la descente est le prix plus ATR multiplié par ATR.
   up = close - (Multiplier * atr)
   dn = close + (Multiplier * atr)
  1. Déterminer la relation entre le prix et la trajectoire ascendante et descendante, calculer la direction de la tendance. La tendance est plurielle lorsque le prix monte sur la trajectoire descendante et vide lorsque le prix descend sur la trajectoire descendante.
   trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend 
  1. Générer un signal de transaction lors d’une conversion de tendance, comme un signal de vente lors d’une conversion de multi-tête à vide:
   sellSignal = trend == -1 and trend[1] == 1
  1. Le filtrage des signaux de transaction et d’autres conditions pour choisir si l’entrée est ou non autorisée.

  2. Les stop-loss et les stops sont mis en place pour bloquer les bénéfices ou éviter les risques.

Ce sont les points clés de la stratégie hypertrend, qui, combinée à l’optimisation des paramètres, permet d’obtenir de meilleurs résultats de négociation.

Avantages stratégiques

Les avantages de cette stratégie sont les suivants:

  1. L’indicateur hypertrend est un outil couramment utilisé pour suivre la tendance des prix et pour arrêter les pertes.

  2. Les paramètres ATR sont réglables et peuvent être optimisés pour obtenir la meilleure combinaison de paramètres pour les différentes variétés. Une autre option est fournie par le calcul SMA.

  3. Les périodes d’opérations de rétrospective et de plateforme peuvent être réglées pour s’adapter aux besoins des différentes périodes de négociation.

  4. Il offre la possibilité de choisir d’accéder immédiatement à la première liste ou d’attendre un signal, en fonction des caractéristiques de la variété.

  5. La mise en place d’un stop loss peut améliorer la résistance au risque de la stratégie ou bloquer plus de profits.

  6. Les informations de trading personnalisées peuvent être intégrées à des systèmes de trading automatisés ou automatisés, permettant une surveillance sans surveillance.

Risque stratégique

Cette stratégie présente aussi des risques:

  1. L’indicateur hypertrend peut générer plus de faux signaux et doit être filtré en combinaison avec d’autres indicateurs.

  2. Des paramètres ATR incorrects peuvent entraîner des transactions fréquentes ou des tendances manquées. Des paramètres doivent être optimisés pour obtenir un équilibre optimal.

  3. Un point d’arrêt trop proche peut entraîner un retrait trop prématuré d’une position en profit, et un point d’arrêt trop éloigné peut ne pas permettre de verrouiller suffisamment de profit.

  4. Le mauvais réglage de l’intervalle de temps peut entraîner une perte de la période principale de la transaction ou une prise de garantie inutile.

Les risques ci-dessus peuvent être résolus en ajustant les paramètres de manière appropriée ou en ajoutant des conditions de filtrage, ce qui améliore la stabilité de la stratégie.

Orientation de l’optimisation de la stratégie

Cette stratégie peut être améliorée dans les domaines suivants:

  1. Essayez différents paramètres de cycle ATR pour trouver le point d’équilibre approprié.

  2. Test des paramètres de multiplication ATR différents, généralement de 2 à 5, qui peuvent être ajustés progressivement pour trouver la valeur optimale.

  3. Essayez d’ajouter d’autres indicateurs pour détecter la polyvalence, tels que MACD, KD, etc., pour filtrer les faux signaux.

  4. Optimiser les paramètres d’arrêt de perte pour trouver la combinaison optimale de paramètres. Des paramètres d’arrêt de perte dynamiques peuvent être introduits.

  5. Les variétés à courte durée d’une journée conviennent à des périodes plus courtes.

  6. Essayez de sélectionner automatiquement les contrats et de suivre ceux qui sont très volatils ou très volatiles.

Résumer

La stratégie hypertrend est une stratégie de suivi de tendance plus courante et pratique dans l’ensemble. Elle présente les caractéristiques d’une tendance de suivi paramétrable et efficace, mais il existe également certains risques à éviter.

Code source de la stratégie
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © REV0LUTI0N

//@version=4

// Strategy
strategy("Supertrend Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
enableentry = input(true, title="Enter First Trade ASAP")
waitentry = input(false, title="Wait To Enter First Trade")

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
Long = (trend == 1 ? up : na)
buySignal = trend == 1 and trend[1] == -1

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
Short = (trend == 1 ? na : dn)
sellSignal = trend == -1 and trend[1] == 1

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if Long and time_cond and timetobuy and enableentry
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if Short and time_cond and timetobuy and enableentry
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if buySignal and time_cond and timetobuy and waitentry
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if sellSignal and time_cond and timetobuy and waitentry
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)