Estratégia de negociação quantitativa baseada nos indicadores TRSI e SUPER

Autora:ChaoZhang, Data: 2023-12-15 16:05:51
Tags:

img

Resumo

Esta estratégia combina o índice de força relativa (TRSI) e os indicadores Super Trend para formar uma estratégia de negociação quantitativa relativamente completa.

Estratégia lógica

  1. Calcular o indicador TRSI para determinar se o mercado está em estado de sobrecompra ou sobrevenda e emitir sinais de compra e venda
  2. Usar o indicador Super Trend para filtrar sinais de ruído e confirmar a tendência subjacente
  3. Estabelecer pontos de stop loss e take profit em diferentes estágios das posições rentáveis

Especificamente, a estratégia primeiro calcula o indicador TRSI para julgar se o mercado entrou na zona de sobrecompra ou sobrevenda e, em seguida, calcula o indicador Super Trend para determinar a direção da tendência principal.

Análise das vantagens

Esta estratégia tem as seguintes vantagens:

  1. A combinação de múltiplos indicadores melhora a precisão do sinal.
  2. Aplica-se à negociação de tendências de médio e longo prazo.
  3. As configurações de stop loss e take profit são razoáveis, retirando diferentes proporções de fundos em diferentes estágios de rentabilidade para controlar eficazmente o risco.

Análise de riscos

Esta estratégia tem também alguns riscos:

  1. A negociação de médio a longo prazo não consegue aproveitar as oportunidades de negociação de curto prazo.
  2. A configuração incorreta do parâmetro TRSI pode deixar de fora as zonas de sobrecompra e sobrevenda.
  3. Configurações incorretas do parâmetro Super Trend podem emitir sinais errados.
  4. Um espaço de stop loss excessivamente grande não permite controlar eficazmente os riscos.

Para enfrentar estes riscos, podemos otimizar os seguintes aspectos:

Orientações de otimização

  1. Incorporar mais indicadores de curto prazo para identificar mais oportunidades comerciais.
  2. Ajustar os parâmetros TRSI para reduzir o intervalo de erro.
  3. Teste e otimize os parâmetros da Super Tendência.
  4. Configure perdas de stop flutuantes para rastrear linhas de stop loss em tempo real.

Resumo

Esta estratégia integra múltiplos indicadores como TRSI e Super Trend para formar uma estratégia de negociação quantitativa relativamente completa. Pode identificar efetivamente tendências de médio a longo prazo enquanto define stop loss e take profit para controlar riscos. Ainda há muito espaço para otimização, com melhorias possíveis em áreas como melhorar a precisão do sinal e identificar mais oportunidades de negociação.


/*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)


Mais.