Estrategia de negociación con umbral de juicio combinado de Double HullMA


Fecha de creación: 2023-09-13 13:48:30 Última modificación: 2023-09-13 13:48:30
Copiar: 1 Número de Visitas: 588
1
Seguir
1621
Seguidores

Esta estrategia utiliza una combinación de medios móviles de doble Hull y una comparación de líneas K diarias para negociar, y establece un valor de penalización de la sentencia de la condición de más vacío. También establece un precio de parada de pérdida para la gestión del riesgo.

Principio de la estrategia:

  1. Calcula el promedio móvil de doble Hull y compara el valor actual con la relación entre el tamaño del ciclo anterior.

  2. Calcula el cambio en el precio de cierre de la línea K diaria y establece el umbral de la sentencia en blanco.

  3. Cuando la línea rápida atraviesa la línea lenta, y el cambio diario es superior al umbral. Cuando la línea rápida atraviesa la línea lenta, y el cambio diario es inferior al umbral.

  4. Establezca un precio de parada fijo. Si el precio toca el límite de pérdida, cierre la posición activa.

  5. También puede establecer el número máximo de posiciones abiertas.

Las ventajas de esta estrategia:

  1. El doble HullMA mejora la precisión de juicio. La tasa de cambio de la línea K diaria confirma la dirección de la sonda.

  2. La configuración de los umbrales evita ser afectado por el precio inverso de la pequeña diferencia.

  3. El stop loss ayuda a bloquear las ganancias y controlar el riesgo.

El riesgo de esta estrategia:

  1. Los valores de los umbrales demasiado altos o demasiado bajos hacen que se pierda la oportunidad de negociar.

  2. El precio fijo de la parada de pérdidas no puede ajustarse con flexibilidad y existe el riesgo de una configuración irrazonable.

  3. El HullMA y la tasa de variación diaria están atrasados.

En resumen, esta estrategia puede mejorar la estabilidad a un cierto nivel a través de la administración de riesgos y el juicio de los dos indicadores. Sin embargo, se debe prestar atención a la optimización de los parámetros y buscar la configuración óptima.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-06 00:00:00
end: 2023-02-21 00:00:00
period: 5d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                        Hull_MA_cross & Daily_Candle_cross combination with TP$ & SL$ setting
//                                                              (new script reducing effect of repaint on results)
//
strategy("Decision Threshold", shorttitle="DT", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold",  step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $",  step=1)
TP = input(defval=100000.00, title="Target Point in $", step=1)
p=input(ohlc4)
ot=1
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
confidence=(security(syminfo.tickerid, 'D', p)-security(syminfo.tickerid, 'D', p[1]))/security(syminfo.tickerid, 'D', p[1])
closelong = n1<n2 and p<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and p>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and p>n2
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and p<n2 
if (shortCondition)
    strategy.entry("Short",strategy.short)