En la carga de los recursos... Cargando...

El sistema del triple dragón

El autor:¿ Qué pasa?, Fecha: 2023-12-21 11:56:31
Las etiquetas:

img

Resumen general

El Sistema Triple Dragón es una estrategia de trading técnica compuesta que combina el indicador Extended Price Volume Trend (EPVT), el indicador Donchian Channels y el indicador Parabolic SAR. Esta estrategia utiliza las fortalezas complementarias de tres indicadores para identificar la dirección de la tendencia del mercado y las posibles señales de compra y venta.

Principio de la estrategia

Esta estrategia utiliza primero el EPVT y los canales de Donchian para determinar la dirección de la tendencia del mercado. Cuando el EPVT está por encima de su línea de base y el precio está por encima del canal de Donchian superior, sugiere una tendencia alcista. Por el contrario, cuando el EPVT está por debajo de su línea de base y el precio está por debajo del canal de Donchian inferior, sugiere una tendencia bajista.

Después de identificar la dirección de la tendencia, esta estrategia introduce el indicador Parabolic SAR para identificar puntos de entrada y salida específicos. Cuando el Parabolic SAR cruza por debajo del precio, genera una señal de compra. Cuando el Parabolic SAR cruza por encima del precio, genera una señal de venta.

Para validar aún más las señales, esta estrategia también confirma la dirección de la tendencia a través de múltiples marcos de tiempo para evitar ingresar al mercado durante períodos de alta volatilidad.

Análisis de ventajas

La mayor ventaja del sistema Triple Dragon es el uso combinado de tres tipos diferentes de indicadores altamente complementarios para determinar de manera más completa y precisa las tendencias del mercado.

  1. El EPVT puede identificar con precisión los puntos de cambio de tendencia y la fuerza de la tendencia con buenos fundamentos;
  2. Los canales de Donchian pueden determinar claramente la dirección de la tendencia y capturar bien las tendencias;
  3. El SAR parabólico, cuando se combina con indicadores de tendencia, puede identificar con mayor precisión los puntos de entrada y salida.

Al combinar los indicadores de manera orgánica, el sistema Triple Dragón puede aprovechar al máximo las ventajas de cada indicador, lo que resulta en una alta precisión en la evaluación de las tendencias a largo, mediano y largo plazo, una identificación más precisa de los puntos de entrada y salida y una relación riesgo-beneficio superior.

Análisis de riesgos

Como estrategia de cartera de indicadores, Triple Dragon System tiene riesgos controlables en general, pero aún hay algunos riesgos a tener en cuenta:

  1. La EPVT tiene el riesgo de juzgar erróneamente las faltas falsas y las inversiones enormes;
  2. Los canales de Donchian pueden estrecharse durante las consolidaciones laterales, aumentando la probabilidad de señal de error;
  3. Los parámetros parabólicos SAR también pueden afectar en cierta medida a la identificación del punto de compra/venta.

Para hacer frente a los riesgos anteriores, recomendamos ajustar adecuadamente los parámetros de los indicadores y utilizar otros indicadores para el juicio complementario para reducir la probabilidad de fallo de un solo indicador.

Optimización de la estrategia

Hay espacio para una mayor optimización del Sistema Triple Dragón:

  1. Se pueden introducir algoritmos de aprendizaje automático para la optimización automática de parámetros;
  2. Los indicadores de volatilidad pueden considerarse para mejorar la estabilidad;
  3. Los indicadores de sentimiento pueden incorporarse para determinar las fluctuaciones del sentimiento público.

A través de la optimización de parámetros algorítmicos, juicios de combinación de múltiples indicadores y análisis de cuantificación conductual, existe el potencial de mejorar aún más la rentabilidad y la estabilidad del Sistema Triple Dragón.

Conclusión

