Suivre la stratégie de ligne

Auteur:ChaoZhang est là., Date: 2023-12-01 18:31:39 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie Follow Line est une stratégie de suivi de tendance basée sur les bandes de Bollinger et la plage moyenne vraie (ATR). Elle ajuste dynamiquement la ligne de jugement de tendance pour suivre la tendance en la déplaçant vers le haut lorsque le prix dépasse la bande supérieure des bandes de Bollinger et en la déplaçant vers le bas lorsque le prix dépasse la bande inférieure des bandes de Bollinger.

La logique de la stratégie

La stratégie calcule d'abord les bandes supérieures et inférieures des bandes de Bollinger, ainsi que la plage moyenne vraie.

Lorsque le prix dépasse la bande supérieure, si le filtre ATR est activé, la ligne de tendance est réglée sur le prix le plus bas moins ATR. Si le filtre ATR est désactivé, la ligne de tendance est réglée directement sur le prix le plus bas.

Lorsque le prix dépasse la bande inférieure, si le filtre ATR est activé, la ligne de tendance est réglée sur le prix le plus élevé plus ATR. Si le filtre ATR est désactivé, la ligne de tendance est réglée directement sur le prix le plus élevé.

Ainsi, la ligne de jugement de tendance peut être ajustée dynamiquement sur la base des écarts de prix des bandes de Bollinger pour suivre la tendance.

Lorsque la ligne de tendance actuelle est supérieure à la précédente, elle indique une tendance à la hausse.

Les signaux de trading peuvent ensuite être générés en fonction du jugement de tendance d'aller long ou court.

Analyse des avantages

  • L' ajustement dynamique de la ligne de tendance peut capturer de manière flexible les tendances des prix
  • La combinaison avec les bandes de Bollinger permet de juger en temps opportun de l' inversion de tendance sur les ruptures de bandes
  • L'introduction du filtre ATR peut éviter certains faux signaux de rupture

Analyse des risques

  • Des paramètres BB incorrects peuvent provoquer des fausses éruptions fréquentes
  • Un paramètre ATR excessif risque de manquer des opportunités d'inversion de tendance
  • Il faut envisager un stop loss pour éviter les pertes dues à des mouvements extrêmes.

Certains risques peuvent être atténués par la régulation des paramètres, l'introduction d'un stop loss. peut également être combiné avec d'autres indicateurs pour le filtrage du signal pour améliorer la validité de la rupture.

Directions d'optimisation

  • Optimiser les paramètres BB et ATR pour trouver les meilleures configurations
  • Ajouter d' autres indicateurs pour filtrer les fausses éruptions
  • Sélectionner les périodes BB et ATR basées sur des instruments de négociation spécifiques

Conclusion

La stratégie Follow Line vise à capturer les tendances des prix sur les marchés volatils. C'est une stratégie de suivi des tendances efficace. Un ajustement et une optimisation appropriés des paramètres peuvent conduire à des bénéfices décents. Cependant, les risques doivent être gérés par un stop loss et la prévention de fausses ruptures. Il est recommandé de combiner cette stratégie avec d'autres indicateurs ou stratégies pour améliorer davantage la rentabilité.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Dreadblitz
//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy Follow Line Indicator ",
         shorttitle = "S-FLI",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=1,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2014, title = "Year", minval = 2000)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2000)

Config            = input(title = "══════════════ Config ══════════════", defval = true, type = input.bool)
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)


backTestPeriod() => true

//
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

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)

// Strategy Entry
if (backTestPeriod())
    strategy.entry("long", true, 1, when = buy == 1)
    strategy.entry("short", false, 1, when = sell == 1) 

Plus de