Estrategia importante de reversión del punto pivote


Fecha de creación: 2024-01-29 14:58:15 Última modificación: 2024-01-29 14:58:15
Copiar: 1 Número de Visitas: 682
1
Seguir
1617
Seguidores

Estrategia importante de reversión del punto pivote

Descripción general

Esta estrategia se optimiza sobre la base de la estrategia tradicional de inversión de pilares, principalmente mediante el cálculo de ATR y la configuración de un factor de filtración de ATR para filtrar algunos pilares sin sentido y solo negociar aquellos que son realmente importantes.

Principio de estrategia

La lógica central de esta estrategia es calcular los puntos de apoyo altos y bajos importantes. Los pasos principales para calcular los puntos de apoyo altos son:

  1. Calcula el ATR y establece el factor de filtración ATR at_mult。
  2. Recorre un cierto número de líneas K a la izquierda (establecido por leftBars) si el punto de apoyo de la altura es superior a la altura de cualquiera de las líneas K a la izquierda + ATR*atr_mult, el punto no es válido.
  3. Recorre un cierto número de líneas K de la derecha (establecido por RightBars), si el punto de apoyo de la altura es superior a la altura de cualquiera de las líneas K de la derecha + ATR*atr_mult, el punto no es válido.
  4. Si el punto de apoyo de la cima sigue siendo válido después de la prueba anterior, se devuelve el punto de apoyo de la cima como punto de apoyo de la cima importante.

La lógica para calcular el punto más bajo es similar.

Después de obtener un punto de apoyo importante, haga un descuento cuando el precio rompa el punto de apoyo importante; cuando el precio rompa el punto de apoyo importante, haga más.

Análisis de las ventajas

Las principales ventajas de esta estrategia son:

  1. A través de los parámetros de filtrado ATR y at_mult, se pueden filtrar las pequeñas fluctuaciones sin sentido, solo se pueden negociar puntos de apoyo realmente importantes, evitando transacciones sin sentido.
  2. Los parámetros ATR se pueden ajustar dinámicamente para ajustar automáticamente el rango de negociación en un mercado con gran volatilidad y evitar el exceso de negociación.
  3. La estrategia de inversión de pilares tiene una alta tasa de éxito y rentabilidad por sí misma.

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. Si el parámetro ATR no está configurado correctamente, puede filtrar demasiadas oportunidades de negociación válidas. Si el ATR es demasiado grande, los puntos de apoyo válidos también pueden ser filtrados.
  2. La estrategia de reversión de puntos de apoyo en sí misma sigue siendo un riesgo de cautiverio, que requiere la configuración de un stop loss para controlar el riesgo.
  3. Las estrategias invertidas son sensibles a los costos de las transacciones y requieren una configuración razonable de los paros y paradas.

Para controlar los riesgos mencionados, se puede optimizar en los siguientes aspectos:

  1. Optimización de los parámetros ATR para garantizar una oportunidad de negociación suficiente.
  2. Establezca una proporción razonable de stop-loss.
  3. Ajuste adecuado de la cantidad de operadores abiertos para reducir el impacto de los costos de transacción.

Dirección de optimización

La estrategia también puede ser optimizada en las siguientes direcciones:

  1. En combinación con otros indicadores para determinar el estado de la tendencia del mercado, se puede considerar la inclusión de indicadores como MACD, KDJ, etc.

  2. Se añaden algoritmos de aprendizaje automático para optimizar los parámetros. Se puede utilizar un algoritmo genético o un bosque aleatorio para encontrar la combinación óptima de parámetros.

  3. Añadir datos cuantitativos para entrenar y encontrar el mejor rango de ATR. Añadir datos históricos puede mejorar la precisión de la selección de parámetros.

  4. Puede considerarse la combinación con otras estrategias, combinando las ventajas de diferentes tipos de estrategias. Por ejemplo, la combinación con estrategias de seguimiento de tendencias, inversiones en el balanceo y tendencia en la tendencia.

Resumir

Esta estrategia de inversión de puntos importantes puede aumentar el nivel de rentabilidad de la estrategia mediante el cálculo de ATR y la configuración de un factor de filtración para filtrar las fluctuaciones insignificantes. La inversión de operaciones solo en puntos importantes también aumenta la dificultad de optimizar ciertos parámetros.

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"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

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])

if (le)
    strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

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])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)