WMX Fractals de Williams estrategia de pivote de inversión

El autor:¿ Qué pasa?, Fecha: 2023-12-15 10:37:01
Las etiquetas:

img

Resumen general

Esta estrategia adopta el principio de ruptura fractal del indicador de Williams y combina patrones específicos de línea K para diseñar un modelo de apertura y cierre eficiente de largo y corto.

Principio de la estrategia

Esta estrategia utiliza los puntos fractales en el indicador de Williams para determinar las señales de reversión.

Específicamente, un indicador personalizado llamado WMX Williams Fractals se define en la estrategia. Utiliza funciones de factores para determinar el fractal superior (upFractal) y el fractal inferior (dnFractal).

La lógica del fractal superior es: el precio más alto de la línea K actual es mayor que el precio más alto de las n líneas K anteriores (n es un parámetro ajustable), formando así un fractal de ruptura del lado superior.

La lógica del fractal inferior es: el precio más bajo de la línea K actual es menor que el precio más bajo de las n líneas K anteriores, formando así un fractal de ruptura lateral inferior.

Después de obtener los fractales superior e inferior, determine si cambian, es decir, de no existir a existir o viceversa.

Luego, combinado con la dirección de la entidad de la línea K para determinar señales comerciales específicas. Cuando se forme el fractal superior y el cierre sea mayor que el abierto, vaya largo. Cuando se forme el fractal inferior y el cierre sea menor que el abierto, vaya corto.

Ventajas estratégicas

  1. Utilice los puntos fractales del indicador Williams para determinar el tiempo de inversión.

  2. Combinar la dirección de la entidad de la línea K para confirmar las señales de negociación y evitar regiones agitadas sin tendencia.

  3. Pocos parámetros que sólo necesitan ajustar el período fractal n, fácil de probar y optimizar.

  4. Reglas de configuración flexibles para la apertura de posiciones, como el tamaño de las posiciones, las condiciones de cierre, etc., fáciles de aplicar en operaciones en vivo.

Riesgos estratégicos

  1. Después de las formas fractales, el mercado puede no invertirse por completo, necesita combinarse con el juicio de tendencia.

  2. La configuración de la posición de stop loss debe ser cautelosa para evitar ser eliminado por ruidosos movimientos de volatilidad enormes.

  3. El parámetro n debe ajustarse para diferentes productos. Si el período es demasiado grande o demasiado pequeño afectará a los resultados.

Soluciones:

  1. Puede agregar indicadores como promedio móvil para juzgar la tendencia principal, evitar el comercio contra las tendencias.

  2. El valor de las pérdidas de mantenimiento de los valores de los valores de mantenimiento de los valores de mantenimiento de los valores de mantenimiento de los valores.

  3. Utilice el análisis de avanzada para optimizar los parámetros y encontrar los valores óptimos.

Direcciones para la optimización de la estrategia

  1. Las estrategias de reversión fractal tienden a formar múltiples ganancias y luego revertir de nuevo para formar pérdidas.

  2. El método de stop loss simple actual no puede rastrear eficazmente los movimientos del mercado. Puede intentar técnicas de stop loss más avanzadas como movimiento de stop loss, stop loss basado en el tiempo, stop loss dinámico, etc.

  3. Actualmente sólo se utiliza la dirección de la entidad de la línea K. Si se considera más información de la línea K como las mechas y la ubicación cercana, puede diseñar señales comerciales aún más precisas.

Conclusión

Esta es una estrategia de inversión basada en indicadores técnicos. Utiliza los fractales del indicador de Williams para capturar cambios en la tendencia del subyacente en puntos clave de giro, combinados con la dirección de la entidad de la línea K para formar señales comerciales, con el objetivo de lograr rendimientos excedentes.

En comparación con otras estrategias de reversión, esta estrategia presenta un diseño parametrizado para una lógica clara y una comprensión fácil. Tiene ajustes de parámetros flexibles para pruebas convenientes y puede aplicarse directamente en el comercio en vivo.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 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/
// © WMX_Q_System_Trading

//@version=4
SystemName="WMX Williams Fractals strategy V4"
InitCapital = 1000000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 10
strategy(title=SystemName, shorttitle=SystemName, overlay=true, initial_capital=InitCapital, default_qty_type=strategy.percent_of_equity, default_qty_value=InitPosition, commission_type=strategy.commission.percent, commission_value=InitCommission)


//study("WMX Williams Fractals", shorttitle="WMX Fractals", format=format.price, precision=0, overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input(title="Periods", defval=2, minval=2, type=input.integer)
h=close
l=close

factorh(High)=>
    upFractal = (                                                                                                          (High[n+2]  < High[n]) and (High[n+1]  < High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                                               (High[n+3]  < High[n]) and (High[n+2]  < High[n]) and (High[n+1] == High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                    (High[n+4]  < High[n]) and (High[n+3]  < High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                          (High[n+5] < High[n]) and (High[n+4]  < High[n]) and (High[n+3] == High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or ((High[n+6] < High[n]) and (High[n+5] < High[n]) and (High[n+4] == High[n]) and (High[n+3] <= High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
    upFractal
upFractal=factorh(h)
factorl(Low)=>
    dnFractal = (                                                                                                  (Low[n+2]  > Low[n]) and (Low[n+1]  > Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                                         (Low[n+3]  > Low[n]) and (Low[n+2]  > Low[n]) and (Low[n+1] == Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                (Low[n+4]  > Low[n]) and (Low[n+3]  > Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                        (Low[n+5] > Low[n]) and (Low[n+4]  > Low[n]) and (Low[n+3] == Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or ((Low[n+6] > Low[n]) and (Low[n+5] > Low[n]) and (Low[n+4] == Low[n]) and (Low[n+3] >= Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
    
dnFractal=factorl(l)

U=valuewhen(upFractal[0]!= upFractal[1],l[0],3)
L=valuewhen(dnFractal[0]!=dnFractal[1],h[0],3)

longcon=crossover(close ,L) and close>open
shortcon=crossunder(close ,U) and close<open

if longcon
    
    strategy.entry("Long", strategy.long,   when = strategy.position_size <= 0 )
    
if  shortcon
    strategy.entry("Short", strategy.short,  when = strategy.position_size >= 0 )
        






Más.