Estrategia de filtro EMA ADX de triple supertendencia


Fecha de creación: 2023-09-18 14:02:12 Última modificación: 2023-09-18 14:02:12
Copiar: 1 Número de Visitas: 1696
1
Seguir
1617
Seguidores

Descripción general

Se trata de una estrategia de comercio cuantitativa que combina la triple supertrend, los indicadores EMA y ADX. Utiliza el sistema de la triple supertrend para emitir señales de comercio, y combina EMA y ADX como condiciones de filtración para controlar la frecuencia de comercio y mejorar la calidad de la señal de comercio.

Principio de estrategia

  • Un sistema de hipertrend que utiliza tres grupos de diferentes parámetros genera una señal de negociación cuando los tres grupos de hipertrends están en la misma dirección.
  • Aplica EMA como filtro de tendencia, solo hace más cuando el precio de cierre es superior al EMA y hace vacío cuando el precio de cierre es inferior al EMA.
  • Aplica ADX como un filtro de tendencia fuerte y débil, solo para negociar cuando el ADX está por encima del umbral establecido.
  • Permite opciones de reingreso, control de rentabilidad y riesgo de pérdidas.

Concretamente, las condiciones de entrada larga se convierten en posiciones a la baja, las condiciones de entrada corta se convierten en posiciones a la baja, las condiciones de salida cerradas se convierten en posiciones abiertas, las condiciones de salida cerradas se convierten en posiciones abiertas.

La estrategia traza las líneas de resistencia de soporte de tres grupos de tendencias extremas al mismo tiempo, ayudando a determinar la dirección de la tendencia.

Análisis de las ventajas

  • El sistema de triple supertrend puede filtrar falsas rupturas y mejorar la precisión de entrada.
  • El doble filtrado EMA y ADX reduce los daños causados por el whipsaw y aumenta la capacidad de detener los daños.
  • La rentabilidad de la estrategia se puede ajustar según las preferencias de riesgo personales.
  • Combinado con la línea de resistencia de soporte de la tendencia súper visual, ayuda a determinar la dirección de la tendencia.

Análisis de riesgos

  • Hay problemas de retraso en los indicadores como la tendencia de la tendencia, y es posible que se produzcan entradas tardías o salidas anticipadas.
  • Si se eligen condiciones de filtración demasiado estrictas, se pierden oportunidades.
  • En un mercado de reducción, la whipsaw puede causar pérdidas.
  • Permitir el reingreso aumentaría la frecuencia de las transacciones y los costos de los puntos de deslizamiento.

Estos riesgos pueden reducirse mediante la adaptación de la combinación de parámetros, la optimización de las condiciones de filtración y otros métodos. Al mismo tiempo, debe controlar el tamaño de la posición y el estricto cierre de pérdidas para responder a la incertidumbre del mercado.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  • Prueba diferentes combinaciones de parámetros para encontrar el mejor parámetro de supertrend y EMA.
  • Optimización del umbral de ADX para reducir las señales falsas.
  • Añadir filtros de otros indicadores, como la volatilidad, el volumen de transacciones, etc.
  • Optimizar los parámetros para las diferentes variedades y mejorar la adaptabilidad.
  • Establecer mecanismos dinámicos de detención de pérdidas y controlar activamente el riesgo.
  • Buscar mejores reglas de entrada y salida en el campo de juego utilizando métodos como el aprendizaje automático.

Resumir

Esta estrategia aprovecha al máximo las ventajas del triple sistema de supertrend, y se complementa con el doble filtrado EMA y ADX, para mejorar la calidad de la señal de negociación y controlar el riesgo. A través de la optimización de parámetros, el aumento de las condiciones de filtrado y el deterioro dinámico, la fortaleza y la adaptabilidad de la estrategia se pueden mejorar aún más.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 2h
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/
// ©kunjandetroja


//@version=5
strategy('Triple Supertrend with EMA and ADX', overlay=true)