El Sistema Triple Dragón es una estrategia de cartera de indicadores técnicos que aprovecha las fortalezas complementarias de EPVT, Donchian Channels y Parabolic SAR para determinar las tendencias del mercado e identificar oportunidades comerciales. Esta estrategia tiene juicios precisos, riesgos controlables, múltiples capas de validación y es un sistema efectivo adecuado para inversores a mediano y largo plazo. Continuaremos optimizando el Sistema Triple Dragón para proporciones superiores de riesgo-recompensa.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="TRIPLE DRAGON SYSTEM", overlay=true,default_qty_type = strategy.percent_of_equity,default_qty_value=100,initial_capital=1000,pyramiding=0,commission_value=0.01)
/////////////// DRAG-ON ///// EMA'S /////////////// 
emar = ta.ema(close,5)
plot(emar, color=color.blue, title="S-Fast EMA")
//EMAlengthTRF = input.int(200, minval=1,title = "EMA Filter")
//ematrf = ta.ema(close,EMAlengthTRF)
//plot(ematrf, "EMA-TREND FILTER", color=color.red,linewidth = 4)
/////////////// 1-DRAG-ON /////EXTENDED PRICE VOLUME TREND /////////////// 
lenght = input(200,"EPVT - Trend Lenght")   
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
    runtime.error("No volume is provided by the data vendor.")
src = close

vt = ta.cum(ta.change(src)/src[1]*volume)
upx = ta.highest(vt,lenght)
downx = ta.lowest(vt,lenght)
basex = (upx +downx)/2
VTX = vt - basex

/////////////// 2-DRAG-ON ///// DON TREND /////////////// 

length = input.int(200, minval=1, title = "Donchian Lenght")
lower = ta.lowest(length)
upper = ta.highest(length)
basis = math.avg(upper, lower)

updiff = upper - close
downdiff = lower - close
dontrend = -(updiff + downdiff)   

xupx = ta.highest(dontrend,length) >0 ? ta.highest(dontrend,length) : 0 

xdownx = ta.lowest(dontrend,length) < 0 ?ta.lowest(dontrend,length) :0 
xxbasisxx = math.avg(xdownx, xupx)

inversedragup = xupx[1]  
inversedragdown = xdownx[1]  
inversedragon = (inversedragup+inversedragdown)/2

/////////////// 3-DRAG-ON ///// SUPER SAR-X /////////////// 
start = input(0.02)
increment = input(0.02)
maximum = input(0.8)
entry_bars = input(1, title='Entry on Nth trend bar')

atr = ta.atr(14)

atr := na(atr) ? ta.tr : atr

psar = 0.0  // PSAR
af = 0.0  // Acceleration Factor
trend_dir = 0  // Current direction of PSAR
ep = 0.0  // Extreme point
trend_bars = 0

sar_long_to_short = trend_dir[1] == 1 and close <= psar[1]  // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1]  // PSAR switches from short to long

trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long

// Calculate trend direction
trend_dir := barstate.isfirst[1] and close[1] > open[1] ? 1 : barstate.isfirst[1] and close[1] <= open[1] ? -1 : sar_long_to_short ? -1 : sar_short_to_long ? 1 : nz(trend_dir[1])

trend_bars := sar_long_to_short ? -1 : sar_short_to_long ? 1 : trend_dir == 1 ? nz(trend_bars[1]) + 1 : trend_dir == -1 ? nz(trend_bars[1]) - 1 : nz(trend_bars[1])

// Calculate  Acceleration Factor
af := trend_change ? start : trend_dir == 1 and high > ep[1] or trend_dir == -1 and low < ep[1] ? math.min(maximum, af[1] + increment) : af[1]

// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high : trend_change and trend_dir == -1 ? low : trend_dir == 1 ? math.max(ep[1], high) : math.min(ep[1], low)

// Calculate PSAR
psar := barstate.isfirst[1] and close[1] > open[1] ? low[1] : barstate.isfirst[1] and close[1] <= open[1] ? high[1] : trend_change ? ep[1] : trend_dir == 1 ? psar[1] + af * atr : psar[1] - af * atr

