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 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.
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.
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)