
La estrategia de trading de supertrend es una estrategia de seguimiento de tendencias basada en el rango real promedio (ATR) y el promedio móvil (MA). Combina las ventajas de seguir la tendencia y el comercio de ruptura, con el objetivo de identificar la dirección de la tendencia a medio plazo y generar señales de comercio en función de los cambios de tendencia.
La idea principal de la estrategia es que cuando el precio rompe el canal de la supertrend, indica que la tendencia se invierte y se compra o se vende. Al mismo tiempo, establece niveles de stop loss y stop loss para bloquear los beneficios y controlar el riesgo.
El proceso de cálculo de la estrategia de tendencias súper se divide en los siguientes pasos:
La ventaja de esta estrategia es que combina el seguimiento de tendencias con el cambio de tendencias. Se puede determinar la dirección de las tendencias generales y capturar oportunamente las oportunidades de cambio. Además, se establece un mecanismo de suspensión de pérdidas para controlar el riesgo.
Las estrategias de tendencias súper tienen las siguientes ventajas:
1. Seguir las tendencias a medio plazo
El canal de tendencias súper está basado en el cálculo de ATR y es capaz de reflejar eficazmente el rango de fluctuación de los precios a medio plazo. Es más capaz de seguir las tendencias a medio plazo que las medias móviles ordinarias.
2. Capturar el cambio de tendencia a tiempo
Cuando el precio rompe el canal, se emite una señal de negociación rápida para capturar la reversión de la tendencia en el momento oportuno. Esto proporciona la garantía para ajustar adecuadamente la posición y reducir la tenencia por más tiempo.
3. Dispone de un mecanismo de contención de pérdidas
Esta estrategia establece un stop loss y un stop loss simultáneamente, lo que permite detener automáticamente el stop loss. Esto reduce en gran medida el riesgo de pérdidas generalizadas, lo que ayuda a comprender la situación de la tendencia.
4. Cómo hacerla fácil
La estrategia utiliza principalmente la línea media y los indicadores ATR, lo que hace que sea más simple y fácil de dominar. Esto reduce la dificultad de las operaciones en disco.
5. Eficiencia en el uso de los fondos
Las estrategias de supertrend rastrean tendencias a medio plazo y controlan los puntos de deslizamiento individuales, con una mayor eficiencia en el uso de los fondos en general.
Las estrategias de supertrends también tienen algunos riesgos potenciales:
1. El alto costo de oportunidad de la tendencia de la oscilación
Las estrategias de súper tendencias se centran en el seguimiento de tendencias a medio y largo plazo, y en un mercado convulsionado, los costos son más altos y es posible que se pierdan algunas de las oportunidades de caída.
2. El efecto de la optimización de parámetros
La elección del ciclo ATR y el multiplicador de ATR tiene un gran impacto en la eficacia de la estrategia de negociación. Si los parámetros no se ajustan correctamente, la eficacia de la señal de negociación se verá reducida.
3. Existe cierto retraso
El cálculo del canal de supertrend presenta un cierto retraso, que puede ocasionar que las señales no se generen a tiempo. Este es el principal problema que la estrategia necesita resolver.
4. Se requiere un control estricto de los daños.
Si la posición de parada de pérdidas se establece demasiado grande o si el control del viento es imperfecto, puede generar grandes pérdidas en situaciones extremas. Por lo tanto, la estrategia de parada de pérdidas debe ejecutarse estrictamente para obtener ganancias estables.
La estrategia de supertrends también tiene espacio para una mayor optimización, que incluye:
1. Combinación de varios ciclos de ATR
Se pueden combinar varios ciclos de ATR, por ejemplo, 10 y 20 días, para formar un indicador ATR combinado. Esto puede mejorar la sensibilidad del indicador y mejorar el problema del retraso.
2. Aumentar el módulo de estrategias de stop loss
Además, mediante la adición de módulos estratégicos como el triple stop, el stop oscilante y el stop secuencial, se puede reforzar aún más el control de los stop, lo que reduce el riesgo de pérdidas.
3. Optimización de los parámetros
Optimización de la configuración de parámetros, como el ciclo ATR, la multiplicación de ATR, la búsqueda de la combinación óptima de parámetros, puede mejorar aún más los beneficios de la estrategia. Además, los parámetros también se pueden optimizar dinámicamente, seleccionando los valores adecuados según las diferentes variedades y etapas de la situación.
4. Modelos integrados de aprendizaje automático
Finalmente, se puede intentar integrar modelos de aprendizaje automático para la automatización de la determinación de tendencias y la generación de señales. Esto reduce la interferencia de factores subjetivos y puede mejorar aún más la estabilidad de los sistemas de estrategia.
La estrategia de comercio de tendencia súper utiliza el indicador de línea media y el indicador ATR para determinar la tendencia intermedia y generar señales de negociación en el punto de reversión de la tendencia, para lograr un stop loss automático. Al mismo tiempo que captura la tendencia principal, la estrategia también puede aprovechar oportunamente algunas oportunidades de reversión. Su ventaja se refleja principalmente en el seguimiento de la tendencia intermedia, el reconocimiento de la reversión de la tendencia y el control del stop loss.
Sin embargo, la estrategia también tiene ciertas deficiencias, principalmente la falta de comprensión y el retraso en el comportamiento de los shocks. Esto requiere optimización de múltiples maneras, como el ciclo ATR combinado, el aumento del módulo de detención de pérdidas, la optimización de parámetros y la introducción de aprendizaje automático. Esto sin duda puede mejorar aún más la estabilidad y la tasa de oro de la estrategia de supertendencias.
/*backtest
start: 2022-11-30 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Supertrend V1.0 - Buy or Sell Signal",overlay=true)
Factor=input(3, minval=1,maxval = 100)
Pd=input(7, minval=1,maxval = 100)
//Calculating ATR
atrLength = input(title="ATR Length:", defval=14, minval=1)
Stop_Loss_Factor = input(1.5, minval=0,step=0.01)
factor_profit = input(1.0, minval=0,step=0.01)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 10, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2016, title = "From Year", minval = 2009)
ToMonth = input(defval = 4, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 10, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2039, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculate ATR
atrValue=atr(atrLength)
decimals = abs(log(syminfo.mintick) / log(10))
Atr = atrValue
if(decimals == 5)
Atr := atrValue * 10000
if(decimals == 4)
Atr := atrValue * 1000
if(decimals == 3)
Atr := atrValue * 100
if(decimals == 2)
Atr := atrValue * 10
//VJ2 Supertrend
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
TrendUp = 0.0
TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown = 0.0
TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
Trend = 0.0
Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = 0.0
Tsl := Trend==1? TrendUp: TrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)
//plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend")
plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)
//Strategy
Trend_buy = Trend == 1
Trend_buy_prev = Trend[1] == -1
algo_buy_pre = Trend_buy and Trend_buy_prev
algo_buy = algo_buy_pre == 1 ? 1 : na
Trend_sell= Trend == -1
Trend_sell_prev = Trend[1] == 1
algo_sell_pre = Trend_sell and Trend_sell_prev
algo_sell = algo_sell_pre == 1 ? 1:na
strategy.entry("Long1", strategy.long, when= window() and algo_buy==1)
strategy.entry("Short1", strategy.short, when=window() and algo_sell==1)
bought = strategy.position_size > strategy.position_size
sold = strategy.position_size < strategy.position_size
longStop = Stop_Loss_Factor * valuewhen(bought, Atr, 0)
shortStop = Stop_Loss_Factor * valuewhen(sold, Atr, 0)
longProfit = factor_profit * longStop
shortProfit = factor_profit * shortStop
if(decimals == 5)
longStop := longStop *100000
longProfit := longProfit *100000
if(decimals == 4)
longStop := longStop * 10000
longProfit := longProfit * 10000
if(decimals == 3)
longStop := longStop * 1000
longProfit := longProfit * 1000
if(decimals == 2)
longStop := longStop * 100
longProfit := longProfit *100
if(decimals == 5)
shortStop := shortStop * 100000
shortProfit := shortProfit * 100000
if(decimals == 4)
shortStop := shortStop * 10000
shortProfit := shortProfit * 10000
if(decimals == 3)
shortStop := shortStop * 1000
shortProfit := shortProfit * 1000
if(decimals == 2)
shortStop := shortStop * 100
shortProfit := shortProfit * 100
strategy.exit("Exit Long", from_entry = "Long1", loss =longStop, profit = longProfit)
strategy.exit("Exit Short", from_entry = "Short1", loss =shortStop, profit = shortProfit)