Estrategia de negociación de mercado cruzado de media móvil doble

El autor:¿ Qué pasa?, Fecha: 2023-10-24 16:55:38
Las etiquetas:

img

Resumen general

Esta estrategia combina las ventajas de la media móvil de Hull y la media móvil T3 para diseñar una estrategia de negociación entre mercados. Se puede utilizar tanto para el comercio a corto plazo como para el seguimiento de tendencias a largo plazo.

Estrategia lógica

La estrategia se basa principalmente en el cálculo de la media móvil de Hull y la media móvil de T3.

El Hull Moving Average (HMA) utiliza un método de cálculo iterativo de promedios móviles ponderados para filtrar efectivamente el ruido del mercado y mostrar una curva de tendencia de precios suave.

El promedio móvil T3 responde más rápido a los cambios de precios al tiempo que reduce el retraso mediante el ajuste de parámetros.

Esta estrategia toma la media de los dos como indicador principal de negociación y juzga el momento de entrada de acuerdo con la dirección de esta línea media: si la media del período actual es superior a la del período anterior, es una señal de entrada larga; si es inferior, es una señal de entrada corta.

Para las reglas de salida, si el precio rompe el punto de stop loss o take profit, salida; también salida cuando cambia la dirección de la media móvil.

Análisis de ventajas

Esta estrategia combina las ventajas de la media móvil de Hull y la media móvil T3 para generar un indicador integral. A continuación, esta estrategia es adecuada para el comercio a corto y largo plazo ajustando el parámetro del ciclo. Además, adopta un stop loss dinámico y toma ganancias para bloquear las ganancias y controlar los riesgos.

Análisis de riesgos

La estrategia se basa principalmente en el indicador de promedio móvil, que puede generar múltiples señales falsas en tendencias variadas. Además, el retraso de los promedios móviles puede perder el mejor momento de entrada. Los puntos de stop loss y take profit necesitan una configuración cuidadosa para evitar ser demasiado sueltos o demasiado apretados. Por último, los parámetros necesitan optimización para diferentes monedas y marcos de tiempo.

Optimización

Considere agregar otros indicadores para verificar la señal de MA y filtrar las señales falsas. Pruebe diferentes combinaciones de MA y algoritmos de ponderación para optimizar la señal de MA. Agregue stop loss adaptativo y trailing take profit para gestionar los riesgos dinámicamente. Realice optimización de backtesting en diferentes monedas y marcos de tiempo para encontrar los conjuntos de parámetros óptimos.

Resumen de las actividades

Esta estrategia integra los puntos fuertes de la media móvil de Hull y la media móvil T3 para formar un indicador integral para juzgar la dirección de la tendencia. A través de la optimización de parámetros, la estrategia se puede aplicar de manera flexible a diferentes ciclos comerciales. La estrategia tiene ciertas ventajas, pero también problemas como retraso y señales falsas. Al agregar otros indicadores, optimizar parámetros y paradas dinámicas, se puede mejorar continuamente para obtener mejores resultados.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 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/
// © exlux99

//@version=4


strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



////////////////////////////GENERAL INPUTS//////////////////////////////////////

length_Ma= input(defval=50, title="Length MAs", minval=1)

//==========HMA
getHULLMA(src, len) =>
    hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
    hullma

//==========T3
getT3(src, len, vFactor) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1,len)
    ema3 = ema(ema2,len)
    ema4 = ema(ema3,len)
    ema5 = ema(ema4,len)
    ema6 = ema(ema5,len)
    c1 = -1 * pow(vFactor,3)
    c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
    c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
    c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
    T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
    T3





hullma = getHULLMA(close,length_Ma)

t3 = getT3(close,length_Ma,0.7)


avg = (hullma+t3) /2


////////////////////////////PLOTTING////////////////////////////////////////////


colorado = avg > avg[1]? color.green : color.red

plot(avg , title="avg", color=colorado, linewidth = 4)

long=avg>avg[1]
short=avg<avg[1]

tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)

tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)


if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")


Más.