Estrategias comerciales basadas en reversiones y salidas de puntos pivote


Fecha de creación: 2024-04-30 15:57:54 Última modificación: 2024-04-30 15:57:54
Copiar: 0 Número de Visitas: 753
1
Seguir
1617
Seguidores

Estrategias comerciales basadas en reversiones y salidas de puntos pivote

Descripción general

La estrategia se basa en Pivot Points para identificar los puntos de inflexión del mercado y operar sobre esa base. La estrategia abre una posición cuando el mercado aparece en un punto de inflexión alto en la línea de 4 K a la izquierda. La estrategia abre una posición vacía cuando el mercado aparece en un punto de inflexión bajo en la línea de 4 K a la izquierda.

Principio de estrategia

  1. Utilizando las funciones ta.pivothigh () y ta.pivotlow () se calculan los puntos cardinales en el rango de 4 líneas K a la izquierda y 2 líneas K a la derecha, los puntos altos (swh) y bajos (swl).
  2. Cuando existe el punto más alto en el eje, se actualiza el precio más alto, mientras que se cumple con el precio más alto actual que el precio más alto anterior.
  3. Cuando se establece la condición de entrada múltiple (le), se abre una posición en la posición de unidad de menor movimiento (syminfo.mintick) por encima de la altura del eje central.
  4. Similar a hacer más, se actualiza el precio mínimo (lprice) cuando existe el punto bajo del eje central (swl_cond) y se abre el mercado de entrada a la posición baja (se) cuando se cumple el precio mínimo actual por debajo del precio mínimo anterior.
  5. Cuando la condición de entrada en la posición baja se establece, se abre una posición en la posición de la unidad de menor movimiento por debajo del punto más bajo en el eje central.
  6. En la función exitAtNextPivot (), si se tiene una posición de más cabeza, se detiene una unidad mínima de cambio por debajo del punto bajo del siguiente eje; si se tiene una posición de cabeza vacía, se detiene una unidad mínima de cambio por encima del punto alto del siguiente eje.
  7. En la función exitIfProfitLessThanThirtyPercent (), se calcula el porcentaje de ganancias y pérdidas de las posiciones de más de 30 y de menos de 30 por ciento.

Ventajas estratégicas

  1. Los puntos centrales reflejan mejor la posición de soporte y presión del mercado, es un indicador de análisis técnico comúnmente utilizado y tiene cierta aceptación en el mercado.
  2. Entra en juego cuando el eje se rompe y capta la oportunidad de que el mercado se invierta.
  3. Se establecen dos condiciones de salida, una es la salida técnica basada en el siguiente eje en dirección opuesta, y la otra es la salida de control de viento basada en el porcentaje de pérdidas, que permite controlar hasta cierto punto la retirada de la estrategia.

Riesgo estratégico

  1. Los indicadores de puntos centrales también tienen problemas de retraso y frecuencia de la señal, que pueden funcionar mal en una ciudad convulsa.
  2. Los parámetros de cálculo de 4 líneas K y 2 líneas K fijos pueden no aplicarse a todas las condiciones del mercado, y carecen de cierta adaptabilidad y flexibilidad.
  3. Las posiciones de stop loss están más cerca del precio de entrada (una unidad de mínima variación) y pueden ser abandonadas en momentos de fuertes fluctuaciones en el mercado.
  4. La configuración de pérdidas que se detienen en un 30% puede ser demasiado flexible y la amplitud de retiro es demasiado grande.

Dirección de optimización de la estrategia

  1. Se puede probar el uso de otros tipos de indicadores de eje cardinal, como eje factorial, eje ponderado, etc., para mejorar la sensibilidad y la actualidad de los indicadores.
  2. Los números de la línea K de izquierda a derecha se pueden usar como parámetros de entrada para buscar el valor óptimo mediante la optimización de los parámetros.
  3. Las posiciones de stop loss se pueden optimizar en ATR o stop loss porcentual, las primeras pueden adaptarse a los cambios en la volatilidad del mercado, y las segundas pueden limitar el riesgo a un rango controlable.
  4. Se puede ajustar la condición de la posición de equilibrio de pérdidas del 30%, lo que reduce el retiro de la estrategia. Además, se puede aumentar la condición de la posición de equilibrio del porcentaje de ganancias, lo que permite administrar la volatilidad y la volatilidad al mismo tiempo.
  5. Se pueden superponer otras condiciones de filtración, como filtración de tendencia, filtración de fluctuación, etc., para mejorar la calidad de la señal sobre la base de la ruptura del eje central.

Resumir

La estrategia construye un sistema de negociación bidireccional basado en los indicadores de los puntos centrales para capturar oportunidades de reversión del mercado haciendo más en los puntos centrales altos y vacíos en los puntos bajos. La estrategia tiene un cierto fundamento teórico y valor práctico, pero debido a las limitaciones de los indicadores de los puntos centrales, la estrategia puede enfrentar algunos riesgos y desafíos en la operación real.

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

//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)

leftBars = input(4)
rightBars = input(2)

var float dailyEquity = na

// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
    dailyEquity := 10000

// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)

// Define long entry condition
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

// Enter long position if long entry condition is met
if (le)
    strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)

// Define short entry condition
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

// Enter short position if short entry condition is met
if (se)
    strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)

// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Exiting long position at next pivot low
            if not na(swl)
                strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
        else
            // Exiting short position at next pivot high
            if not na(swh)
                strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)

// Call exitAtNextPivot function
exitAtNextPivot()

// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Calculate profit percentage for long position
            profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
            // Exiting long position if profit is less than 30%
            if profit_percentage_long < -30
                strategy.close("PivRevLE")
        else
            // Calculate profit percentage for short position
            profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
            // Exiting short position if profit is less than 30%
            if profit_percentage_short < -30
                strategy.close("PivRevSE")

// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()