Estrategia baja de ruptura de la inversión media

El autor:¿ Qué pasa?, fecha: 2023-11-02 15:34:22
Las etiquetas:

img

Resumen general

La idea principal de esta estrategia es detectar si el precio se rompe a través del precio más bajo en un período especificado y ir largo, esperando que el precio vuelva a la media.

Estrategia lógica

La estrategia obtiene el precio más bajo en un período especificado lowestLow utilizando el método ta.lowest de Pine Script y lo compara con el precio más bajo del período anterior prevLow.

Si el precio más bajo del último período es inferior al precio más bajo del período anterior, se activa una señal larga. Después de ir largo, se compara con el precio más alto del período especificado.

La estrategia permite elegir la condición de activación, es decir, el precio más bajo debe romper 1, 2, 3 o 4 precios más bajos anteriores consecutivamente, para controlar la frecuencia de negociación.

También muestra la línea de precio más baja más baja y la línea de precio más alta más alta en el gráfico para mostrar visualmente el cambio de tendencia.

Análisis de ventajas

  • La estrategia atrapa la tendencia de reversión después de romper nuevos mínimos con una tasa de ganancia relativamente alta.

  • Permite elegir el número de precios más bajos rotos para controlar la frecuencia de negociación.

  • Dibujar las líneas ayuda a determinar visualmente los puntos de cambio de tendencia.

  • Una lógica estratégica simple y clara, fácil de entender e implementar.

  • Puede configurarse y optimizarse en diferentes existencias y períodos de tiempo.

Análisis de riesgos

  • Romper un fondo falso no puede determinar puntos de inversión de tendencia, puede llevar a pérdidas.

  • Necesita probar diferentes combinaciones de parámetros para optimizar las configuraciones, de lo contrario la frecuencia de negociación puede ser demasiado alta o demasiado baja.

  • Los parámetros deben ajustarse para diferentes existencias, no deben aplicarse mecánicamente.

  • El período de prueba posterior insuficiente puede causar un sobreajuste.

  • El precio puede llegar a nuevos mínimos después de romper, necesidad de establecer un stop loss para controlar los riesgos.

Direcciones de optimización

  • Agregue mecanismos de stop loss como movimiento de stop loss, trailing stop loss, para limitar la pérdida por operación.

  • Optimizar el número de rupturas para equilibrar la frecuencia de negociación y la calidad de la señal.

  • Parámetros de ensayo en diferentes poblaciones y períodos de tiempo.

  • Añadir filtros para evitar el comercio frecuente en mercados variados.

  • Considere la posibilidad de añadir indicadores de tendencia para evitar el comercio contra tendencia.

  • Prueba diferentes señales de salida.

Conclusión

La estrategia captura oportunidades de reversión mediante el monitoreo de las rupturas de precios más bajas, una estrategia típica de ruptura de reversión media. Las ventajas son la simplicidad, la frecuencia controlable y la aplicabilidad a varias acciones. Pero también tiene algunos riesgos de ruptura falsos. Es necesario agregar filtros y optimizar, así como controlar los riesgos.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
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/
// © merovinh

//@version=5
strategy(title="Merovinh - Mean Reversion Lowest low",
     overlay = true,
     default_qty_type = strategy.percent_of_equity,
     initial_capital = 10000,
     default_qty_value = 10,
     commission_type = strategy.commission.percent,
     slippage = 1,
     commission_value = 0.04)

GR_TIME = 'Time Period'

bars = input(9, title = "Minimum number of bars", tooltip = "The minimum number of bars before updating lowest low / highest high")

numberOfLows  = input.string(defval='One', title='Number of broken lows', options=['One', 'Two', 'Three', 'Four'])

//Period

var prevLow = .0
var prevHigh = .0
var prevLow2 = .0
var prevLow3 = .0
var prevLow4 = .0

truetime = true


highestHigh = ta.highest(high, bars)
lowestLow = ta.lowest(low, bars)

if numberOfLows == 'One'
    if truetime and prevLow > 0 and lowestLow < prevLow
        strategy.entry('long', strategy.long)
if numberOfLows == 'Two'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2
        strategy.entry('long', strategy.long)
if numberOfLows == 'Three'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3
        strategy.entry('long', strategy.long)
if numberOfLows == 'Four'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3 and prevLow3 < prevLow4
        strategy.entry('long', strategy.long)

if truetime and prevHigh > 0 and highestHigh > prevHigh
    strategy.close('long')


if prevLow != lowestLow
    prevLow4 := prevLow3
    prevLow3 := prevLow2
    prevLow2 := prevLow
    prevLow := lowestLow
prevHigh := highestHigh

plot(lowestLow, color=color.green, linewidth=1, title="Lowest Low Line")
plot(highestHigh, color=color.green, linewidth=1, title="Highest High Line")




Más.