RSI e Estratégia de Estocástica com vários prazos

Autora:ChaoZhang, Data: 2024-02-21 15:56:37
Tags:

img

Resumo

A Estratégia Multi Timeframe RSI e Estocástica é uma estratégia que combina os indicadores RSI e Estocásticos em vários prazos para determinar as condições de sobrecompra e sobrevenda no mercado.

Estratégia lógica

Indicador RSI

O indicador RSI é um poderoso oscilador que mede os níveis de sobrecompra e sobrevenda com base na magnitude dos movimentos de preços recentes.

Esta estratégia utiliza um RSI de 14 períodos e obtém valores do RSI a partir dos prazos mensal, diário, de 4 horas e de 1 hora.

2. Estocásticos %K

O stochastic %K é um indicador que mostra os níveis de sobrecompra/supervenda no mercado numa escala de 0 a 100. Geralmente, valores acima de 80 indicam um mercado sobrecomprado, enquanto valores abaixo de 20 indicam um mercado sobrevendido.

A estratégia utiliza uma configuração estocástica de 14,3 e obtém igualmente valores de %K a partir dos prazos acima mencionados.

3. Combinação de valores médios

O ponto central da estratégia consiste em tomar uma média dos dois indicadores em vários prazos, o que permite aproveitar os pontos fortes de cada período para avaliar as condições gerais do mercado.

RSI média = (RSI mensal + RSI diário + RSI de 4 horas + RSI de 1 hora) / 4

Estocástica média = (Estocástica mensal + Estocástica diária + Estocástica 4H + Estocástica 1H) / 4

4. Sinais comerciais

A estratégia desencadeia um longo quando a média do RSI cai abaixo de 30 e a média do Estocástico cai abaixo de 20.

A posição longa é fechada quando a média estocástica sobe acima de 70 e a média RSI sobe acima de 50. A posição curta é fechada quando a média estocástica cai abaixo de 30 e a média RSI cai abaixo de 50.

Análise das vantagens

A principal vantagem desta estratégia reside na combinação de dois indicadores em vários prazos, o que aumenta muito a confiabilidade dos sinais comerciais e minimiza os falsos sinais.

  1. O RSI e o Estocástico verificam-se mutuamente como sinais. Confiar apenas em um indicador tende a gerar sinais falsos com mais frequência.

  2. Os indicadores são mais confiáveis quando todos os intervalos de tempo concordam. Os indicadores são mais confiáveis quando todos os intervalos de tempo concordam.

  3. Identificação mais clara dos pontos de virada estruturais quando vários prazos mostram simultaneamente uma ruptura dos principais níveis S/R, sinalizando uma inversão da tendência.

  4. O cálculo automático das médias simplifica o fluxo de trabalho. Não é necessário cálculo manual, pois o código lida com a recuperação de dados, o cálculo de indicadores e a média automaticamente.

Análise de riscos

Tal como acontece com todas as estratégias de análise técnica, o principal risco reside em falhas e sinais falsos.

  1. Reversões de tendência que levam a ser interrompido. Por exemplo, os preços fazem uma brecha de curto prazo abaixo do suporte antes de se recuperar enquanto longo. Tais casos podem incorrer em perdas de curto prazo devido à lógica de saída.

  2. Invalidação dos principais níveis S/R que conduzem a paradas de trailers fracassadas.

  3. Julgamentos incorretos a partir de configurações de prazos subótimas.

  4. Divergência entre os intervalos de tempo que causa um efeito Dunkerque, onde os intervalos de tempo mais longos mostram um mercado sobrecomprado, mas os intervalos de tempo mais curtos sinalizam condições de sobrevenda, tornando as médias ineficazes.

As soluções envolvem a otimização de estratégias de stop loss, o rastreamento de níveis dinâmicos de S/R, o ajuste de parâmetros de prazo e a adição de filtros adicionais.

Oportunidades de melhoria

Tendo em conta os riscos discutidos, as oportunidades de melhoria incluem:

  1. Otimizar o mecanismo de stop loss para incorporar trailing stops e partial exits.

  2. Adicionando prazos mais longos como o gráfico trimestral. Isso permite uma orientação de tendência maior para filtrar sinais falsos. Priorizar leituras de prazos mais longos quando ocorrer divergência.

  3. Incorporação de volume para validação de tendências adicionais através de divergências touro/urso para evitar tendências zumbis.

  4. Ajuste fino dos sinais de entrada, aguardando que ocorram breakouts em torno de pontos históricos chave S/R ou permitindo entradas de retração ideais.

  5. Implementar paradas adaptativas com base na volatilidade recente e nos valores ATR para o posicionamento dinâmico de paradas.

Conclusão

