Stratégie de suivi des tendances Stop Loss Take Profit

Auteur:ChaoZhang est là., Date: 24 janvier 2024
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de suivi de tendance qui utilise les bandes de Bollinger pour déterminer la tendance et l'ATR pour définir le stop loss et le profit.

La logique de la stratégie

  1. Calculer les rails supérieur et inférieur des bandes de Bollinger.
  2. Jugez si le prix de clôture est au-dessus du rail supérieur ou en dessous du rail inférieur.
  3. Si c'est un marché en tendance, calculez la ligne de tendance, basée sur le prix le plus bas moins la valeur ATR (marché haussier) ou le prix le plus élevé plus la valeur ATR (marché baissier).
  4. Si ce n'est pas un marché en tendance, conservez la ligne de tendance comme la barre précédente.
  5. Comparer la ligne de tendance pour déterminer la direction de la tendance.
  6. Générer des signaux d'achat/vente lorsque la direction de la ligne de tendance change.
  7. Fixer le stop loss et le take profit: distance fixe de stop loss est de 100 fois le prix d'entrée; le floating take profit est de 1,1 fois (bull) ou 0,9 fois (bear) le prix d'entrée.

Analyse des avantages

  1. Peut déterminer la tendance du marché, éviter les faux écarts.
  2. Fixez la ligne de tendance pour éviter d'être pris au piège.
  3. Des paramètres raisonnables de stop-loss et de prise de profit pour contrôler le risque tout en assurant le bénéfice.

Analyse des risques

  1. Des paramètres incorrects peuvent faire perdre des opportunités de trading.
  2. Les bandes de Bollinger ont une forte probabilité de porter un jugement erroné sur les marchés à fourchette.
  3. Un stop-loss trop proche peut facilement être arrêté.

Directions d'optimisation

  1. Optimiser les paramètres des bandes de Bollinger pour différents produits.
  2. Optimiser les méthodes de calcul de la ligne de tendance, par exemple en introduisant d'autres indicateurs.
  3. Testez et optimisez les paramètres stop loss et take profit.

Conclusion

Il s'agit d'une stratégie qui utilise les bandes de Bollinger pour déterminer la tendance et définit un stop loss et un profit basé sur la ligne de tendance. Les principaux avantages sont un jugement de tendance clair, un stop loss raisonnable et des paramètres de profit pour contrôler efficacement les risques. Les principaux risques proviennent d'un mauvais jugement de tendance et d'un stop loss trop proche. Les directions d'optimisation futures comprennent l'optimisation des paramètres, l'optimisation du calcul de la ligne de tendance et l'optimisation du stop loss.


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

Plus de