Estrategia de trading cuantitativo basada en el MACD normalizado


Fecha de creación: 2023-09-14 20:01:07 Última modificación: 2023-09-14 20:01:07
Copiar: 1 Número de Visitas: 1118
1
Seguir
1617
Seguidores

En este artículo se detalla una estrategia de comercio cuantitativa basada en un indicador MACD unificado. Esta estrategia se optimiza en la estrategia clásica MACD para mejorar la calidad de la señal.

El principio de la estrategia

La idea central de esta estrategia es la de tratar los indicadores MACD tradicionales de manera homogénea para reducir la tasa de error. Los pasos concretos son:

  1. Calcular los promedios móviles de Hull a corto y largo plazo para determinar las tendencias generales en función de su relación cruzada;

  2. Calcular la diferencia entre los indicadores MACD;

  3. El MACD es tratado de forma unificada en un determinado período de tiempo.

  4. Calcular la línea media de la MACD de regresión, que forma el gatillo de la operación;

  5. Cuando el MACD de resumen es uniforme, el gatillo se pone en línea y se deja en blanco.

  6. El filtro de las relaciones lineales para evitar perder las grandes tendencias.

  7. Establezca un límite de pérdidas para controlar el riesgo de una sola transacción.

El tratamiento de la homogeneización puede reducir la amplitud absoluta de la diferencia MACD, lo que reduce el ruido y mejora la calidad de la señal. El filtro de tendencia también evita el funcionamiento inverso debido a un ajuste local. El parón de pérdidas controla las pérdidas individuales.

Dos, las ventajas estratégicas

La mayor ventaja de esta estrategia en comparación con la sencilla estrategia MACD es que se lleva a cabo un procesamiento unificado, que puede reducir efectivamente la tasa de error del MACD y mejorar la precisión de la señal.

Otra ventaja es la adición de un filtro para juzgar la tendencia, evitando la operación inversa en la tendencia. Esto aumenta la estabilidad de la estrategia.

Por último, el establecimiento de un límite de pérdidas y ganancias para cada operación permite un control del riesgo y una gestión activa de los fondos.

Tercero, el riesgo potencial.

A pesar de la optimización de la estrategia, en la práctica se deben tener en cuenta los siguientes riesgos:

En primer lugar, es más difícil de optimizar los parámetros, y la configuración inadecuada puede causar sobreajuste.

En segundo lugar, el límite de pérdidas demasiado cercano puede ser violado y aumentar las pérdidas.

Por último, en el caso de cambios de tendencia, las señales pueden estar retrasadas y no reaccionar a tiempo.

Cuatro contenido, resumen

Este artículo describe en detalle una estrategia de comercio cuantitativo para el tratamiento de la estandarización de los indicadores MACD. Esta estrategia es una mejora de la clásica estrategia MACD, que puede mejorar la calidad de la señal de manera efectiva y se integra en el mecanismo de gestión de riesgos.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Normalized MACD but heavily modified by SeaSide420. Normalized MACD v420
strategy("Normalized MACD (v420)",shorttitle="NmacD(v420)",overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1440, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) 
p=input(ohlc4)
jah=input(title="HullMA cross",defval=21)
tsp = input(34,title='Trigger')
np = input(50,title='Normalize')
SL = input(defval=-420.00, title="Stop Loss in $", step=1)
TP = input(defval=31.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(p,round(jah/2))
nma=wma(p,jah)
diff=n2ma-nma
sqn=round(sqrt(jah))
n2ma1=2*wma(p[2],round(jah/2))
nma1=wma(p[2],jah)
diff1=n2ma1-nma1
sqn1=round(sqrt(jah))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
sh=n1
lon=n2
ratio = min(sh,lon)/max(sh,lon)
Mac = (iff(sh>lon,2-ratio,ratio)-1)
MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = iff(np<2,Mac,MacNorm)
Trigger = wma(MacNorm2, tsp)
Hist =(MacNorm2-Trigger)
Hist2= Hist>1?1:Hist<-1?-1:Hist
teh=MacNorm2+MacNorm2[2]-MacNorm2[1]
closelong = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]<Trigger[1] and n1<n2[1]
if (closelong)
    strategy.close("Long")
closeshort = strategy.openprofit<SL or strategy.openprofit>TP or  teh[1]>Trigger[1] and n1>n2[1]
if (closeshort)
    strategy.close("Short")
longCondition = Trigger<0 and teh>Trigger and MacNorm>Trigger and strategy.opentrades<ot 
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = Trigger>0 and teh<Trigger and MacNorm<Trigger and strategy.opentrades<ot 
if (shortCondition)
    strategy.entry("Short",strategy.short)