Este artigo detalha uma estratégia de negociação quantitativa que usa o indicador RSI de vários períodos para determinar o ponto de inflexão. A estratégia analisa simultaneamente vários indicadores RSI para identificar a formação de pontos de inflexão no mercado.
Princípios estratégicos
A estratégia usa 3 grupos de indicadores RSI com diferentes configurações de parâmetros, com a seguinte lógica:
Calcule o valor do RSI em 2 ciclos, 7 ciclos e 14 ciclos, respectivamente;
Quando o RSI-2 é menor que 10, o RSI-7 é menor que 20 e o RSI-14 é menor que 30, é considerado um fundo;
Quando o RSI-2 é maior que 90, o RSI-7 é maior que 80 e o RSI-14 é maior que 70, é considerado a formação do topo.
De acordo com a consistência do indicador RSI, gera um sinal de compra e venda.
Parâmetros para requisitos de consistência de indicadores podem ser predefinidos para controlar a frequência do sinal.
Assim, a análise de conjuntos de indicadores RSI de vários períodos pode melhorar a precisão do julgamento do ponto de reversão.
A vantagem estratégica
A maior vantagem desta estratégia é a utilização de indicadores RSI de múltiplos períodos para a análise de conjuntos, o que pode melhorar a precisão de julgamento de pontos-chave, eliminando falsos sinais.
Outra vantagem é que pode ser ajustado o parâmetro de consistência, controlar a frequência de negociação e adaptar-se a diferentes ambientes de mercado.
Finalmente, a combinação de RSI de diferentes períodos também oferece mais espaço para otimização.
C. Riscos potenciais
Mas a estratégia também traz os seguintes riscos:
Em primeiro lugar, há um problema de atraso no julgamento do RSI sobre a inversão de preços.
Em segundo lugar, é difícil avaliar os sinais de uma combinação de indicadores múltiplos e é necessário definir regras de filtragem claras.
Por fim, a inversão de tendência tem uma certa taxa de fracasso, o que requer uma preparação psicológica.
Quatro conteúdos, resumo
Este artigo detalha uma estratégia de negociação quantitativa baseada na identificação de pontos de inflexão do indicador RSI de vários períodos. Ela aumenta a capacidade de identificação de pontos de inflexão do mercado, julgando a consistência do indicador RSI. Mas também precisa evitar problemas de atraso e erros de julgamento de sinais.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Triple RSI Top/Bottom v1.1", shorttitle = "3RSI Top/Bottom 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
indi = input(3, defval = 3, minval = 1, maxval = 3, title = "Indicators")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))
//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))
//Body
body = abs(close - open)
abody = sma(body, 10)
//Signals
acc = 10 - accuracy
signalup1 = fastrsi < (5 + acc) ? 1 : 0
signalup2 = middlersi < (10 + acc * 2) ? 1 : 0
signalup3 = slowrsi < (15 + acc * 3) ? 1 : 0
signaldn1 = fastrsi > (95 - acc) ? 1 : 0
signaldn2 = middlersi > (90 - acc * 2) ? 1 : 0
signaldn3 = slowrsi > (85 - acc * 3) ? 1 : 0
up = signalup1 + signalup2 + signalup3 >= indi
dn = signaldn1 + signaldn2 + signaldn3 >= indi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3
//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1]
if up
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot)
if dn
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Top", strategy.short, needshort == false ? 0 : lot)
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()