Estrategia de trading cuantitativo basada en los indicadores de tendencia TRSI y SUPER


Fecha de creación: 2023-12-15 16:05:51 Última modificación: 2023-12-15 16:05:51
Copiar: 0 Número de Visitas: 402
1
Seguir
1166
Seguidores

Estrategia de trading cuantitativo basada en los indicadores de tendencia TRSI y SUPER

Descripción general

Esta estrategia combina un indicador relativamente débil (TRSI) y un indicador de tendencia súper (SUPER Trend) para formar un conjunto más completo de estrategias de comercio cuantitativo. La estrategia se utiliza principalmente para capturar tendencias de línea media y larga, mientras que se utiliza un indicador a corto plazo para filtrar las señales de comercio de ruido.

Principio de estrategia

  1. Calcula el indicador TRSI para determinar si el mercado está en un estado de sobrecompra y sobreventa y emite una señal de compra y venta
  2. Filtración de señales de ruido con el indicador SUPER Trend para confirmar tendencias fundamentales
  3. Establecer un Stop Loss en las diferentes etapas del cuadro de ganancias

En concreto, la estrategia primero calcula el indicador TRSI para determinar si hay zonas de sobreventa en el mercado, y luego calcula el indicador SUPER Trend para determinar la dirección de la tendencia general. La combinación de ambos emite una señal de negociación.

Análisis de las ventajas

Esta estrategia tiene las siguientes ventajas:

  1. La combinación de múltiples indicadores mejora la precisión de la señal.
  2. Aplicable para el comercio de tendencias de líneas medianas y largas. Las señales de sobrecompra y sobreventa son propensas a la reversión de la tendencia.
  3. La suspensión de pérdidas se establece de manera razonable, las ganancias se retiran en diferentes proporciones y los riesgos se controlan de manera efectiva.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. El comercio de línea media y larga no puede capturar oportunidades de comercio de línea corta.
  2. El parámetro TRSI está mal configurado y podría haberse perdido la zona de sobreventa.
  3. Los parámetros de SUPER Trend no están configurados correctamente y pueden emitir una señal errónea.
  4. El espacio de parada es demasiado grande para controlar el riesgo de manera efectiva.

En cuanto a los riesgos, podemos optimizar en los siguientes aspectos:

Dirección de optimización

  1. En combinación con más indicadores de corto plazo, se identifican más oportunidades de negociación.
  2. Ajuste el parámetro TRSI para reducir el margen de error.
  3. Prueba y optimización de los parámetros de SUPER Trend.
  4. Establezca un stop floating y siga la línea de stop en tiempo real.

Resumir

Esta estrategia utiliza varios indicadores como el TRSI y la SUPER Trend para formar una estrategia de comercio cuantitativa más completa. Puede identificar de manera efectiva las tendencias de la línea media y larga, al mismo tiempo que establece el riesgo de control de stop loss. La estrategia tiene un gran espacio para la optimización, y luego se puede mejorar en aspectos como mejorar la precisión de la señal, identificar más oportunidades de negociación. En general, es un buen punto de partida para la estrategia cuantitativa.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-14 00:00:00
end: 2023-11-26 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4
strategy(title = "SuperTREX strategy", overlay = true)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
length = input( 14 )
overSold = input( 35 )
overBought = input( 70 )
HTF = input("W", type=input.resolution)
ti = change( time(HTF) ) != 0
p = fixnan( ti ? close : na )

vrsi = rsi(p, length)
price = close
var bool long = na
var bool short = na

long :=crossover(vrsi,overSold) 
short := crossunder(vrsi,overBought)

var float last_open_long = na
var float last_open_short = na

last_open_long := long ? close : nz(last_open_long[1])
last_open_short := short ? close : nz(last_open_short[1])


entry_value =last_open_long
entry_value1=last_open_short

xy=(entry_value+entry_value)/2

// INPUTS //
st_mult   = input(4,   title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(10, title = 'SuperTrend Period',     minval = 1)

// CALCULATIONS //
up_lev =xy - (st_mult * atr(st_period))
dn_lev =xy + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := entry_value[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := entry_value1[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend
plot(xy,color = trend == 1 ? color.green : color.red)

buy=crossover( close, st_line) 
sell1=crossunder(close, st_line) 
 


buy1=buy
//

sell=sell1


// STRATEGY

plotshape(buy , title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)  //plot for sell icon
// Take profit

//
l = buy 
s1=sell 
if l 
    strategy.entry("buy", strategy.long)
if s1 
    strategy.entry("sell", strategy.short)
per(pcnt) =>  strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=25, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=2, minval=0.01)
tp2=input(title=" Take profit2", defval=4, minval=0.01)
tp3=input(title=" Take profit3", defval=6, minval=0.01)
tp4=input(title=" Take profit4", defval=8, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)