Estrategia de regresión basada en rupturas


Fecha de creación: 2024-03-01 11:58:56 Última modificación: 2024-03-01 11:58:56
Copiar: 2 Número de Visitas: 651
1
Seguir
1617
Seguidores

Estrategia de regresión basada en rupturas

Descripción general

La estrategia es una forma sistematizada de aprovechar la volatilidad de los mercados de futuros de petróleo. Se mide el rango de los intervalos promedio de las ganancias, y si el promedio de movimiento rápido es mayor que el promedio de movimiento lento, significa ganancias mayores; si el promedio de movimiento lento es mayor que el promedio de movimiento rápido, significa ganancias menores.

De acuerdo con este principio, se identifican los posibles puntos de entrada largos y los puntos de entrada cortos. La posición solo mantiene un cierto número de barras, este parámetro es controlado por la entrada de la barra Exit after bars.

Principio de estrategia

  1. Calcula el precio de cierre máximo de las 9 líneas K más recientes como criterio para determinar la ruptura
  2. Calcula el precio mínimo de cierre de las 50 líneas K más recientes como criterio para determinar la ruptura
  3. Calcula el contraste entre el ancho de onda promedio de las 5 y 20 líneas K más recientes para determinar si la forma de la línea K se expande o se reduce gradualmente
  4. Identificar las señales de ruptura de la línea larga y la línea corta: hacer más cuando el precio de cierre es igual al precio de cierre más alto y la línea K se reduce gradualmente; hacer una brecha cuando el precio de cierre es igual al precio de cierre más bajo y la línea K se reduce gradualmente
  5. La salida de la posición de la raíz K de la línea fija después de la ruptura: los parámetros ajustables cambian el intervalo de posición de la posición

Análisis de las ventajas

  1. Estrategias de regresión para juzgar la dirección de la tendencia por comparación con los máximos históricos
  2. La combinación de juicios volátiles evita falsas brechas
  3. La salida de la línea K de raíz fija, puede bloquear cierta ganancia y evitar la retirada

Análisis de riesgos

  1. Los máximos históricos cambian con los cambios en la estructura del mercado, lo que puede provocar fallas en las señales
  2. Falsos allanamientos llevan a la cárcel
  3. Los parámetros de tiempo fuera de juego incorrectos pueden perder más ganancias o aumentar las pérdidas

Dirección de optimización

  1. Los parámetros extremos se pueden optimizar mediante estadística práctica
  2. Indicadores de volatilidad para evaluar la probabilidad real de una ruptura
  3. Se puede optimizar el número de raíces fuera de juego con la estrategia de retroalimentación

Resumir

La estrategia utiliza la ruptura y la regresión para juzgar la tendencia a corto plazo, pertenece a la estrategia de volatilidad. A través de la optimización de la configuración de los parámetros y la adición de la determinación de la volatilidad, se puede reducir la probabilidad de ruptura falsa y aumentar el nivel de ganancias. Al mismo tiempo, el mecanismo de salida rápida de la línea K de raíz fija puede bloquear ciertas ganancias y controlar eficazmente el riesgo.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1d
basePeriod: 1h
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/
// © Celestial_Logic

//@version=5
strategy("Crudeoil Breakout strategy", overlay = true, initial_capital = 20000, default_qty_type = strategy.fixed, default_qty_value = 1)


highestCloseLookback = input(9 , title = 'Highest Close lookback')
lowestCloseLookback  = input(50, title = 'Lowest Close lookback'  ) 

exitAfter = input(10, title = 'Exit after bars')

hc = ta.highest(close,highestCloseLookback)
lc = ta.lowest(close,lowestCloseLookback)

rangeFilter = (ta.sma( (high - low), 5 ) > ta.sma((high-low), 20) ) // Candles getting bigger.

longCondition  = (close == hc ) and not rangeFilter
shortCondition = (close == lc ) and not rangeFilter
if  longCondition
    strategy.entry(id = 'long', direction = strategy.long) 
if shortCondition
    strategy.entry(id = 'short', direction = strategy.short)



var int longsince = 0 
var int shortsince = 0 

if strategy.position_size > 0 
    longsince += 1
else
    longsince := 0

if strategy.position_size < 0 
    shortsince += 1 
else 
    shortsince := 0

if longsince >= exitAfter 
    strategy.close(id = 'long', comment = 'long close')
if shortsince >= exitAfter
    strategy.close(id = 'short', comment = 'short close')