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.
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.
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.
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
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.
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.
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.
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.
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.
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.
Tal como acontece com todas as estratégias de análise técnica, o principal risco reside em falhas e sinais falsos.
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.
Invalidação dos principais níveis S/R que conduzem a paradas de trailers fracassadas.
Julgamentos incorretos a partir de configurações de prazos subótimas.
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.
Tendo em conta os riscos discutidos, as oportunidades de melhoria incluem:
Otimizar o mecanismo de stop loss para incorporar trailing stops e partial exits.
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.
Incorporação de volume para validação de tendências adicionais através de divergências touro/urso para evitar tendências zumbis.
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.
Implementar paradas adaptativas com base na volatilidade recente e nos valores ATR para o posicionamento dinâmico de paradas.
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") ///////////////////////////////////////////////////////////////////////////////////////////