Estrategia de reversión de tendencia de criptomonedas basada en máximos y mínimos de PIVOT


Fecha de creación: 2024-01-12 14:13:36 Última modificación: 2024-01-12 14:13:36
Copiar: 0 Número de Visitas: 691
1
Seguir
1617
Seguidores

Estrategia de reversión de tendencia de criptomonedas basada en máximos y mínimos de PIVOT

Descripción general

La estrategia se basa en los puntos altos y bajos PIVOT y brechas para juzgar la reversión de la tendencia de la criptomoneda, y pertenece a la clase de estrategia de reversión de ruptura. La estrategia primero calcula los puntos PIVOT de los precios más altos y más bajos de los indicadores en el período más reciente, y luego determina si el precio se revirtió después de romper estos puntos clave para capturar los cambios de tendencia más grandes.

Principio de estrategia

  1. Calcular el punto más alto y más bajo de PIVOT

Utilizando las funciones ta.pivothigh ((() y ta.pivotlow ((() se calculan los puntos de precio más alto y más bajo de los últimos números de barras como puntos PIVOT clave.

  1. El juicio de la ruptura

Si el precio supera el PIVOT Bottom hacia arriba o el PIVOT Bottom hacia abajo, entonces se considera que la tendencia se ha invertido.

  1. Configuración de las condiciones de filtración

Se requiere que el precio tenga un cierto margen de ruptura con respecto al PIVOT y que supere el precio de cierre de 150 bares para evitar que se encuentre sujeto.

  1. Entradas y Salidas

La entrada y salida de las entradas son iguales a las entradas y salidas de las entradas de las entradas.

Análisis de las ventajas

  1. Los puntos PIVOT son más sensibles a los cambios en las grandes tendencias.
  2. Filtros efectivos para incorporarse a la tendencia de la oscilación y asegurar la entrada después de la reversión de la tendencia
  3. La brecha en los puntos PIVOT de alto y bajo rendimiento permite aprovechar las oportunidades de reversión.

Análisis de riesgos

  1. Las grandes fluctuaciones periódicas hacen que las estrategias sean difíciles de manejar.
  2. Necesidad de ajustar la longitud del punto PIVOT y las condiciones de filtración para adaptarse a diferentes especificaciones
  3. Necesidad de asegurar que las comisiones de las bolsas estén cerca de cero, de lo contrario, las ganancias y las pérdidas se verán más afectadas

Dirección de optimización

  1. Se pueden probar diferentes combinaciones de parámetros PIVOT
  2. Se puede agregar un tope móvil para controlar la pérdida individual
  3. Se puede combinar con otros indicadores para determinar la señal de filtración

Resumir

La estrategia es más robusta en general y es adecuada para capturar grandes reveses. Sin embargo, se debe tener en cuenta el control del riesgo y ajustar los parámetros para adaptarlos a diferentes monedas. Se cree que la estrategia puede tener un mejor efecto sobre la base de la optimización de parámetros y el control del viento.

Código Fuente de la Estrategia
/*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/
// © nkrastins95

//@version=5
strategy("Swing Hi Lo", overlay=true, margin_long=100, margin_short=100)

//-----------------------------------------------------------------------------------------------------------------------//

tf = input.timeframe(title="Timeframe", defval="")

gr="LENGTH LEFT / RIGHT"
leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr)
rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr)
colorH = input(title="", defval=color.red, inline="Pivot High",group=gr)

leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr)
rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr)
colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr)

//-----------------------------------------------------------------------------------------------------------------------//

pivotHigh(ll, rl) =>
    maxLen = 1000
    float ph = ta.pivothigh(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(ph[offset])
            break 
        offset := offset + 1
    ph[offset]

pivotLow(ll, rl) =>
    maxLen = 1000
    float pl = ta.pivotlow(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(pl[offset])
            break 
        offset := offset + 1
    pl[offset]


//-----------------------------------------------------------------------------------------------------------------------//

ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on)

drawLabel(_offset, _pivot, _style, _color) =>
    if not na(_pivot)
        label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722)

//-----------------------------------------------------------------------------------------------------------------------//

VWAP = ta.vwap(ohlc4)

longcondition = ta.crossunder(close,pl) and close > close[150]
exitcondition = close > ph

shortcondition = ta.crossover(close,ph) and close < close[150]
covercondition = close < pl

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = exitcondition)

strategy.entry("Short", strategy.short, when = shortcondition)
strategy.close("Short", when = covercondition)