Esta estrategia invierte porcentajes iguales de capital basados en la utilización de los derivados de tiempo 1, 2, 3 y 4 del Hull Moving Average (HMA). Los puntos de entrada se identifican por las tendencias en los derivados 2, 3 y 4, mientras que los puntos de salida se crean en un nuevo punto de entrada o un porcentaje de stop loss.
La estrategia calcula primero el HMA. El Hull Moving Average es un promedio móvil ponderado calculado con la siguiente fórmula:
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
donde src es el precio y sm es un parámetro de entrada que controla la longitud de la media.
La estrategia calcula entonces la velocidad (primera derivada), la aceleración (segunda derivada), el tirón (tercera derivada) y la articulación (cuarta derivada). Estos se calculan tomando la diferencia entre el HMA y sus valores atrasados divididos por la longitud len. Por ejemplo, el cálculo de la velocidad es:
speed = (hullma-hullma[len])/len
Los demás derivados se calculan de manera similar.
La estrategia determina entradas y salidas mirando los signos de la aceleración, sacudida y junta. Si los tres indicadores son positivos, será largo. Si los tres son negativos, será corto.
Además, la estrategia también seguirá las pérdidas de parada para obtener ganancias.
Una ventaja clave de esta estrategia es que utiliza múltiples derivados como señales de entrada y salida, lo que puede filtrar algunas señales falsas.
Otra ventaja es que esta estrategia es muy flexible. Tiene múltiples parámetros ajustables, incluida la longitud de HMA, las longitudes de los diversos derivados, los porcentajes de stop loss, etc. que se pueden optimizar para diferentes mercados.
El uso de trailing stops ajustables también es una ventaja. Esto puede ayudar a la estrategia a capturar más ganancias en mercados de tendencia, mientras que sale de manera oportuna durante los mercados agitados, limitando el descenso máximo.
El principal riesgo de esta estrategia es la disminución de la tasa de éxito debido a eventos repentinos. Si no hay filtros relevantes, los eventos de noticias importantes podrían causar que múltiples derivados emitan señales erróneas al mismo tiempo, lo que llevaría a mayores pérdidas.
Otro riesgo es que los parámetros podrían estar fácilmente sobreajustados. La longitud de HMA, las longitudes de derivados, etc., podrían afectar a los resultados. Esto requiere una rigurosa prueba posterior para evaluar la robustez de estos parámetros en diferentes mercados.
Esta estrategia podría optimizarse de varias maneras:
Añadir filtros basados en eventos de explosión para pausar la negociación durante algún tiempo después de los principales eventos de noticias, evitando la falta de puntos de entrada que conducen a grandes pérdidas
Realizar pruebas de robustez de parámetros en todos los mercados.
Intentar mejorar la lógica de entrada. Introducir modelos de aprendizaje automático para identificar tendencias en lugar de simples juicios positivos/negativos
Mejorar la metodología de stop loss. Utilice paradas de volatilidad o aprendizaje automático en lugar de paradas sencillas de porcentaje
La lógica actual se basa principalmente en paradas, podría agregar salidas de ganancias al alza o objetivos adicionales
Esta es una estrategia de seguimiento de tendencia de múltiples marcos de tiempo que utiliza múltiples derivados del Hull Moving Average como señales de entrada y salida con paradas de trailing para bloquear las ganancias. Las ventajas clave incluyen filtrar señales falsas utilizando múltiples derivados, parámetros sintonizables flexibles, etc. Los riesgos a tener en cuenta incluyen los impactos de eventos de explosión y el posible sobreajuste de parámetros. La estrategia podría optimizarse agregando filtros, mejorando la robustez de los parámetros, mejorando la lógica de entrada / salida y así sucesivamente para hacerlo un sistema de negociación automatizado más confiable.
/*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=3 strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000) len = input(1, minval=1, title="Derivatives Length") sm = input(4, minval=1, title="HMA Length") longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01 shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01 longStopPrice=0.0 shortStopPrice=0.0 src = input(ohlc4, title="Source") hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) speed = (hullma-hullma[len])/len accel = (speed-speed[len])/len jerk = (accel-accel[len])/len jounce = (jerk-jerk[len])/len plot(speed, color=green) plot(accel, color=purple) plot(jerk, color=red) plot(jounce, color=blue) // hline(0, linestyle=solid, color=black) if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0 strategy.entry("openlong", strategy.long) if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0 strategy.entry("openshort",strategy.short) speed_profit = (strategy.openprofit-strategy.openprofit[1])/len accel_profit = (speed_profit-speed_profit[1])/len jerk_profit = (accel_profit-accel_profit[1])/len longStopPrice:=if(strategy.position_size>0) stopValue=ohlc4*(1-longTrailPerc) max(stopValue,longStopPrice[1]) else 0 shortStopPrice:=if(strategy.position_size<0) stopValue=ohlc4*(1+shortTrailPerc) min(stopValue,shortStopPrice[1]) else 999999 if(strategy.position_size>0) strategy.exit(id="closelong",stop=longStopPrice) if(strategy.position_size<0) strategy.exit(id="closeshort",stop=shortStopPrice)