Estrategia de Supertrend mejorada de la EMA

El autor:¿ Qué pasa?, Fecha: 2023-10-07 10:07:15
Las etiquetas:

Resumen general

Esta estrategia juzga la dirección de la tendencia del precio comparando el ATR y el precio, combinado con el juicio asistente de promedio móvil.

Principio de la estrategia

Los principales pasos de esta estrategia para determinar la tendencia de los precios son:

  1. Calcular el ATR de los últimos N días, utilizando el método de cálculo del ATR de Wilder, que puede reflejar mejor la volatilidad actual del mercado.

  2. Calcule las bandas superior e inferior basándose en ATR y el coeficiente atk. banda superior = precio - (atk x ATR); banda inferior = precio + (atk x ATR). atk se establece generalmente entre 2-3.

  3. Compare el precio con las bandas superior e inferior para determinar la dirección de la tendencia.

  4. Tomar largo o corto cuando ocurre la señal de negociación.

  5. Añadir una estrategia de stop loss para controlar los riesgos.

  6. Utilice el marcado de color para el estado de la estrategia para ayudar a juzgar.

Esta estrategia aprovecha al máximo las ventajas del ATR para captar rápidamente los cambios de tendencia de precios y lograr operaciones de baja utilización.

Ventajas

Las ventajas de esta estrategia incluyen:

  1. ATR puede responder rápidamente a las últimas tendencias del mercado y ayudar a captar los cambios de tendencia a tiempo.

  2. La zona de amortización entre las bandas superior e inferior puede reducir la probabilidad de ruptura de stop loss y reducción de los drawdowns.

  3. Las rupturas de rango son señales de alta calidad para direcciones largas y cortas.

  4. Alto grado de personalización: el período de ATR y el multiplicador son ajustables para adaptarse a diferentes entornos de mercado.

  5. Las herramientas gráficas muestran el estado de la estrategia de forma intuitiva.

  6. Fácil de optimizar. módulos como movimiento stop loss, filtro se puede añadir para una mayor optimización.

En general, esta estrategia tiene ventajas sobresalientes, como un pequeño descenso, lo que la hace muy adecuada para estrategias de tendencia.

Los riesgos

También hay algunos riesgos:

  1. Riesgo de error en la determinación de la tendencia: pueden producirse señales erróneas durante la consolidación de precios.

  2. El riesgo de selección del punto de salida: el punto de stop loss debe fijarse razonablemente para evitar una salida prematura.

  3. El riesgo de optimización de parámetros: el período de ATR y el multiplicador requieren pruebas y optimización repetitivas, los ajustes incorrectos afectarán el rendimiento.

  4. Riesgo de alta frecuencia de operaciones: la frecuencia de operaciones puede ser demasiado alta durante la volatilidad extrema del mercado.

  5. Riesgo de rendimiento mediano: el rendimiento puede ser insatisfactorio en algunos mercados sin tendencias obvias.

  6. Ajuste para el riesgo de negociación en vivo. Se deben hacer ajustes para el deslizamiento, la comisión en el comercio en vivo.

  7. El riesgo sistemático: debe considerarse el control general del riesgo del sistema, en lugar de basarse únicamente en esta estrategia.

Los riesgos pueden controlarse mediante:

  1. Optimizando los parámetros de ATR para mejorar la precisión.

  2. El uso de análisis de marcos de tiempo múltiples para determinar las tendencias.

  3. Adoptar un stop loss móvil para asegurar las ganancias y reducir las reducciones.

  4. Añadiendo filtros para controlar la frecuencia de negociación.

  5. Ajuste de parámetros para diferentes mercados.

  6. Prueba de diferentes productos para encontrar el mejor escenario de aplicación.

  7. Consideración exhaustiva de todos los riesgos comerciales en el comercio en vivo.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Añadir filtros como las medias móviles para reducir las señales incorrectas.

  2. Optimización de los parámetros del ATR mediante pruebas de diferentes períodos para encontrar valores óptimos.

  3. Optimización del parámetro multiplicador para determinar la sensibilidad de la generación de señal.

  4. Añadir estrategias dinámicas de stop loss basadas en ATR o volatilidad.

  5. Usando indicadores de marcos de tiempo más altos para el análisis para filtrar señales falsas esporádicas.

  6. Adoptar modelos de aprendizaje automático como RNN para mejorar el juicio de la señal.

  7. Ajuste de los parámetros en función de las características del producto, por ejemplo, utilizando un período ATR más corto para las existencias volátiles.

  8. Optimizar los puntos de entrada mediante el uso de enfoques de retiro de ruptura para encontrar mejores entradas.

  9. Combinando indicadores de volumen para juzgar la intensidad de la señal.

  10. Agregar estrategias de toma de ganancias basadas en indicadores de impulso de tendencia.

Conclusión

En general, esta estrategia de súper tendencia es muy práctica con ventajas como respuesta rápida y reducción pequeña. Es un sistema típico de seguimiento de tendencias. Pero los riesgos como errores de juicio y optimización de parámetros deben ser observados en el comercio en vivo, y se debe implementar una gestión de riesgos integral.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => true
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short, when = window())
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)

//@version=3
//study(title="3 Moving Average Exponential", shorttitle="3 EMA", overlay=true)
//len1 = input(17, minval=1, title="Fast")
//len2 = input(72, minval=1, title="Medium")
len3 = input(305, minval=1, title="Slow")
//src1 = input(close, title="Source Fast")
//src2 = input(close, title="Source Medium")
src3 = input(close, title="Source Slow")
//out1 = ema(src1, len1)
//out2 = ema(src2, len2)
out3 = ema(src3, len3)
//plot(out1, title="EMA1", color=fuchsia)
//plot(out2, title="EMA2", color=orange)
plot(out3, title="EMA3", color=color.blue)

Más.