Stratégie de suivi de ligne


Date de création: 2023-12-01 18:31:39 Dernière modification: 2023-12-01 18:31:39
Copier: 1 Nombre de clics: 606
1
Suivre
1619
Abonnés

Stratégie de suivi de ligne

Aperçu

La stratégie de suivi de la ligne est une stratégie de suivi de la tendance basée sur l’indicateur de la bande de Brin et la plage de fluctuation réelle moyenne ((ATR)). Elle ajuste dynamiquement la ligne de jugement de la tendance, en l’ajustant vers le haut en cas de rupture de la bande de Brin et vers le bas en cas de rupture de la bande de Brin, permettant ainsi de juger et de suivre la tendance.

Principe de stratégie

La stratégie commence par calculer les trajectoires ascendantes et descendantes de la ceinture de Brin, ainsi que la portée des fluctuations réelles moyennes. Ensuite, elle détermine si le prix franchit la ceinture de Brin.

Lorsqu’un prix se déplace, si le filtre ATR est activé, la ligne de jugement de tendance est définie sur le prix minimum moins l’ATR; si le filtre ATR n’est pas activé, elle est directement définie sur le prix minimum.

Lorsqu’un prix dépasse la trajectoire, si le filtre ATR est activé, la ligne de jugement de tendance est définie comme le prix le plus élevé plus l’ATR; si le filtre ATR n’est pas activé, elle est directement définie comme le prix le plus élevé.

De cette façon, la ligne de jugement de tendance peut être dynamiquement ajustée en fonction de la rupture du prix avec la descente de Brin, permettant ainsi de juger la tendance.

Quand la ligne de jugement de tendance actuelle est supérieure à la ligne de jugement de tendance précédente, cela indique qu’elle est actuellement en tendance haussière; quand la ligne de jugement de tendance actuelle est inférieure à la ligne de jugement de tendance précédente, cela indique qu’elle est actuellement en tendance baissière.

Selon la tendance, cette stratégie peut être utilisée pour effectuer plusieurs opérations de blanchiment.

Analyse des avantages

  • Ligne de jugement de tendance à réglage dynamique, capture des tendances de prix avec souplesse
  • L’indicateur de la ceinture de Brin, combiné à l’indicateur de l’indicateur de la ceinture de Brin, permet d’évaluer le revirement de tendance en temps opportun lors d’une rupture de prix.
  • L’introduction du paramètre ATR, qui permet de filtrer une partie du faux signal de rupture

Analyse des risques

  • Une mauvaise sélection des paramètres de la bande de Bryn peut entraîner de fréquentes fausses percées
  • La sélection de paramètres ATR trop élevés peut entraîner une perte d’opportunité de revirement de tendance
  • La nécessité de considérer le blocage des pertes pour prévenir les dommages causés par des situations extrêmes

Il est possible d’éviter certains risques en ajustant les paramètres et en introduisant des arrêts. Il est également possible de filtrer en combinaison avec d’autres indicateurs pour améliorer l’efficacité de la percée.

Direction d’optimisation

  • Optimiser les paramètres de la bande de bus et de l’ATR pour trouver la meilleure configuration
  • Ajout d’autres critères pour filtrer les fausses percées
  • Sélectionnez le cycle de la ceinture de Brin et le cycle ATR pour un type de transaction spécifique

Résumer

La stratégie de suivi de la ligne vise à capturer les tendances des prix dans des conditions de volatilité. C’est une stratégie de suivi de tendance efficace.

Code source de la stratégie
/*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)