Estrategia de seguimiento de tendencias para obtener pérdidas y beneficios

El autor:¿ Qué pasa?, Fecha: 2024-01-24 14:17:28
Las etiquetas:

img

Resumen general

Esta es una estrategia de seguimiento de tendencias que utiliza bandas de Bollinger para determinar la tendencia y ATR para establecer stop loss y take profit.

Estrategia lógica

  1. Calcule los rieles superior e inferior de las bandas de Bollinger.
  2. Juzga si el precio de cierre está por encima de la línea superior o por debajo de la línea inferior.
  3. Si se trata de un mercado en tendencia, calcule la línea de tendencia, que se basa en el precio más bajo menos el valor ATR (mercado alcista) o el precio más alto más el valor ATR (mercado bajista).
  4. Si no es un mercado de tendencia, mantenga la línea de tendencia igual que la barra anterior.
  5. Compare la línea de tendencia para determinar la dirección de la tendencia.
  6. Generar señales de compra/venta cuando la dirección de la línea de tendencia cambia.
  7. Establecer el stop loss y obtener ganancias: la distancia fija de stop loss es 100 veces el precio de entrada; el floating take profit es 1,1 veces (bull) o 0,9 veces (bear) el precio de entrada.

Análisis de ventajas

  1. Puede determinar la tendencia del mercado, evitar operaciones falsas.
  2. Establece la línea de tendencia para evitar quedar atrapado.
  3. Ajustes razonables de stop loss y toma de ganancias para controlar el riesgo y garantizar el beneficio.

Análisis de riesgos

  1. La configuración incorrecta de los parámetros puede perder oportunidades comerciales.
  2. Las bandas de Bollinger tienen una alta probabilidad de juzgar erróneamente en los mercados de rango.
  3. Si el stop loss está demasiado cerca puede ser detenido fácilmente.

Direcciones de optimización

  1. Optimizar los parámetros de Bollinger Bands para diferentes productos.
  2. Optimizar los métodos de cálculo de la línea de tendencia, por ejemplo, introduciendo otros indicadores.
  3. Prueba y optimiza los parámetros de stop loss y take profit.

Conclusión

Esta es una estrategia que utiliza bandas de Bollinger para determinar la tendencia y establece stop loss y take profit basado en la línea de tendencia. Las ventajas principales son un juicio de tendencia claro, un stop loss razonable y una configuración de take profit para controlar eficazmente los riesgos. Los riesgos principales provienen de un juicio de tendencia incorrecto y una stop loss demasiado cercana. Las direcciones de optimización futuras incluyen optimización de parámetros, optimización del cálculo de la línea de tendencia y optimización de stop loss take profit.


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

Más.