Estrategia de trading de supertendencia basada en la combinación de ATR y MA


Fecha de creación: 2023-12-01 16:40:27 Última modificación: 2023-12-01 16:40:27
Copiar: 0 Número de Visitas: 1074
1
Seguir
1619
Seguidores

Estrategia de trading de supertendencia basada en la combinación de ATR y MA

Descripción general

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.

Principio de estrategia

El proceso de cálculo de la estrategia de tendencias súper se divide en los siguientes pasos:

  1. El ATR refleja la amplitud de fluctuación promedio durante un período de tiempo.
  2. La línea media de la vía se calcula de acuerdo con los precios más altos y más bajos. La fórmula de cálculo de la línea media de la vía es: ((precio más alto + precio más bajo) / 2
  3. El límite superior y el límite inferior del canal se calculan de acuerdo con el ATR y el número de ATR establecido por el usuario. El límite superior del canal se calcula con la fórmula: línea media + ((ATR × ATR multiplicado por)) y el límite inferior del canal se calcula con la fórmula: línea media - ((ATR × ATR multiplicado por)).
  4. Comparación de la relación entre el precio de cierre y el límite superior e inferior del canal, para determinar la dirección de la tendencia. El precio de cierre por encima del límite superior del canal es la tendencia hacia arriba, el precio de cierre por debajo del límite inferior del canal es la tendencia hacia abajo.
  5. Cuando el precio rompe el canal de tendencia, se realiza una operación inversa. Por ejemplo, el precio rompe el límite superior del canal de abajo hacia arriba, produciendo una señal de compra; el precio rompe el límite inferior del canal de arriba hacia abajo, produciendo una señal de venta.

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.

Análisis de las ventajas

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.

Análisis de riesgos

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.

Dirección de optimización

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.

Resumir

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.

Código Fuente de la Estrategia
/*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)