Esta estratégia usa o cruzamento do indicador RSI e sua média móvel como sinais de negociação, pertencente às estratégias comuns de indicador de impulso. Seu princípio central é rastrear a diferença entre o indicador RSI e a média móvel simples SMA_RSI do RSI, e depois calcular a média móvel simples SMA_RSI2 desta diferença. Quando o SMA_RSI2 cruza acima do limiar, vá longo. Quando cruza abaixo do limiar, feche a posição.
A estratégia usa 3 parâmetros para calcular o indicador RSI e suas duas médias móveis simples com períodos diferentes. Primeiro, calcule o indicador RSI regular com o comprimento do período. Em seguida, calcule o SMA_RSI do RSI do período de duração2. Finalmente, calcule a diferença delta entre o RSI e o SMA_RSI, e depois calcule o SMA_RSI2 do delta do período de duração3. Quando o SMA_RSI2 cruza acima do limiar definido pelo usuário, faça negociações longas. Quando o SMA_RSI2 cruza abaixo do limiar, feche as posições.
Assim, uma estratégia de sinal de negociação baseada no cruzamento das médias móveis do indicador RSI é formada.
A estratégia combina as vantagens dos indicadores RSI e suas médias móveis para seguir as tendências de preços e evitar enganos por ruído.
As vantagens específicas são:
Esta estratégia apresenta também alguns riscos, que se refletem principalmente nos seguintes aspectos:
Os seguintes aspectos podem ser melhorados:
Esta estratégia é relativamente simples e universal. Ao aumentar a praticidade do próprio indicador RSI através de operações aritméticas delta e usando crossover para julgar, ele tem bom controle de drawdown e é uma estratégia de indicador de momentum muito prática.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy ("RSI&SMA", overlay=false ) startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0) end = timestamp((9999), (1), (1), 0, 0) _testPeriod() => true length = input(3, minval=1, title = "RSI period") length2 = input(21, minval=1, title = "RSI SMA-1") length3 = input(13, minval=1, title = "RSI SMA-2") threshold = input(0,step=0.5, title="Threshold") filter = input(false, title="Use filter?") up = rma (max (change (close), 0), length) down = rma (-min (change (close), 0), length) RSI = down == 0? 100: up == 0? 0: 100-100 / (1 + up / down) SMA_RSI = sma(RSI, length2) delta = RSI-SMA_RSI SMA_RSI2 = sma(delta, length3) Long = crossover(SMA_RSI2, threshold) Short = crossunder(SMA_RSI2, threshold) plot(threshold, color=color.silver) plot(SMA_RSI2, color= SMA_RSI2 > 0 ? color.blue : color.purple) //plot(SMA_RSI, color=color.green) //plot(delta, color=color.red) long_condition = Long and (filter ? close > ema(close, 200) : true) and _testPeriod() strategy.entry('BUY', strategy.long, when=long_condition) short_condition = Short strategy.close('BUY', when=short_condition)