//////////////// MELODY ///////////////////
VTY = ta.valuewhen(ta.cross(VTX,0),close,0)
//plot(VTY, color=color.black, title="Extended-PVT")

//DONTRENDX = ta.valuewhen(ta.cross(dontrend,0),close,0)
//plot(DONTRENDX, color=color.red, title="DONCHIAN TREND")

SSARX = ta.valuewhen(ta.cross(psar,close),close,0)
//plot(SSARX, color=color.black, title="SSAR-X")

MAXDRAG = math.max(SSARX,VTY)
//plot(MAXDRAG, color=color.black, title="MAX DRAG")
MINDRAG = math.min(SSARX,VTY)
//plot(MINDRAG, color=color.black, title="MIN DRAG")
BASEDRAG = math.avg(MAXDRAG,MINDRAG)
//plot(BASEDRAG, color=color.red, title="BASE DRAG")


/////BUY AND SELL LOGIC ///////////
DRAGONBUY = (ta.crossover(close,MAXDRAG) or ta.crossover(close,MINDRAG) )
DRAGONBUYSTOP = (ta.crossunder(close,MAXDRAG) or ta.crossunder(close,MINDRAG)) 
DRAGONBUYPLOT = ta.valuewhen(DRAGONBUY==true,close,0)
plot(DRAGONBUYPLOT, color=color.red, title="BUY LINE")

DRAGONSELL = (ta.crossunder(close,MAXDRAG) or ta.crossunder(close,MINDRAG) ) 
DRAGONSELLSTOP = (ta.crossover(close,MAXDRAG) or ta.crossover(close,MINDRAG))
DRAGONSELLPLOT = ta.valuewhen(DRAGONSELL==true,close,0)
plot(DRAGONSELLPLOT, color=color.red, title="SELL LINE")

/////TAKE PROFIT LOGIC ///////////
tp1 = input.int(5, minval=1,title = "TP-1")
tp2 = input.int(10, minval=1,title = "TP-2")
tp3 = input.int(15, minval=1,title = "TP-3")

TPTAKA1B = DRAGONBUYPLOT*(1+tp1/100)
//plot(TPTAKA1B, "BUY-TP1", color=color.red,linewidth = 1)
TPTAKA2B = DRAGONBUYPLOT*(1+tp2/100)
//plot(TPTAKA2B, "BUY-TP2", color=color.red,linewidth = 1)
TPTAKA3B = DRAGONBUYPLOT*(1+tp3/100)
//plot(TPTAKA3B, "BUY-TP3", color=color.red,linewidth = 1)

TPTAKA1S = DRAGONSELLPLOT*(1-tp1/100)
//plot(TPTAKA1S, "SELL-TP1", color=color.red,linewidth = 1)
TPTAKA2S = DRAGONSELLPLOT*(1-tp2/100)
//plot(TPTAKA2S, "SELL-TP2", color=color.red,linewidth = 1)
TPTAKA3S = DRAGONSELLPLOT*(1-tp3/100)
//plot(TPTAKA3S, "SELL-TP3", color=color.red,linewidth = 1)


BUYTP = ta.crossunder(emar,TPTAKA1B) or ta.crossunder(emar,TPTAKA2B) or ta.crossunder(emar,TPTAKA3B) 
SELLTP = ta.crossover(emar,TPTAKA1B) or ta.crossover(emar,TPTAKA2B) or ta.crossover(emar,TPTAKA3B)

/////STRATEGY ///////////
// Enter condition 
longCondition = DRAGONBUY==true 
if longCondition
    strategy.entry('Long', strategy.long, comment = "ENTER-LONG")

// Exit condition 
strategy.close('Long', when=DRAGONBUYSTOP, comment = "EXIT-LONG")

// Enter condition 
ShortCondition = DRAGONSELL  
if ShortCondition
    strategy.entry('Short', strategy.short, comment = "ENTER-SHORT")

// Exit condition 
strategy.close('Short', when=DRAGONSELLSTOP, comment = "EXIT-SHORT")
///// END OF STRATEGY ///////////

Más.