En la carga de los recursos... Cargando...

Estrategia de negociación basada en derivados

El autor:¿ Qué pasa?, Fecha: 2024-01-12 11:06:28
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

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.

Análisis de ventajas

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.

Análisis de riesgos

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.

Direcciones de optimización

Esta estrategia podría optimizarse de varias maneras:

  1. 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

  2. Realizar pruebas de robustez de parámetros en todos los mercados.

  3. Intentar mejorar la lógica de entrada. Introducir modelos de aprendizaje automático para identificar tendencias en lugar de simples juicios positivos/negativos

  4. Mejorar la metodología de stop loss. Utilice paradas de volatilidad o aprendizaje automático en lugar de paradas sencillas de porcentaje

  5. La lógica actual se basa principalmente en paradas, podría agregar salidas de ganancias al alza o objetivos adicionales

Conclusión

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)


Más.