Estratégia de cross-timeframe baseada no indicador RSI


Data de criação: 2023-12-29 14:12:54 última modificação: 2023-12-29 14:12:54
cópia: 0 Cliques: 647
1
focar em
1623
Seguidores

Estratégia de cross-timeframe baseada no indicador RSI

Visão geral

Esta estratégia é uma estratégia de shorting de BTC em um quadro de tempo transversal baseado no indicador RSI. A estratégia obtém uma curva VWAP calculando o preço médio ponderado por transação (VWAP) para cada linha K e aplicando o indicador RSI a essa curva.

Princípio da estratégia

  1. Calcule a média ponderada do volume de transação (VWAP) para cada linha K, obtendo uma curva VWAP
  2. Aplicando o indicador RSI à curva VWAP, o parâmetro é de 20 dias, a linha de sobrevenda é de 85 dias e a linha de sobrevenda é de 30 dias.
  3. Quando o indicador RSI atravessa a zona de sobrevenda ((85) para baixo e a zona de sobrevenda ((30) para baixo, a posição é fechada
  4. Depois de manter 28 linhas de K, se o indicador RSI atravessar novamente a linha de venda excessiva (<30), a posição será baixa

Análise de vantagens

  1. Usar VWAP em vez de um simples preço de fechamento reflete melhor o preço real da transação
  2. Aplicar o indicador RSI para identificar os excessos de compra e venda, evitando a perseguição dos altos e baixos
  3. Operação em quadros temporais para evitar armadilhas
  4. Risco controlado, 28 linhas K sem danos

Riscos e soluções

  1. O evento provocou um rápido aumento dos preços, que não pararam de aumentar.
    • A adoção de uma estrutura de tempo para reduzir o risco de captura
  2. Parâmetros mal definidos e oportunidades perdidas
    • Teste e otimização dos parâmetros RSI e da linha de sobrecompra sobrevenda
  3. A linha K não consegue atravessar para entrar na zona de supermercados
    • Parâmetros de ajuste flexível em combinação com outras tendências de avaliação de indicadores

Direção de otimização

  1. Teste mais combinações de parâmetros para encontrar o melhor
  2. Combinado com MACD, KD e outros indicadores para determinar se está entrando em uma zona de sobrecompra ou sobrevenda
  3. Configuração de parâmetros de teste para diferentes variedades
  4. Optimizar o mecanismo de parada de perdas, ajustando a amplitude de parada de perdas de acordo com a taxa de flutuação

Resumir

Esta estratégia identifica o estado de sobrevenda e sobrevenda do BTC através da combinação de VWAP e RSI, opera de forma a controlar o risco de forma eficaz. A estratégia é clara e fácil de entender, vale a pena testar e otimizar ainda mais, e é aplicada a negociações em disco.

Código-fonte da estratégia
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4

strategy("Soran Strategy 2 - SHORT SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)


// ----------------- Inputs ----------------- //

reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).

// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28


stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)

stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)


// --------------- Laguerre ----------------- //

laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")

laguerre_cal(s,g) =>
    l0 = 0.0
    l1 = 0.0
    l2 = 0.0
    l3 = 0.0
    l0 := (1 - g)*s+g*nz(l0[1])
    l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
    l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
    l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
    (l0 + 2*l1 + 2*l2 + l3)/6


// ---------------- Rsi VWAP ---------------- //

rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))

rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV


// ------------------ Plots ----------------- //

prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)


// ---------------- Positions: only shows the Short and close shoret positions --------------- //

timebull = stratbull and time > stratstart
timebear = stratbear and time > stratstart


strategy.entry("Short", false, when = timebear and crossunder(rsiVWAP, ovrbgt), comment="")
strategy.close("Short", when = timebear and crossunder(rsiVWAP, ovrsld)[lateleave] or crossover(rsiVWAP, ovrsld), comment="")