Estrategia de línea de seguimiento


Fecha de creación: 2023-12-01 18:31:39 Última modificación: 2023-12-01 18:31:39
Copiar: 1 Número de Visitas: 606
1
Seguir
1619
Seguidores

Estrategia de línea de seguimiento

Descripción general

La estrategia de seguimiento de líneas es una estrategia de seguimiento de tendencias basada en el indicador de la banda de Brin y el rango de fluctuación real promedio (ATR). Se ajusta dinámicamente la línea de juicio de tendencias, se ajusta hacia arriba cuando se rompe la banda de Brin y se ajusta hacia abajo cuando se rompe la banda de Brin, para poder juzgar y seguir la tendencia.

Principio de estrategia

La estrategia primero calcula la trayectoria ascendente y descendente de la banda de Brin, y el rango de fluctuación real promedio. Luego, se determina si el precio ha roto la trayectoria ascendente o descendente de la banda de Brin.

Cuando el precio se desvía, si se activa el filtro ATR, la línea de determinación de la tendencia se configura como el precio mínimo menos el ATR; si no se activa el filtro ATR, se configura directamente como el precio mínimo.

Cuando el precio se desvía, si se activa el filtro ATR, la línea de determinación de la tendencia se configura como el precio más alto más el ATR; si no se activa el filtro ATR, se configura directamente como el precio más alto.

De esta manera, la línea de juicio de tendencia puede ajustarse dinámicamente en función de la ruptura del precio de Brin y su bajada, lo que permite un juicio de tendencia.

Cuando la línea de juicio de la tendencia actual es más alta que la línea de juicio de la tendencia anterior, indica que se encuentra en una tendencia alcista; cuando la línea de juicio de la tendencia actual es más baja que la línea de juicio de la tendencia anterior, indica que se encuentra en una tendencia descendente.

De acuerdo con la tendencia, la estrategia puede realizar múltiples operaciones de comprobación.

Análisis de las ventajas

  • La línea de juicio de tendencias de ajuste dinámico permite una captura flexible de las tendencias de precios
  • La combinación de los indicadores de las bandas de Brin permite determinar el cambio de tendencia en el momento en que el precio se rompe
  • Introducción del parámetro ATR, que permite filtrar las señales de false breakout

Análisis de riesgos

  • La elección incorrecta de los parámetros de la banda de Bryn puede causar falsas rupturas frecuentes
  • Los parámetros ATR seleccionados son demasiado grandes, lo que puede conducir a la pérdida de oportunidades de cambio de tendencia
  • La necesidad de considerar la suspensión de pérdidas para evitar los daños causados por situaciones extremas

Se puede evitar parte del riesgo mediante el ajuste de los parámetros, la introducción de stop loss. También se puede combinar con otros indicadores para filtrar y mejorar la eficacia de la ruptura.

Dirección de optimización

  • Optimización de la banda de Brin y los parámetros de ATR para encontrar la mejor configuración
  • Añadir otros indicadores de juicio para filtrar falsos avances
  • Ciclo Brinbelt y ATR para variedades específicas de transacciones

Resumir

La estrategia de seguimiento de la línea se dedica a capturar las tendencias de los precios en situaciones de volatilidad. Es una estrategia de seguimiento de tendencias eficaz. Se puede obtener un buen rendimiento mediante el ajuste y la optimización de los parámetros.

Código Fuente de la Estrategia
/*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)