Estratégia dupla: combinação do RSI e do oscilador estocástico

Autora:ChaoZhang, Data: 2023-10-07 16:19:30
Tags:

Resumo

Esta estratégia combina o índice de força relativa (RSI) com o oscilador estocástico para formar uma estratégia dupla para identificar com mais precisão as condições de mercado de sobrecompra e sobrevenda, gerando assim sinais de negociação mais confiáveis.

Como funciona

O RSI nesta estratégia tem um período de 14, com um limiar de sobrecompra em 70 e um limiar de sobrevenda em 30. A linha %K do oscilador estocástico usa uma SMA de 3 períodos, e sua linha %D é uma SMA de 3 períodos de %K. Um cruzamento de alta ocorre quando %K cruza acima de %D, enquanto um cruzamento de baixa ocorre quando %K cruza abaixo de %D.

Os sinais de negociação são gerados com base nos indicadores combinados:

  1. Quando um crossover de alta ocorre no Estocástico e o RSI está acima de 70, um sinal de sobrecompra é gerado para ir curto.

  2. Quando um crossover de baixa ocorre no Stochastic e o RSI está abaixo de 30, um sinal de sobrevenda é gerado para ir longo.

Esta estratégia dupla aproveita a força do RSI para identificar níveis de sobrecompra/supervenda, ao mesmo tempo em que utiliza a característica de tendência do Stochastic para filtrar sinais falsos, resultando em entradas de negociação mais confiáveis.

Vantagens

A maior vantagem desta dupla estratégia é a redução significativa dos falsos sinais e a melhoria da fiabilidade.

O RSI por si só pode gerar sinais falsos excessivos. Isso ocorre porque o RSI reflete apenas os níveis de sobreextension do preço sem considerar a direção da tendência. Assim, os sinais independentes do RSI tendem a ser pouco confiáveis.

Por outro lado, o oscilador estocástico pode identificar a direção da tendência.

Por outro lado, um cruzamento descendente implica uma inversão de tendência iminente.

Por conseguinte, a combinação do RSI e do Estocástico pode identificar melhor os níveis de sobreextenção e a direccionalidade da tendência, filtrando sinais não confiáveis e localizando pontos de virada de alta probabilidade.

Riscos

Há também riscos a considerar ao utilizar esta estratégia:

  1. A abordagem de indicadores duplos pode filtrar alguns sinais válidos, causando oportunidades de negociação perdidas.

  2. O ajuste fino de parâmetros como período RSI e suavização estocástica é fundamental, caso contrário a precisão do sinal pode ser comprometida.

  3. A confirmação do ímpeto do preço e do volume ainda é necessária ao receber sinais para evitar falsas rupturas.

  4. Esteja ciente dos riscos sistémicos e evite negociações às cegas durante a alta volatilidade do mercado.

Reforço

Esta estratégia pode ser reforçada por vários aspectos:

  1. Otimizar os parâmetros RSI e Estocástico através de backtesting para encontrar combinações ideais.

  2. Incorporar indicadores de volume para confirmação de sinal, como picos de volume.

  3. Adicione sobreposições de tendência, como médias móveis, para evitar ruídos de mercado.

  4. Utilize o aprendizado de máquina para descobrir combinações de sinais mais sofisticadas que incorporem Bandas de Bollinger, padrões de preços, etc., para melhorar a consistência.

  5. Aproveitar a aprendizagem profunda e a análise de grandes volumes de dados para desenvolver sistemas de negociação multiuso mais inteligentes com maior eficiência de amostragem.

Conclusão

Em resumo, a estratégia dupla RSI-Stocástica utiliza efetivamente os pontos fortes de cada um através de modelagem de conjunto. Em comparação com o RSI autônomo, oferece capacidade de filtragem superior e precisão de sinal.


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Based on Divergences and Hidden Divergences
//Locates bottom market and reversals

strategy("Vix FIX / StochRSI Strategy", pyramiding=9, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=3, overlay=false)

///////////// Stochastic Slow
Stochlength = input(14, minval=1, title="lookback length of Stochastic")
StochOverBought = input(80, title="Stochastic overbought condition")
StochOverSold = input(20, title="Stochastic oversold condition")
smoothK = input(3, title="smoothing of Stochastic %K ")
smoothD = input(3, title="moving average of Stochastic %K")
k = sma(stoch(close, high, low, Stochlength), smoothK)
d = sma(k, smoothD)

 
///////////// RSI 
RSIlength = input( 14, minval=1 , title="lookback length of RSI")
RSIOverBought = input( 70  , title="RSI overbought condition")
RSIOverSold = input( 30  , title="RSI oversold condition")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)

///////////// Double strategy: RSI strategy + Stochastic strategy

pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
new = input(false, title="-------Text Plots Below Use Original Criteria-------" )
sbc = input(false, title="Show Text Plot if WVF WAS True and IS Now False")
sbcc = input(false, title="Show Text Plot if WVF IS True")
new2 = input(false, title="-------Text Plots Below Use FILTERED Criteria-------" )
sbcFilt = input(true, title="Show Text Plot For Filtered Entry")
sbcAggr = input(true, title="Show Text Plot For AGGRESSIVE Filtered Entry")
ltLB = input(40, minval=25, maxval=99, title="Long-Term Look Back Current Bar Has To Close Below This Value OR Medium Term--Default=40")
mtLB = input(14, minval=10, maxval=20, title="Medium-Term Look Back Current Bar Has To Close Below This Value OR Long Term--Default=14")
str = input(3, minval=1, maxval=9, title="Entry Price Action Strength--Close > X Bars Back---Default=3")
//Alerts Instructions and Options Below...Inputs Tab
new4 = input(false, title="-------------------------Turn On/Off ALERTS Below---------------------" )
new5 = input(false, title="----To Activate Alerts You HAVE To Check The Boxes Below For Any Alert Criteria You Want----")
sa1 = input(false, title="Show Alert WVF = True?")
sa2 = input(false, title="Show Alert WVF Was True Now False?")
sa3 = input(false, title="Show Alert WVF Filtered?")
sa4 = input(false, title="Show Alert WVF AGGRESSIVE Filter?")

//Williams Vix Fix Formula
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph

//Filtered Bar Criteria
upRange = low > low[1] and close > high[1]
upRange_Aggr = close > close[1] and close > open[1]
//Filtered Criteria
filtered = ((wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh))
filtered_Aggr = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and not (wvf < upperBand and wvf < rangeHigh)

//Alerts Criteria
alert1 = wvf >= upperBand or wvf >= rangeHigh ? 1 : 0
alert2 = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh) ? 1 : 0
alert3 = upRange and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered ? 1 : 0
alert4 = upRange_Aggr and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered_Aggr ? 1 : 0

//Coloring Criteria of Williams Vix Fix
col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray

isOverBought = (crossover(k,d) and k > StochOverBought) ? 1 : 0
isOverBoughtv2 = k > StochOverBought ? 1 : 0
filteredAlert = alert3 ? 1 : 0
aggressiveAlert = alert4 ? 1 : 0

plot(isOverBought, "Overbought / Crossover", style=line, color=red) 
plot(filteredAlert, "Filtered Alert", style=line, color=fuchsia) 
plot(aggressiveAlert, "Aggressive Alert", style=line, color=orange)

if (filteredAlert or aggressiveAlert)
    strategy.entry("Long", strategy.long)

if (isOverBought)
    strategy.close("Long")

    


Mais.