m1 = input.float(1,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 1')
m2 = input.float(2,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 2')
m3 = input.float(3,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 3')
p1 = input.int(10,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 1')
p2 = input.int(15,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 2')
p3 = input.int(20,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 3')
len_EMA = input.int(200,"EMA Len",minval = 5,maxval= 250,step=1)
len_ADX = input.int(14,"ADX Len",minval = 1,maxval= 25,step=1)
len_Di = input.int(14,"Di Len",minval = 1,maxval= 25,step=1)
adx_above = input.float(25,"adx filter",minval = 1,maxval= 50,step=0.5)
var bool long_position = false
adx_filter = input.bool(false, "Add Adx & EMA filter")
renetry = input.bool(true, "Allow Reentry")

f_getColor_Resistance(_dir, _color) =>
    _dir == 1 and _dir == _dir[1] ? _color : na
f_getColor_Support(_dir, _color) =>
    _dir == -1 and _dir == _dir[1] ? _color : na

[superTrend1, dir1] = ta.supertrend(m1, p1)
[superTrend2, dir2] = ta.supertrend(m2, p2)
[superTrend3, dir3] = ta.supertrend(m3, p3)
EMA = ta.ema(close, len_EMA)
[diplus,diminus,adx] = ta.dmi(len_Di,len_ADX)

// ADX Filter
adxup = adx > adx_above and close > EMA
adxdown = adx > adx_above and close < EMA

sum_dir = dir1 + dir2 + dir3

dir_long = if(adx_filter == false)
    sum_dir == -3
else
    sum_dir == -3 and adxup
dir_short = if(adx_filter == false)
    sum_dir == 3
else
    sum_dir == 3 and adxdown
Exit_long = dir1 == 1 and dir1 != dir1[1]
Exit_short = dir1 == -1 and dir1 != dir1[1]

// BuySignal = dir_long and dir_long != dir_long[1]
// SellSignal = dir_short and dir_short != dir_short[1]
// if BuySignal
//     label.new(bar_index, low, 'Long', style=label.style_label_up)
// if SellSignal
//     label.new(bar_index, high, 'Short', style=label.style_label_down)

longenter = if(renetry == false)
    dir_long and long_position == false
else
    dir_long
shortenter = if(renetry == false)
    dir_short and long_position == true
else
    dir_short
if longenter
    long_position := true
if shortenter
    long_position := false

strategy.entry('BUY', strategy.long, when=longenter)
strategy.entry('SELL', strategy.short, when=shortenter)   
strategy.close('BUY', Exit_long)
strategy.close('SELL', Exit_short)

buy1 = ta.barssince(dir_long)
sell1 = ta.barssince(dir_short)

colR1 = f_getColor_Resistance(dir1, color.red)
colS1 = f_getColor_Support(dir1, color.green)

colR2 = f_getColor_Resistance(dir2, color.orange)
colS2 = f_getColor_Support(dir2, color.yellow)

colR3 = f_getColor_Resistance(dir3, color.blue)
colS3 = f_getColor_Support(dir3, color.maroon)

plot(superTrend1, 'R1', colR1, linewidth=2)
plot(superTrend1, 'S1', colS1, linewidth=2)

plot(superTrend2, 'R1', colR2, linewidth=2)
plot(superTrend2, 'S1', colS2, linewidth=2)

plot(superTrend3, 'R1', colR3, linewidth=2)
plot(superTrend3, 'S1', colS3, linewidth=2)

// // Intraday only
// var int new_day = na
// var int new_month = na
// var int new_year = na
// var int close_trades_after_time_of_day = na

// if dayofmonth != dayofmonth[1]
//     new_day := dayofmonth
// if month != month[1]
//     new_month := month
// if year != year[1]
//     new_year := year
// close_trades_after_time_of_day := timestamp(new_year,new_month,new_day,15,15)

// strategy.close_all(time > close_trades_after_time_of_day)