Estrategia de swing trading basada en el momentum


Fecha de creación: 2024-02-05 10:44:19 Última modificación: 2024-02-05 10:44:19
Copiar: 1 Número de Visitas: 678
1
Seguir
1617
Seguidores

Estrategia de swing trading basada en el momentum

Descripción general

Esta estrategia es una estrategia de comercio de oscilación diurna basada en la tecnología de la dinámica, que utiliza el ATR Stop Loss. La estrategia fue creada por Kory Hoang de Stably.

La estrategia utiliza el indicador de dinámica para identificar la dirección de la tendencia, en combinación con el indicador ATR para establecer una línea de parada y pérdida, para lograr una estrategia de comercio de convulsiones de bajo precio y alto precio.

Principio de estrategia

En primer lugar, el código establece el rango de tiempo de la detección.

Luego, en la sección de indicadores, se calculan los siguientes:

  • atr ((): para calcular el indicador ATR, que se utiliza para establecer el stop loss;
  • max_/min_El precio más alto/más bajo registrado en una línea K.
  • is_uptrend: para determinar si la tendencia es ascendente;
  • Entradas: línea de parada;

La principal lógica para juzgar las tendencias es:

Si el cierre es superior a la línea de parada anterior a la caída, se considera una tendencia alcista; si el cierre es inferior a la línea de parada anterior a la subida, se considera una tendencia bajista.

Ajuste la posición de la línea de stop loss en caso de cambio de tendencia.

En concreto, en una tendencia ascendente, la línea de parada se define como el precio más alto de la línea K anterior menos el valor de ATR; en una tendencia descendente, la línea de parada se define como el precio más bajo de la línea K anterior más el valor de ATR.

Esto permite el seguimiento de la tendencia y el stop loss.

En la parte de reglas de negociación, se puede hacer más caída cuando se abre una posición y se rompe la línea de parada.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Utilice la tecnología de la dinámica para determinar la dirección de la tendencia, capturar los puntos de inflexión a tiempo y evitar falsos saltos.
  2. ATR Stop Loss rastrea precios máximos/mínimos, lo que permite un buen control del riesgo.
  3. La lógica de la estrategia es simple, clara y fácil de entender.
  4. El comercio de ondas de baja y alta cotización puede realizarse entre tendencias.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. La elección incorrecta de los valores de ATR puede causar que el stop loss sea demasiado relajado o demasiado compacto.
  2. La tendencia de las sacudidas puede fluctuar de forma dramática, con pérdidas continuas.
  3. El número de transacciones puede ser mayor, y el costo de las comisiones más alto.

Se puede optimizar en los siguientes aspectos:

  1. Prueba diferentes parámetros ATR para encontrar la combinación óptima de parámetros.
  2. Optimización de la línea de stop loss en combinación con el indicador de volatilidad basado en el ATR.
  3. La combinación de filtros de tendencias y la evitación de la oscilación de los mercados no sirve de nada.

Dirección de optimización

La estrategia puede ser optimizada en las siguientes direcciones:

  1. Prueba diferentes parámetros de ATR para encontrar la combinación óptima de parámetros. Se pueden volver a medir varios grupos de parámetros para evaluar la relación de riesgo-beneficio.

  2. Se puede introducir un indicador de fluctuación para relajar adecuadamente el stop loss cuando la fluctuación aumenta.

  3. En combinación con el filtro de tendencias, evitar que los mercados de la oscilación no necesiten abrir posiciones. Puede aumentar los indicadores de juicio de tendencias y abrir posiciones solo cuando la tendencia es clara.

  4. Mecanismos de gestión de posiciones. Se puede ajustar la posición en función de la utilización de los fondos, el número de paradas de pérdidas continuas, etc.

  5. Aumentar el control de riesgo de la brecha nocturna. Se puede detener activamente el pérdida antes del cierre, evitando que los precios de la noche a la mañana se disparen.

Resumir

Esta estrategia sirve como una estrategia básica de negociación de la oscilación intradiaria, con una idea general clara, el uso de técnicas de dinámica para juzgar las tendencias y el uso del indicador ATR para el seguimiento de los puntos de parada de los puntos de deslizamiento, para controlar el riesgo de manera efectiva.

Hay mucho espacio para la optimización, y luego se puede mejorar desde varios puntos de vista, como el juicio de tendencias, el método de stop loss y la administración de posiciones, para que la estrategia sea más adecuada para el comercio en el mercado real. En general, esta estrategia proporciona un buen marco básico para el comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES