Stratégies de stop-loss et de take-profit suivant les tendances


Date de création: 2024-01-24 14:17:28 Dernière modification: 2024-01-24 14:17:28
Copier: 1 Nombre de clics: 661
1
Suivre
1617
Abonnés

Stratégies de stop-loss et de take-profit suivant les tendances

Aperçu

Il s’agit d’une stratégie de suivi de tendance basée sur l’indicateur de Brin pour déterminer la tendance et utiliser l’indicateur ATR pour définir un stop-loss. La stratégie détermine d’abord la tendance du marché, sur la ligne IRONMENT, et définit un stop-loss lors d’une position de plafonnement.

Principe de stratégie

  1. Calculer les voies de montée et de descente de la ceinture de Brin.
  2. Déterminer si le prix de clôture est supérieur ou inférieur à la trajectoire ascendante ou descendante, et si c’est le cas, déterminer si le marché est tendance ou à plusieurs têtes ou vide.
  3. Dans le cas d’un marché en tendance, la ligne d’environnement est calculée. La ligne d’environnement est basée sur le prix le plus bas moins la valeur de l’ATR (marché à capitaux multiples) ou le prix le plus élevé plus la valeur de l’ATR (marché à capitaux vides).
  4. Si le marché n’est pas tendance, la ligne d’environnement reste la même que la ligne K précédente.
  5. Comparer la ligne ENVIRONMENT pour déterminer la direction de la tendance. Si la hausse est à plusieurs têtes, la baisse est à vide.
  6. Le changement de direction de la ligne ENVIRONMENT génère un signal d’achat/vente.
  7. Arrêt de perte: arrêt fixe 100 fois le prix d’entrée; arrêt flottant 1.1 fois le prix d’entrée (multi-têtes) ou 0.9 fois (têtes vides).

Analyse des avantages

  1. Il est également possible d’évaluer les tendances du marché et de réduire le risque de fausses transactions.
  2. Il est possible d’utiliser une ligne ENVIRONMENT pour éviter d’être piégé.
  3. Le système de stop-loss est rationnel et permet de contrôler le risque tout en garantissant la rentabilité.

Analyse des risques

  1. Une mauvaise configuration des paramètres peut entraîner des opportunités de trading manquées.
  2. L’indicateur de la ceinture de Brin est plus susceptible d’erreurs de jugement en cas de tremblement de terre.
  3. Un point d’arrêt trop proche peut être éliminé par un second joueur.

Direction d’optimisation

  1. Optimisation des paramètres de la ceinture de brousse pour les rendre plus adaptées aux différentes variétés.
  2. Optimiser le calcul de la ligne ENVIRONMENT, par exemple en introduisant d’autres indicateurs.
  3. Tester et optimiser les paramètres du pare-feu.

Résumer

Il s’agit d’une stratégie de jugement de tendance basée sur la courbe de Brin, utilisant la ligne ENVIRONMENT pour définir un arrêt de perte. L’avantage central est que le jugement de tendance est clair, la mise en place d’un arrêt de perte est raisonnable et permet de contrôler efficacement les risques. Le principal risque réside dans l’erreur de jugement de tendance de la courbe de Brin et le point d’arrêt trop proche. Les orientations d’optimisation futures comprennent l’optimisation des paramètres, l’optimisation des méthodes de calcul de la ligne ENVIRONMENT et l’optimisation du stop loss.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong

// © Dreadblitz
//@version=4
strategy(shorttitle="FLI", title="Follow Line Indicator", overlay=true)
// 
BBperiod      = input(defval = 21,     title = "BB Period",    type = input.integer, minval = 1)
BBdeviations  = input(defval = 1.00,     title = "BB Deviations",    type = input.float, minval = 0.1, step=0.05)
UseATRfilter  = input(defval = true, title = "ATR Filter",  type = input.bool)
ATRperiod     = input(defval = 5,     title = "ATR Period",    type = input.integer, minval = 1)
hl            = input(defval = false, title = "Hide Labels",  type = input.bool)
//
BBUpper=sma (close,BBperiod)+stdev(close, BBperiod)*BBdeviations
BBLower=sma (close,BBperiod)-stdev(close, BBperiod)*BBdeviations
//
TrendLine = 0.0
iTrend = 0.0
buy = 0.0
sell = 0.0
//
BBSignal = close>BBUpper? 1 : close<BBLower? -1 : 0
// 
if BBSignal == 1 and UseATRfilter == 1
    TrendLine:=low-atr(ATRperiod)
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 1
    TrendLine:=high+atr(ATRperiod)
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 1
    TrendLine:=TrendLine[1]
//
if BBSignal == 1 and UseATRfilter == 0
    TrendLine:=low
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 0
    TrendLine:=high
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 0
    TrendLine:=TrendLine[1]
//
iTrend:=iTrend[1]
if TrendLine>TrendLine[1] 
    iTrend:=1
if TrendLine<TrendLine[1] 
    iTrend:=-1
//
buy:=iTrend[1]==-1 and iTrend==1 ? 1 : na
sell:=iTrend[1]==1 and iTrend==-1? 1 : na
//
plot(TrendLine, color=iTrend > 0?color.blue:color.red ,style=plot.style_line,linewidth=2,transp=0,title="Trend Line") 
plotshape(buy == 1 and hl == false? TrendLine-atr(8) :na, text='💣', style= shape.labelup, location=location.absolute, color=color.blue, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 and hl == false ?TrendLine+atr(8):na, text='🔨', style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white, offset=0, transp=0,size=size.auto)
//
alertcondition(sell == 1 ,title="Sell",message="Sell")
alertcondition(buy == 1 ,title="Buy",message="Buy")
alertcondition(buy == 1 or sell == 1 ,title="Buy/Sell",message="Buy/Sell")
if (buy==1)
    strategy.entry("Buy", strategy.long)
if (sell==1)
    strategy.entry("Sell", strategy.short)
// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*0.9)