Estrategia de trading basada en el cruce de la media móvil de Hull y el indicador WT


Fecha de creación: 2023-09-26 20:00:32 Última modificación: 2023-09-26 20:00:32
Copiar: 1 Número de Visitas: 1000
1
Seguir
1617
Seguidores

Descripción general

La estrategia se basa principalmente en la combinación de las señales cruzadas de las medias móviles de Hull y los indicadores de WT para aprovechar las ventajas de sus respectivos indicadores y tomar decisiones más precisas en el juicio de tendencias y la selección de la hora de entrada.

Principio de estrategia

La estrategia se compone principalmente de señales cruzadas de las medias móviles de Hull y el indicador WT.

La parte de las medias móviles de Hull, para determinar la dirección de la tendencia mediante el cálculo de los MA de Hull a corto y largo plazo, y el relleno de colores. La fórmula de cálculo es:

Hull MA a corto plazo = WMA2*WMA(n/2) - WMA(n), sqrt(n))

Hull MA a largo plazo = WMA ((WMA ((n/3)*3 - WMA(n/2), n/2)

WMA es la media móvil ponderada. Cuando la línea corta atraviesa la línea larga, es una señal de alza, y de lo contrario es una señal de baja.

En la sección de indicadores de WT, la entrada se determina mediante el cálculo de la línea media de la WT y la observación de la intersección de la línea media. La fórmula de cálculo es:

TCI = (Close - EMA(Close,n1)) / (k * STD(Close - EMA(Close,n1),n1))

WT1 = EMA(TCI,n2)

WT2 = SMA(WT1,m)

Donde TCI es el índice compuesto de tendencia, que refleja el grado de desviación del precio y el EMA de la línea media del canal; WT1 es el nivel de la EMA del TCI, WT2 es el SMA del WT1, m generalmente toma 4 ⋅ es la señal de múltiples cabezas cuando WT1 pasa por WT2 y es la señal de cabezas vacías cuando WT1 pasa por WT2.

La combinación de un juicio de tendencia de Hull MA y una señal cruzada del indicador WT, puede entrar en juego siempre que la dirección de la tendencia sea correcta.

Análisis de las ventajas

La estrategia combina las ventajas de los indicadores Hull MA y WT con las siguientes ventajas:

  1. La Hull MA, mediante la modificación de la forma de calcular las medias móviles, puede capturar más rápidamente las tendencias de los cambios en los precios y filtrar eficazmente el ruido del mercado para determinar con precisión y fiabilidad las tendencias.

  2. El indicador WT utiliza las características de la fluctuación de los precios dentro del canal para capturar rápidamente los puntos de inflexión y emitir señales de negociación más precisas.

  3. La combinación de ambos, que tiene en cuenta tanto el juicio de tendencias como las señales cruzadas, permite controlar el riesgo a la vez que la fuerza de la tendencia.

  4. Los parámetros de suavización de Hull MA y los parámetros de WT Indicator son configurables de forma personalizada y se pueden ajustar y optimizar según las características de las diferentes variedades y preferencias comerciales.

  5. Se puede negociar usando la señal cruzada de los indicadores Hull MA o WT por separado, o en combinación con el uso de seguimiento de tendencias y verificación cruzada.

  6. Se puede configurar una estrategia de stop loss para controlar el riesgo de una sola operación.

Análisis de riesgos

La estrategia tiene los siguientes riesgos:

  1. Los indicadores Hull MA y WT tienen un cierto grado de manipulación de la confusión de los precios, lo que puede ser un poco de retraso, lo que hace que la hora de entrada no sea lo suficientemente precisa.

  2. Los indicadores WT son propensos a generar falsas señales de retroceso múltiple y retroceso en blanco, lo que aumenta el riesgo de negociación si no se combina con el juicio de la tendencia.

  3. La configuración inadecuada de los parámetros también puede afectar los resultados de las transacciones, lo que requiere pruebas y optimizaciones continuas según las características de la variedad.

  4. En los momentos de fluctuación de la tendencia, el stop loss puede ser activado con frecuencia, lo que ocasiona una cierta pérdida en las operaciones.

La respuesta al riesgo puede ser optimizada y mejorada mediante:

  1. Ajuste los parámetros Hull MA y WT para encontrar el punto de equilibrio óptimo. También se pueden probar otros indicadores en combinación con Hull MA.

  2. Aumentar el mecanismo de juicio de tendencias para evitar que el indicador WT dé una señal errónea cuando no hay una tendencia clara.

  3. Utilice la retroalimentación y el comercio simulado para encontrar los mejores parámetros y establecer un límite de pérdida razonable.

  4. Cuando la tendencia no es clara, reducir el tamaño de la posición o no comerciar temporalmente.

Dirección de optimización

La estrategia puede ser optimizada aún más en las siguientes direcciones:

  1. Prueba diferentes combinaciones de promedios móviles con indicadores WT para encontrar mejores puntos de equilibrio. Como KAMA, TEMA, etc.

  2. La inclusión de otros indicadores, como el índice de oscilación, las bandas de Bollinger, etc., mejora la precisión de la toma de decisiones.

  3. Optimización de la configuración de los parámetros, para encontrar la combinación óptima de parámetros a través de la retroalimentación y la simulación. Se puede crear un programa de optimización de parámetros para encontrar rápidamente los parámetros óptimos.

  4. Optimizar las estrategias de parada de pérdidas, como la aplicación de parada móvil, parada de oscilación, parada de cerca y larga distancia, etc., para reducir la probabilidad de que se active la parada.

  5. Optimización de las estrategias de gestión de posiciones, reducción de la frecuencia de las operaciones y el tamaño de las posiciones cuando las tendencias no son claras, y reducción del riesgo.

  6. El aumento de tecnologías avanzadas como el aprendizaje automático para una toma de decisiones de transacciones más inteligente y la adaptación de parámetros.

Resumir

La estrategia integra la característica de cruce de indicadores de Hull MA y WT, además de las ventajas del juicio de tendencias y la verificación cruzada. El comercio en la condición de asegurar la dirección correcta, puede controlar el riesgo de manera efectiva. A través de la configuración de parámetros de optimización, la estrategia de stop loss, la gestión de la posición, etc., puede mejorar aún más la estabilidad y la eficacia de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 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/
// WT CROSS @author [© LazyBear]
// © pigsq
// @version=5

strategy("Kahlman HullMA / WT Cross Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100)

_1 = input(false, '───────── SP/TP SETTINGS ─────────')

stoploss1 = input(title='Stop Loss On/Off?', defval=true)
stoploss = input.float(5, "Stop Loss", minval = 1, step = 1)/100
takeprofit1 = input(title='Take Profit On/Off?', defval=true)
takeprofit = input.float(10, "Take Profit", minval = 1, step = 1)/100

_2 = input(false, '──────── WT CROSS SETTINGS ────────')

wtcross = input(title='WT Cross On/Off?', defval=true)
wtcross2 = input(title='Change WT Cross Method ( If WT Cross ON )', defval=false)

/// WT CROSS ///

n1 = input(10, 'Channel Length')
n2 = input(21, 'Average Length')

ap = hlc3
esa = ta.ema(ap, n1)
r = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * r)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

/// WT CROSS ///

/// HULL TREND WITH KAHLMAN ///

_3 = input(false, '──────── HULLMA SETTINGS ────────')

srchull = input(hl2, 'Source')
lengthhull = input(24, 'Lookback')
gain = input(10000, 'Gain')
kh = input(true, 'Use Kahlman')

hma(_srchull, _lengthhull) =>
    ta.wma((2 * ta.wma(_srchull, _lengthhull / 2)) - ta.wma(_srchull, _lengthhull), math.round(math.sqrt(_lengthhull)))

hma3(_srchull, _lengthhull) =>
    p = lengthhull / 2
    ta.wma(ta.wma(close, p / 3) * 3 - ta.wma(close, p / 2) - ta.wma(close, p), p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1], x) + dk * math.sqrt(g / 10000 * 2)
    velo = 0.0
    velo := nz(velo[1], 0) + g / 10000 * dk
    kf := smooth + velo
    kf

a = kh ? kahlman(hma(srchull, lengthhull), gain) : hma(srchull, lengthhull)
b = kh ? kahlman(hma3(srchull, lengthhull), gain) : hma3(srchull, lengthhull)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]

