Samsuga SuperTrend Estrategia MACD

El autor:¿ Qué pasa?, Fecha: 2024-03-11 11:24:20
Las etiquetas:

img

Resumen general

Esta estrategia combina el indicador SuperTrend y el indicador MACD para capturar pequeñas tendencias para obtener ganancias. Utiliza el indicador SuperTrend para determinar la tendencia actual del mercado y el indicador MACD como condición auxiliar para la entrada y salida.

Principio de la estrategia

  1. Utilice la función ta.supertrend para calcular el indicador SuperTrend con parámetros para el período ATR y el factor multiplicador.
  2. Determine la tendencia larga/corta basada en los cambios en la dirección del indicador SuperTrend. Cuando la dirección cambia de mayor a menor o igual a 0, se considera una tendencia alcista; de lo contrario, se considera una tendencia bajista.
  3. Utilice la función request.security para obtener los valores del indicador MACD en el intervalo de tiempo de 30 minutos, incluida la línea MACD, la línea de señal y el histograma.
  4. En una tendencia alcista, si el histograma MACD es mayor que 0, abrir una posición larga y cerrar cualquier posición corta anterior.
  5. En una tendencia bajista, si el histograma MACD es inferior a 0, abrir una posición corta y cerrar cualquier posición larga anterior.

Análisis de ventajas

  1. Combina indicadores de tendencia y de impulso, lo que le permite adaptarse bien a las diferentes condiciones del mercado.
  2. Utiliza un indicador MACD con un marco de tiempo más largo como condición auxiliar, que puede filtrar efectivamente algunas señales falsas.
  3. La lógica de la estrategia es simple y directa, fácil de entender e implementar, adecuada para que los principiantes aprendan.
  4. Los parámetros de la estrategia son ajustables y pueden optimizarse para diferentes mercados e instrumentos.

Análisis de riesgos

  1. La estrategia puede generar señales de negociación frecuentes en mercados agitados, lo que conduce a una alta frecuencia de negociación y costos de deslizamiento.
  2. El indicador SuperTrend es sensible a la configuración de los parámetros, y los diferentes valores de los parámetros pueden producir resultados diferentes.
  3. El indicador MACD puede experimentar una divergencia con respecto al precio, lo que puede dar lugar a señales de negociación erróneas.
  4. La estrategia carece de medidas de stop-loss, lo que puede exponerla a un mayor riesgo durante una continuidad de tendencia débil o eventos inesperados.

Dirección de optimización

  1. Considere la posibilidad de añadir más condiciones de filtrado, como la ruptura del precio a través de niveles de soporte/resistencia importantes, cambios en el volumen de negociación, etc., para mejorar la fiabilidad de la señal.
  2. Para los mercados agitados, considere utilizar un indicador MACD de plazo más corto u otros indicadores adecuados para mercados de rango para determinar la tendencia.
  3. Incorporar medidas de stop-loss, como stop-loss de punto fijo, stop-loss de seguimiento, etc., para controlar el riesgo máximo por operación.
  4. Optimizar los parámetros para diferentes mercados e instrumentos para encontrar las combinaciones de parámetros más adecuadas.

Conclusión

Al combinar el indicador SuperTrend y el indicador MACD, esta estrategia captura pequeñas tendencias mientras también considera la continuidad de la tendencia, por lo que es una estrategia relativamente completa y equilibrada. Las fortalezas de la estrategia se encuentran en su lógica clara, facilidad de comprensión e implementación, y el uso de un indicador MACD de plazo más largo como condición auxiliar para filtrar eficazmente las señales falsas. Sin embargo, la estrategia también tiene algunos riesgos, como el potencial de comercio frecuente en mercados agitados, sensibilidad a la configuración de parámetros y falta de medidas de stop-loss. Para abordar estos riesgos, se pueden hacer mejoras agregando más condiciones de filtrado, optimizando parámetros, incorporando stop-loss, etc. En general, esta estrategia puede servir como un marco de estrategia básico que, con optimización y mejora continuas, tiene el potencial de convertirse en una estrategia consistentemente rentable.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Samsuga supertrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 3
macdp2=10
macdp3=6

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = "30",expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
if(longcondition)
    if(histLine[0] > 0)    
        strategy.close("Short",comment = "E-S", alert_message = "E-S",disable_alert = true)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
else if(shortCondition) 
    if(histLine[0] < 0)    
        strategy.close("Long",comment = "E-L",alert_message = "E-L",disable_alert = true)
        strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")

Más.