A Estratégia de RSI e Estocásticos de Multiframe é uma abordagem clara e confiável que usa uma combinação de RSI e Estocásticos em vários prazos para identificar níveis de sobrecompra / sobrevenda. Sua maior força reside na verificação mútua de indicadores e prazos para minimizar riscos de Whipsaw e falsos sinais.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////// MTF Stochastic & RSI Strategy 🚥 ©️ bykzis /////////////////////////////////////////
//

// *** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 *** and LOT OF COPY of Indicator-Jones MTF Scanner
// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//@version=5
strategy('MTF RSI & STOCH Strategy🚥 by kzi', overlay=false,initial_capital=100, currency=currency.USD, commission_value=0.01, commission_type=strategy.commission.percent)


// Pair list
var string GRP1       = '══════════    General    ══════════'
overbought = input.int(80, 'Overbought Level', minval=1, group=GRP1)
oversold = input.int(20, 'Oversold Level', minval=1, group=GRP1)


/// Timeframes
var string GRP2       = '══════════   Timeframes   ══════════'
timeframe1 = input.timeframe(title="Timeframe 1", defval="W", group=GRP2)
timeframe2 = input.timeframe(title="Timeframe 2", defval="D", group=GRP2)
timeframe3 = input.timeframe(title="Timeframe 3", defval="240", group=GRP2)
timeframe4 = input.timeframe(title="Timeframe 4", defval="60", group=GRP2)

// RSI settings
var string GRP3       = '══════════   RSI settings   ══════════'
rsiLength = input.int(14, minval=1, title='RSI length', group=GRP3)
rsiSource = input(close, 'RSI Source', group=GRP3)
rsioverbought = input.int(70, 'RSI Overbought Level', minval=1, group=GRP3)
rsioversold = input.int(30, 'RSI Oversold Level', minval=1, group=GRP3)


/// Get RSI values of each timeframe /////////////////////////////////////////////////////
rsi = ta.rsi(rsiSource, rsiLength)
callRSI(id,timeframe) =>
    rsiValue = request.security(id, str.tostring(timeframe), rsi, gaps=barmerge.gaps_off)
    rsiValue

RSI_TF1 = callRSI(syminfo.tickerid, timeframe1)
RSI_TF2 = callRSI(syminfo.tickerid, timeframe2)
RSI_TF3 = callRSI(syminfo.tickerid, timeframe3)
RSI_TF4 = callRSI(syminfo.tickerid, timeframe4)




/////// Calculate Averages /////////////////////////////////////////////////////////////////
calcAVG(valueTF1, valueTF2, valueTF3, valueTF4) =>
    math.round((valueTF1 + valueTF2 + valueTF3 + valueTF4) / 4, 2)

AVG=calcAVG(RSI_TF1, RSI_TF2, RSI_TF3, RSI_TF4)



// Stochastic settings
var string GRP4       = '══════════   Stochastic settings   ══════════'
periodK = input.int(14, '%K length', minval=1, group=GRP4)
smoothK = input.int(3, 'Smooth K', minval=1, group=GRP4)
stochSource = input(close, 'Stochastic Source', group=GRP4)
stochoverbought = input.int(70, 'Stochastic Overbought Level', minval=1, group=GRP4)
stochoversold = input.int(30, 'Stochastic Oversold Level', minval=1, group=GRP4)


/// Get Stochastic values of each timeframe ////////////////////////////////////////////////
stoch = ta.sma(ta.stoch(stochSource, high, low, periodK), smoothK)
getStochastic(id,timeframe) =>
    stochValue = request.security(id, str.tostring(timeframe), stoch, gaps=barmerge.gaps_off)
    stochValue

Stoch_TF1 = getStochastic(syminfo.tickerid, timeframe1)
Stoch_TF2 = getStochastic(syminfo.tickerid, timeframe2)
Stoch_TF3 = getStochastic(syminfo.tickerid, timeframe3)
Stoch_TF4 = getStochastic(syminfo.tickerid, timeframe4)


AVG_STOCH=calcAVG(Stoch_TF1, Stoch_TF2, Stoch_TF3, Stoch_TF4)


plot(AVG, color = color.blue, title='RSI')
plot(AVG_STOCH, color = color.yellow,title='STOCH')
hline(rsioverbought,color=color.red)
hline(rsioversold, color=color.lime)
hline(50, color=color.white)

//============ signal Generator ==================================//

if AVG <= rsioversold and AVG_STOCH <=stochoversold 
    strategy.entry('Buy_Long', strategy.long)

    
strategy.close("Buy_Long",when=(AVG_STOCH >=70 and AVG >=50 and close >=strategy.position_avg_price),comment="Long_OK")

if AVG >=rsioverbought and AVG_STOCH >=stochoverbought
    strategy.entry('Buy_Short', strategy.short)


strategy.close("Buy_Short",when=(AVG_STOCH <=30 and AVG <=50 and close <=strategy.position_avg_price),comment="Short_OK")


///////////////////////////////////////////////////////////////////////////////////////////





Mais.