Ruptura con la tendencia: estrategia de stop loss con momentum


Fecha de creación: 2023-11-13 17:20:51 Última modificación: 2023-11-13 17:20:51
Copiar: 0 Número de Visitas: 847
1
Seguir
1617
Seguidores

Ruptura con la tendencia: estrategia de stop loss con momentum

Descripción general

Esta estrategia es una estrategia de seguimiento de la tendencia de la línea media larga basada en el diseño de indicadores de ruptura y parada dinámica. La estrategia utiliza el precio para romper la línea de parada dinámica para determinar la dirección de la tendencia, entrar en el campo cuando el precio rompe la línea de parada, y luego utilizar la línea de parada para seguir la tendencia y bloquear las ganancias. La estrategia tiene como objetivo capturar la tendencia de la línea media larga y, al mismo tiempo, utilizar la parada dinámica para controlar el riesgo.

Principio de estrategia

La estrategia utiliza el indicador de parada dinámica Volatility Stop para determinar la dirección de la tendencia y el seguimiento de la parada. La parada de volatilidad calcula una línea de parada dinámica en función del rango de fluctuación del precio.

  1. ATR calculado para el precio (la amplitud real media de fluctuación)
  2. Se obtiene la línea de pérdida por ATR multiplicado por un coeficiente de pérdida
  3. Cuando el precio sube, el precio más alto registrado, la línea de parada es el precio más alto menos ATR multiplicado por el factor
  4. Cuando el precio baja, el precio mínimo se registra, la línea de parada es el precio mínimo más el ATR multiplicado por el factor

De esta manera, la línea de pérdidas se mueve hacia arriba y hacia abajo con la fluctuación de los precios, formando un canal dinámico.

La estrategia abre posiciones cuando el precio supera la línea de stop loss, lo que indica que la tendencia se ha invertido:

  • La estrategia se extiende cuando el precio supera el límite de pérdida desde abajo hacia arriba
  • La estrategia abre una posición cuando el precio rompe el límite de pérdida de arriba a abajo

Una vez abierta la posición, la estrategia utiliza la línea de stop loss para seguir el stop loss:

  • La línea de pérdida de múltiples posiciones es el precio máximo menos el ATR multiplicado por el factor
  • La línea de pérdida de la posición vacía es el precio mínimo más el ATR multiplicado por el factor

Cuando el precio vuelve a tocar la línea de stop loss, la estrategia se cierra.

De esta manera, la estrategia puede ser fluida, seguir la tendencia a tiempo para revertirla, y al mismo tiempo usar los stop-loss para controlar el riesgo.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. En un momento de crisis, las empresas pueden aprovechar la oportunidad de invertir la tendencia y evitar que se pierda la oportunidad.
  2. El uso de stop loss dinámico permite ajustar la posición de stop loss en función de las fluctuaciones del mercado para que sea más razonable
  3. Las posiciones de stop loss se actualizan a medida que avanza el movimiento, lo que maximiza el bloqueo de ganancias.
  4. En la tendencia, el seguimiento de la ganancia de la tendencia puede ser mayor si se gana en la tendencia.
  5. Controlar los riesgos y evitar pérdidas excesivas

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. En situaciones de conmoción, puede haber situaciones en las que los paros se activan con frecuencia.
  2. Se necesita un coeficiente de detención razonable, demasiado pequeño es demasiado sensible, demasiado grande pierde sentido.
  3. Las transacciones que se realizan con frecuencia se quedan en las ganancias.
  4. Es posible que se pierdan parte de las ganancias de los primeros días de la tendencia
  5. Los riesgos de alejarse demasiado de la línea de parada

Respuesta:

  1. Se puede encontrar el parámetro óptimo optimizando el coeficiente de detención por retroalimentación
  2. Prolongar adecuadamente el ciclo de tiempo de negociación y reducir la frecuencia de las transacciones
  3. Se puede considerar la inclusión de filtros filtrter para evitar transacciones demasiado frecuentes
  4. La distancia entre las líneas de parada puede ser adecuada, pero no demasiado

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización del coeficiente de pérdida para encontrar la mejor combinación de parámetros
  2. Añadir filtros para evitar ser encerrado en un evento sísmico
  3. Combinación de varios períodos de tiempo para verificar y mejorar la calidad de la señal
  4. Optimizar la gestión de las posiciones y aumentar gradualmente las posiciones
  5. Considere el ciclo de tiempo de ajuste dinámico de la transacción
  6. La elección de acciones, combinada con las tendencias dominantes

Resumir

La estrategia de ruptura de la tendencia - la parada dinámica es una estrategia de seguimiento de la tendencia muy práctica en general. Puede aprovechar las oportunidades de reversión de la tendencia, por lo tanto, la tendencia, mientras que el uso de la parada dinámica para controlar eficazmente el riesgo. Si los parámetros se optimizan correctamente, se puede obtener un mejor rendimiento en la situación de la tendencia.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-11 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=4
strategy(shorttitle='Volatility Stop Strategy',title='Volatility Stop Strategy (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works better on 3h, 1h, 2h, 4h
// Best time frame 2H

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "vStop Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)


//Entry 


strategy.entry(id="long", long = true, when = crossover(close, vStop) and window())

//Exit
strategy.close("long", when = crossunder(close, vStop))

plot(vStop,"Vstop", color.black, linewidth=2)