Este artigo detalha uma estratégia de quantificação que utiliza o indicador RSI para formar sinais de negociação. Esta estratégia trata o indicador RSI e define as condições de entrada e saída de negociações com muito espaço.
Princípios estratégicos
A principal lógica de negociação da estratégia é a seguinte:
Calcule o indicador RSI ((14) e use o EMA ((28) para suavizá-lo, obtendo o indicador de oscilação após o tratamento.
A banda de Brin é calculada com base no indicador de RSI processado, obtendo uma trajectória ascendente e descendente. Configure um intervalo de sobrecompra e sobrevenda.
Quando o RSI é tratado abaixo da linha de entrada, gera um sinal de compra; quando a linha de entrada é atravessada, gera um sinal de venda.
Quando o indicador entra em um intervalo de sobrevenda, um sinal de equilíbrio é gerado.
Desta forma, pode-se aproveitar as características do indicador RSI para capturar oportunidades de reversão e processar o indicador para melhorar a qualidade do sinal e o valor de referência.
A vantagem estratégica
A maior vantagem desta estratégia é que o processo de processamento de indicadores aumenta o espaço para parâmetros, permitindo um controle rigoroso da frequência de negociação e evitando a sobre-transação.
Outra vantagem é que as condições de entrada são simples e intuitivas, e o tempo de negociação pode ser avaliado com base nos valores claros dos indicadores.
Por fim, a configuração de uma faixa de overbought e oversold também ajuda a deter o stop loss em tempo hábil e a controlar o risco de uma única transação.
C. Riscos potenciais
Mas a estratégia também traz os seguintes riscos:
Em primeiro lugar, o indicador RSI concentra-se na inversão de tendências e é propenso a produzir sinais errôneos na tendência.
Em segundo lugar, a configuração inadequada dos parâmetros também pode levar à otimização excessiva e à incapacidade de se adaptar às mudanças na estrutura do mercado.
Por fim, uma baixa taxa de vitória exige um certo nível de pressão de perda.
Quatro conteúdos, resumo
Este artigo apresenta principalmente uma estratégia de negociação quantitativa que utiliza o indicador RSI. Ela controla a frequência de negociação por meio de regulação de parâmetros e regras claras de entrada e saída. Ao mesmo tempo em que otimiza os parâmetros, também precisa controlar o risco de negociação inversa.
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//-----------------------------------------------------------------
//This simple strategy base on RSI, EMA, Bollinger Bands to get Buy and Sell Signal with detail as below:
//-----------------------------------------------------------------
//1.Define Oscillator Line
//+ Oscillator Line is smoothed by ema(28) of RSI(14) on H1 Timeframe
//2.Define Overbought and Oversold
//+ Apply Bollinger Bands BB(80,3) on Oscillator Line and calculate %b
//+ Overbought Zone marked above level 0.8
//+ Oversold Zone marked below level 0.2
//3.Buy Signal
//+ Entry Long Positon when %b crossover Point of Entry Long
//+ Deafault Point of Entry Long is 0.2
//+ Buy signal marked by Green dot
//4.Sell Signal
//+ Entry Short Position when %b crossunder Point of Entry Short
//+ Deafault Point of Entry Short is 0.8
//+ Sell signal marked by Red dot
//5.Exit Signal
//+ Exit Position (both Long and Short) when %b go into Overbought Zone or Oversold Zone
//+ Exit signal marked by Yellow dot
//-----------------------------------------------------------------
strategy(title="RSI %b Signal [H1 Backtesting]", overlay=false)
//RSI
rsi_gr="=== RSI ==="
rsi_len = input(14, title = "RSI",inline="set",group=rsi_gr)
smoothed_len = input(28, title = "EMA",inline="set",group=rsi_gr)
rsi=ta.ema(ta.rsi(close,rsi_len),smoothed_len)
//rsi's BOLLINGER BANDS
pb_gr="=== %b ==="
length = input(80, title = "Length",inline="set1",group=pb_gr)
rsimult = input(3.0, title = "Multiplier",inline="set1",group=pb_gr)
ovb = input(0.8, title = "Overbought",inline="set2",group=pb_gr)
ovs = input(0.2, title = "Oversold",inline="set2",group=pb_gr)
et_short = input(0.8, title = "Entry Short",inline="set3",group=pb_gr)
et_long = input(0.2, title = "Entry Long",inline="set3",group=pb_gr)
[rsibasis, rsiupper, rsilower] = ta.bb(rsi, length, rsimult)
//rsi's %B
rsipB = ((rsi - rsilower) / (rsiupper - rsilower))
plot(rsipB, title="rsi's %B", color=rsipB>math.min(ovb,et_short)?color.red:rsipB<math.max(ovs,et_long)?color.green:color.aqua, linewidth=1)
h1=hline(1,color=color.new(color.red,100))
h4=hline(ovb,color=color.new(color.red,100))
h0=hline(0,color=color.new(color.green,100))
h3=hline(ovs,color=color.new(color.green,100))
h5=hline(0.5,color=color.new(color.silver,0),linestyle=hline.style_dotted)
fill(h1,h4, title="Resistance", color=color.new(color.red,90))
fill(h0,h3, title="Support", color=color.new(color.green,90))
//Signal
rsi_buy=
rsipB[1]<et_long
and
rsipB>et_long
rsi_sell=
rsipB[1]>et_short
and
rsipB<et_short
rsi_exit=
(rsipB[1]>ovs and rsipB<ovs)
or
(rsipB[1]<ovb and rsipB>ovb)
plotshape(rsi_buy?rsipB:na,title="Buy",style=shape.circle,color=color.new(color.green,0),location=location.absolute)
plotshape(rsi_sell?rsipB:na,title="Sell",style=shape.circle,color=color.new(color.red,0),location=location.absolute)
plotshape(rsi_exit?rsipB:na,title="Exit",style=shape.circle,color=color.new(color.yellow,0),location=location.absolute)
//Alert
strategy.entry("Long",strategy.long,when=rsi_buy)
strategy.close("Long",when=rsi_exit)
strategy.entry("Short",strategy.short,when=rsi_sell)
strategy.close("Short",when=rsi_exit)
//EOF