
Esta estrategia se basa en invertir en el uso de las derivadas temporales de las etapas 1, 2, 3 y 4 de la media móvil de Hull (HMA). Se invierte una cierta cantidad de capital. El punto de entrada se identifica a través de la tendencia de las derivadas de las etapas 2, 3 y 4, mientras que el punto de salida se crea en un nuevo punto de entrada o en un porcentaje de trazado de parada.
La estrategia comienza por calcular la HMA. La media móvil de Hull es una media móvil ponderada que se calcula 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.
Después, la estrategia calcula la velocidad (derivada de grado 1), la aceleración (derivada de grado 2), la oscilación (derivada de grado 3) y la oscilación (derivada de grado 4). Estos se calculan calculando la diferencia entre el HMA y su retraso y luego dividido por la longitud len. Por ejemplo, la fórmula para calcular la velocidad es:
speed = (hullma-hullma[len])/len
El resto de las derivadas se calculan de manera similar.
La estrategia determina la entrada y salida de una partida mirando el positivo y el negativo de la aceleración, la oscilación y la oscilación. Si los tres indicadores son positivos, abre una carta más. Si los tres indicadores son negativos, abre una carta vacía.
Además, la estrategia también trailing stop loss para bloquear las ganancias. Las posiciones de más de la cabeza se basan en un porcentaje de entrada ajustable para establecer un stop loss, lo mismo que las posiciones de la cabeza vacía.
Una de las principales ventajas de esta estrategia es que utiliza varios derivados como señales de entrada y salida, lo que puede filtrar algunas señales falsas. La decisión de la entrada suele ser demasiado vulnerable solo en función de la velocidad (la derivada de grado 1) pero, combinada con las derivadas de grado 2, 3 y 4, se puede construir un sistema más robusto.
Otra ventaja es que esta estrategia es muy flexible. Tiene varios parámetros ajustables, incluyendo la longitud de HMA, la longitud de los diferentes derivados, el porcentaje de parada, etc., que se pueden optimizar para diferentes mercados.
El uso de un stop loss de seguimiento ajustable también es una ventaja. Esto puede ayudar a la estrategia a obtener más ganancias en situaciones de tendencia, mientras que en situaciones de agitación se retira a tiempo, limitando la máxima retirada.
El principal riesgo de esta estrategia es la disminución de la tasa de éxito causada por los incidentes inesperados. Sin reglas de filtración relevantes, después de los incidentes noticiosos importantes, varios derivados pueden presentar señales erróneas al mismo tiempo, lo que provoca grandes pérdidas. Se pueden configurar algunos filtros de noticias o suspender la estrategia por un tiempo después de los incidentes inesperados para reducir este riesgo.
El otro riesgo es que los parámetros se ajusten demasiado fácilmente. La longitud de HMA, la longitud de cada derivado y otros parámetros pueden afectar los resultados. Esto requiere el uso de métodos de retroalimentación estrictos para evaluar la solidez de estos parámetros en diferentes mercados.
Esta estrategia se puede optimizar en los siguientes aspectos:
Aumentar el filtro basado en eventos inesperados y suspender la negociación por un tiempo después de eventos de gran importancia para evitar grandes pérdidas por puntos de entrada erróneos
Realizar una revisión de varios mercados de los parámetros para garantizar su estabilidad. Puede revisar datos de diferentes variedades y períodos de tiempo para evaluar la estabilidad de la configuración de los parámetros
Intentar cambiar la lógica de entrada en el campo. Introducir algoritmos de aprendizaje automático para identificar tendencias en lugar de un simple juicio positivo o negativo
Mejora de la forma de detener los pérdidas. Se puede usar el detener el fluctuación o el detener el aprendizaje de la máquina en lugar de un simple porcentaje de seguimiento de las pérdidas
Aumentar el stop exit. La lógica actual se basa principalmente en el stop loss, se puede agregar adicionalmente un stop tracking o un exit de ganancias objetivo
Esta estrategia es una estrategia de seguimiento de tendencias en varias escalas de tiempo. Utiliza múltiples derivados de la media móvil de Hull como señales de posición y posición, y utiliza un seguimiento de los estancamientos para bloquear las ganancias. Las principales ventajas son el uso de múltiples derivados para filtrar señales falsas, la flexibilidad de los parámetros de la estrategia, etc. Los riesgos a tener en cuenta incluyen el impacto de eventos inesperados y la facilidad de ajuste de los parámetros.
/*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)