p1hma = plot(a, color=c, linewidth=1, title='Long Plot', transp=75)
p2hma = plot(b, color=c, linewidth=1, title='Short Plot', transp=75)
fill(p1hma, p2hma, color=c, title='Fill', transp=55)

/// HULL TREND WITH KAHLMAN ///

/// DATE ///

_4 = input(false, '───────── DATE SETTINGS ─────────')

FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=999, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false

/// DATE ///

/// LONG/SHORT CONDITION ///

longCondition = crossup and ta.crossover(wt1,wt2)
longCondition1 = crossup
longCondition2 = crossup and wt1 > wt2

if (wtcross == true ? longCondition : wtcross == false ? longCondition1:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Long")
else if (wtcross2 == true ? longCondition2 : wtcross2 == false ? longCondition:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Long")
    
shortCondition = crossdn and ta.crossunder(wt1,wt2)
shortCondition1 = crossdn
shortCondition2 = crossdn and wt1 < wt2

if (wtcross == true ? shortCondition : wtcross == false ? shortCondition1:na)
    strategy.entry("SHORT", strategy.short, when=window(), comment="Enter Short")
else if (wtcross2 == true ? shortCondition2 : wtcross2 == false ? shortCondition:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Short")

/// LONG/SHORT CONDITION ///

/// CLOSE STRATEGY ///

strategy.close("LONG", when=wtcross == true ? shortCondition : wtcross == false ? shortCondition1:na, comment = "Close Long")
strategy.close("SHORT", when=wtcross == true ? longCondition : wtcross == false ? longCondition1:na, comment = "Close Short")

/// EXIT STRATEGY ///

strategy.exit("LONG", when=strategy.position_size > 0, stop=stoploss1 == true ? strategy.position_avg_price * (1 - stoploss):na, limit=takeprofit1 == true ? strategy.position_avg_price * (1 + takeprofit):na, comment="Exit Long")
strategy.exit("SHORT", when=strategy.position_size < 0, stop=stoploss1 == true ? strategy.position_avg_price * (1 + stoploss):na, limit=takeprofit1 == true ? strategy.position_avg_price * (1 - takeprofit):na, comment ="Exit Short")

/// LONG SL/TP LINE ///

plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 - stoploss) : na, title='Long Stop Loss', color=stoploss1 == true ? color.new(color.red, 0):na, style=plot.style_linebr)
plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeprofit) : na, title='Long Take Profit', color=takeprofit1 == true ? color.new(color.green, 0):na, style=plot.style_linebr)

/// LONG SL/TP LINE ///

/// SHORT SL/TP LINE ///

plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 + stoploss) : na, title='Short Stop Loss', color=stoploss1 == true ? color.new(color.red, 0):na, style=plot.style_linebr)
plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeprofit) : na, title='Short Take Profit', color=takeprofit1 == true ? color.new(color.green, 0):na, style=plot.style_linebr)

/// SHORT SL/TP LINE ///