La estrategia determina la dirección de la tendencia de los precios mediante la comparación de la ATR con el precio mediante el cálculo de la media de la amplitud de fluctuación real, y se combina con una medias móviles auxiliares. En comparación con otros métodos de determinación de tendencias, capta la tendencia de los cambios en los precios más rápidamente y retrocede menos.
La estrategia se basa en los siguientes pasos para determinar la tendencia de los precios:
Calcula el ATR de la media real de los últimos N días. Se utiliza el método de cálculo de ATR definido por Wilder para reflejar mejor la fluctuación actual del mercado.
La línea ascendente y la línea descendente se calculan según los coeficientes de ajuste ATR y atk. La línea ascendente = precio - ((atk multiplicado por ATR); la línea descendente = precio + ((atk multiplicado por ATR)).
Comparación de la relación entre el precio y la línea de subida y bajada, para determinar la dirección de la tendencia. El precio de la línea de subida y bajada es una señal positiva; el precio de la línea de bajada y bajada es una señal negativa.
Cuando se produce una señal de negociación, se hace más o menos. Aquí se combina la media móvil para determinar la calidad de la señal.
La estrategia de control de riesgos de la suspensión de pérdidas.
El uso de colores en la actualidad marca el estado de la estrategia para ayudar a juzgar.
La estrategia aprovecha las ventajas de ATR para capturar rápidamente las tendencias de cambio de precios y realizar operaciones de baja retractación, una estrategia de seguimiento de tendencias más típica.
La estrategia tiene las siguientes ventajas:
Respuesta rápida a los cambios de precios. ATR puede responder rápidamente a las últimas tendencias, lo que ayuda a capturar los cambios de tendencia a tiempo.
La retirada es pequeña. Hay una zona de amortiguamiento en la línea ascendente y descendente que reduce la probabilidad de que se rompa el punto de parada y se reduzca la retirada.
Las señales de negociación son claras. La ruptura del rango de compilación es una señal de negociación de alta calidad, se puede hacer claramente más de una dirección de vacío.
Alta personalización. El ciclo y el multiplicador de ATR se pueden ajustar para adaptarse a diferentes entornos del mercado.
La visualización es fuerte. El uso de herramientas gráficas muestra el estado de la estrategia, la operación es intuitiva.
Fácil de optimizar. Se pueden agregar módulos como el stop loss móvil, el filtro y otros para optimizar aún más.
En general, esta estrategia de retroceso pequeño, ventajas destacadas, adecuada para seguir tendencias, es una estrategia de negociación muy práctica.
La estrategia también tiene ciertos riesgos:
Riesgo de error en el juicio de tendencias. Puede haber señales erróneas cuando los precios oscilan.
El riesgo de elegir un punto de salida. Es necesario elegir un punto de parada razonable para evitar una salida prematura.
Riesgo de optimización de parámetros. El ciclo ATR y el multiplicador requieren una optimización de prueba repetida, y la configuración incorrecta puede afectar el rendimiento de la estrategia.
El riesgo de que la frecuencia de las transacciones sea demasiado alta es que la frecuencia de las transacciones puede ser demasiado alta en momentos de gran volatilidad.
Riesgo de que el resultado sea negativo. En algunos mercados en los que las tendencias no son claras, el resultado puede ser negativo.
Riesgo de ajuste del disco físico. Cuando se opera en el disco físico, también se debe realizar una optimización de ajuste para puntos de deslizamiento, honorarios, etc.
Riesgo sistémico: el control del riesgo del sistema en su conjunto debe ser considerado y no puede depender de la estrategia por sí sola.
Los siguientes pasos pueden ayudar a controlar estos riesgos:
Optimización de los parámetros ATR para mejorar la precisión de los juicios.
Combinado con un análisis de múltiples períodos de tiempo, para determinar las tendencias.
Utiliza el Stop Loss móvil para bloquear ganancias y reducir las retiradas.
El uso de filtros para controlar la frecuencia de las transacciones.
Adaptación de los parámetros de la estrategia a los diferentes mercados.
Prueba las diferentes variedades para encontrar el mejor escenario de aplicación.
En la plataforma real, se consideran todos los riesgos de las transacciones.
La estrategia puede ser optimizada en los siguientes aspectos:
Se introducen indicadores como la línea media para filtrar y reducir las señales erróneas. Se puede agregar un juicio auxiliar de indicadores como MACD, KDJ.
Optimización de los parámetros ATR. Se pueden probar diferentes parámetros ATR para encontrar el valor óptimo.
Optimización de los parámetros multiplicativos. Se pueden probar diferentes parámetros multiplicativos para determinar la sensibilidad de la señal generada.
La inclusión de una estrategia de stop móvil. El stop dinámico basado en el ATR o la volatilidad puede reducir aún más la retirada.
Combinado con el análisis de múltiples marcos de tiempo, se puede filtrar señales falsas ocasionales.
Aprovechar el aprendizaje automático para mejorar el juicio de señales. Aprovechar el entrenamiento de modelos como RNN para juzgar modelos de señales de compra y venta.
Ajuste los parámetros para las características de la variedad. Por ejemplo, para las acciones con fluctuación, se puede reducir adecuadamente el ciclo ATR.
Optimización de los puntos de entrada. Se puede buscar un mejor punto de entrada mediante la búsqueda de brechas y retrocesos.
Indicador de potencia de unión. Adición de la intensidad de la señal auxiliar, como el volumen de intercambio.
Agregar estrategias de frenado. Determinar el punto de frenado de acuerdo con los indicadores de energía de tendencia, etc.
Esta estrategia de tendencia súper es muy práctica en general, con ventajas como respuesta rápida, retroceso pequeño y fácil optimización, es una estrategia de seguimiento de tendencia típica. Pero también se debe tener en cuenta los riesgos de error de juicio y optimización de parámetros, que deben considerarse en su totalidad en el campo real.
/*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)