
Esta estrategia adopta el principio de ruptura del indicador de William, combinado con una línea K de forma específica, para diseñar un modelo de apertura y liquidación de posiciones abiertas y cerradas de alta eficiencia, lo que permite hacer más deuda con precisión en los puntos clave de la reversión de la situación, capturar la tendencia de la línea media corta y obtener ganancias adicionales.
Esta estrategia utiliza los puntos de ruptura en el indicador de William para juzgar la señal de reversión. Cuando se produce una ruptura superior o inferior, se produce una señal de negociación si coincide con la dirección de la entidad de la línea K.
En concreto, la estrategia define un indicador personalizado WMX Williams Fractals. El indicador utiliza una función de factorización para determinar el tipo de fractal superior (upFractal) y el tipo de fractal inferior (dnFractal).
La lógica de clasificación superior es: el valor máximo de la línea K actual es mayor que el valor máximo de la línea K anterior n-raíz (n es el parámetro ajustable), de modo que se forma una clasificación superior de ruptura.
La lógica de clasificación de abajo es: el precio mínimo de la línea K actual es menor que el precio mínimo de la línea K de n raíces anteriores, de modo que se forma una clasificación de abajo.
Una vez clasificados arriba y abajo, se determina si han cambiado, es decir, de nada a nada o de algo a nada. En este momento, la clasificación recién se ha formado, lo que significa que es más probable que se revierta.
Luego se combina la dirección de la entidad de la línea K para determinar la señal de transacción específica. Cuando se forma el tipo superior, el cierre es superior al de la apertura, haga más; Cuando se forma el tipo inferior, el cierre es inferior al de la apertura, haga vacío.
El uso de puntos de clasificación para determinar el punto de reversión con el índice de William, un indicador tecnológico bien establecido y fiable
Combina la dirección de la entidad de la línea K para confirmar la señal de negociación y evitar chops en zonas no de tendencia
Menos parámetros, sólo se necesita ajustar el ciclo de clasificación n, fácil de probar y optimizar
Reglas de apertura de posición flexibles, como el tamaño de la posición, las condiciones de la posición, etc., fáciles de aplicar en el mundo real
El análisis de las tendencias es necesario para determinar si la tendencia es positiva o negativa, si es negativa o negativa, y si es negativa o negativa.
La configuración de la posición de deterioro requiere precaución para evitar el deterioro de la conducción por el ruido masivo.
El parámetro n necesita ser ajustado según las diferentes variedades, si el ciclo es demasiado grande o demasiado pequeño, afectará el efecto
La solución:
Indicadores como promedios móviles pueden ser usados para evaluar las tendencias generales y evitar posiciones a la inversa
Detener el seguimiento dinámico o establecer un límite de retiro razonable
Optimización de parámetros utilizando el método de análisis de marcha adelante para encontrar los mejores parámetros
Las estrategias de inversión basadas en la diversificación son propensas a la formación de situaciones en las que las inversiones ocasionan pérdidas después de obtener ganancias repetidas. Se puede considerar la inclusión de filtros de tendencia, limitando aún más el alcance de las operaciones y reduciendo las inversiones innecesarias.
Los métodos actuales de detención de pérdidas son relativamente simples y no permiten un seguimiento efectivo de la situación. Se puede intentar agregar métodos de detención de pérdidas como detención móvil, detención temporal y detención dinámica.
En la actualidad, solo se puede determinar la dirección física de la línea K. Se puede diseñar una señal de negociación más precisa si se tiene en cuenta más información de la línea K, como la línea de sombra, la posición del terminal, etc.
Esta estrategia es una estrategia de inversión basada en indicadores técnicos. Utiliza la clasificación del índice William para capturar la tendencia de cambio de la acción del índice en los momentos clave, combinada con la entidad de la línea K para formar una señal de negociación con el objetivo de obtener ganancias excedentes.
En comparación con otras estrategias de inversión, esta estrategia se puede implementar directamente en el mundo real a través de un diseño parametrizado, una lógica clara y fácil de entender, un ajuste de parámetros conveniente y fácil de probar. El siguiente paso es optimizar aún más la estrategia a través de la determinación de tendencias y el método de detener los pérdidas, por ejemplo.
/*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 )