Estrategia cuantitativa del MACD del gradiente

El autor:¿ Qué pasa?, Fecha: 2023-12-19 16:14:50
Las etiquetas:

img

Resumen general

Esta estrategia calcula velas Heikin-Ashi para suavizar las líneas de precios y combina el indicador MACD para generar señales comerciales, implementando una estrategia cuantitativa que rastrea las tendencias a medio y largo plazo.

Estrategia lógica

  1. Calcular los precios de apertura, cierre, alto y bajo de Heikin-Ashi para trazar velas de Heikin-Ashi y tendencias de precios suaves.

  2. Establezca los parámetros MACD: longitud rápida 12, longitud lenta 26, longitud de la señal 9.

  3. Calcula la línea lenta de DEA, la línea rápida de DEA y el histograma MACD.

  4. Ir largo cuando el histograma MACD cruza por encima de 0; Ir corto cuando cruza por debajo de 0.

  5. Añadir filtros de año, mes y día para limitar la negociación a un intervalo de tiempo especificado.

Análisis de ventajas

  1. Las velas Heikin-Ashi filtran el ruido del mercado de manera efectiva para identificar tendencias.

  2. El MACD proporciona señales claras de tendencia.

  3. La combinación de Heikin-Ashi y MACD mejora la calidad de la señal y la rentabilidad.

  4. Los filtros de tiempo ayudan a optimizar el calendario de operaciones basado en el rendimiento histórico.

Análisis de riesgos

  1. Posibilidad de grandes pérdidas durante la inversión de tendencia.

  2. Los parámetros MACD inadecuados pueden generar señales excesivamente inútiles.

  3. Los filtros de tiempo rígidos pueden perder buenas oportunidades comerciales.

Contramedidas:

  1. Establecer el stop loss/take profit para limitar las pérdidas.

  2. Optimizar los parámetros del MACD para determinar la mejor combinación.

  3. Añadir indicadores para determinar las tendencias locales.

Direcciones de optimización

  1. Prueba diferentes combinaciones de parámetros para encontrar el óptimo.

  2. Agregue mecanismos de stop loss como el stop loss trasero.

  3. Agregue indicadores como EMA, KDJ para determinar los puntos de inversión.

  4. Añadir indicadores de volumen para evitar divergencias.

Resumen de las actividades

Esta estrategia suaviza la acción del precio con velas de Heikin-Ashi y determina la dirección de la tendencia y las señales de entrada con el indicador MACD Tradingview para implementar una estrategia cuantitativa de tendencia.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MACD ASHI BARS .v1 ", overlay=false,default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,slippage=1)

// Calculation HA Values 
haopen  = 0.0
haclose = (open + high + low + close) / 4
haopen := na(haopen[1]) ? (open + close) / 2 : (haopen[1] + haclose[1]) / 2
hahigh  = max(high, max(haopen, haclose))
halow   = min(low,  min(haopen, haclose))

// HA colors
hacolor = haclose > haopen ? color.green : color.red
src=haclose



fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = sma(src,slowmacd)
macdslowline2 = sma(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = sma(src,fastmacd)
macdfastline2 = sma(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine = sma(MACDLine, signalmacd)

delta = MACDLine-SignalLine




swap1 = delta>0?color.green:color.red



plot(delta,color=swap1,style=plot.style_columns,title='Histo',histbase=0,transp=20)
p1 = plot(MACDLine,color=color.blue,title='MACD Line')
p2 = plot(SignalLine,color=color.red,title='Signal')
fill(p1, p2, color=color.blue)
hline(0)



yearfrom = input(2020)
yearuntil =input(2042)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(delta,0)  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(delta,0) and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND",  comment="SAT")
else
    strategy.cancel(id="MMSAT")
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


Más.