Esta estratégia utiliza o Traders Dynamic Index (TDI) como principal indicador técnico, combinado com médias móveis em diferentes prazos para gerar sinais de negociação.
A estratégia primeiro calcula o RSI de fechamento com um período de 13. Em seguida, calcula a média móvel simples de 34 períodos do RSI e usa 1,6185 vezes o desvio padrão de 34 períodos do RSI como as faixas superior e inferior. A faixa superior é a média móvel mais o deslocamento e a faixa inferior é a média móvel menos o deslocamento. A média móvel é a faixa média.
Depois disso, ele calcula o MA rápido do RSI com um período de 2, e o MA lento do RSI com um período de 7. Ele então recupera valores históricos desses indicadores de um período de tempo mais longo. Quando o MA rápido cruza abaixo do MA lento, um sinal de compra é gerado. Quando o MA rápido cruza acima do MA lento, um sinal de venda é gerado.
Esta estratégia utiliza a característica de reversão média do RSI e combina indicadores de impulso para implementar a negociação de reversão. As faixas superior e inferior do RSI refletem condições de sobrecompra e sobrevenda, enquanto a faixa média reflete o nível médio de preço. O cruzamento dos MAs rápidos e lentos reflete mudanças de impulso e oportunidades de reversão.
Especificamente, as bandas do RSI definem limites razoáveis de sobrecompra e sobrevenda para detectar prontamente anomalias. A banda do meio capta o nível de preço de equilíbrio. A MA rápida filtra o ruído de curto prazo e a MA lenta determina a tendência de médio prazo. Trabalhando juntas, elas podem identificar efetivamente oportunidades de reversão. Além disso, a combinação de indicadores em diferentes prazos permite que a estratégia se confirme em vários horizontes temporais, reduzindo o risco de falsos sinais.
Esta estratégia baseia-se principalmente na reversão média, que tem riscos inerentes de tempo. Perdas consecutivas podem ocorrer se o mercado passar por uma expansão irracional prolongada, como um aperto curto. Além disso, a falha em definir adequadamente os MAs rápidos e lentos pode causar oportunidades de reversão perdidas ou sinais falsos.
Para controlar os riscos acima, é aconselhável ajustar os períodos de MA de forma razoável ou adicionar mecanismos de stop loss. Quando o mercado entra em um regime irracional, os tamanhos das posições devem ser reduzidos ou interrompidos.
A estratégia pode ser otimizada nos seguintes aspectos:
Teste períodos de RSI de diferentes comprimentos para encontrar configurações mais adequadas às condições atuais do mercado.
Otimizar os comprimentos dos MAs rápidos e lentos para equilibrar a captura de inversões e a filtragem de ruído.
Para controlar o drawdown máximo, adicionar o stop loss baseado na volatilidade.
Tente adicionar outros fatores como mudança de volume na lógica de entrada para melhorar a precisão.
Teste o efeito da reutilização do mesmo conjunto de sinais de negociação em vários prazos.
Desenvolver mecanismos de otimização adaptativa para o ajuste de parâmetros dinâmicos.
A estrutura geral desta estratégia de reversão RSI é razoável com lógica clara e interpretável. Ele tem espaço personalizável e potencial de otimização. Com ajuste adequado de parâmetros e controle de risco, sua capacidade de capturar reversões é promissora. O próximo passo é otimizar ainda mais a estratégia através de mais backtesting e ajuste de parâmetros, para melhorar sua robustez e lucratividade.
/*backtest start: 2022-11-06 00:00:00 end: 2023-11-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("TDI - Traders Dynamic Index [Mehdi]", shorttitle="TDIMEHDI") rsiPeriod = input(13, minval = 1, title = "RSI Period") bandLength = input(34, minval = 1, title = "Band Length") lengthrsipl = input(7, minval = 0, title = "Fast MA on RSI") lengthtradesl = input(2, minval = 1, title = "Slow MA on RSI") p1 = input("15", title = "Signal Timeframe") src = close // Source of Calculations (Close of Bar) r = rsi(src, rsiPeriod) // RSI of Close ma = sma(r, bandLength) // Moving Average of RSI [current] offs = (1.6185 * stdev(r, bandLength)) // Offset up = ma + offs // Upper Bands dn = ma - offs // Lower Bands mid = (up + dn) / 2 // Average of Upper and Lower Bands fastMA = sma(r, lengthrsipl) // Moving Average of RSI 2 bars back slowMA = sma(r, lengthtradesl) // Moving Average of RSI 7 bars back hline(20) // ExtremelyOversold hline(30) // Oversold hline(50) // Midline hline(70) // Overbought hline(80) // ExtremelyOverbought up1 = request.security(syminfo.tickerid, p1, up) dn1 = request.security(syminfo.tickerid, p1, dn) mid1 = request.security(syminfo.tickerid, p1, mid) slowMA1 = request.security(syminfo.tickerid, p1, slowMA) fastMA1 = request.security(syminfo.tickerid, p1, fastMA) plot(up1, "Upper Band", color = #3286c3, linewidth = 2) // Upper Band plot(dn1, "Lower Band", color = #3286c3, linewidth = 2) // Lower Band plot(mid1, "Middle of Bands", color = yellow, linewidth = 2) // Middle of Bands plot(slowMA1, "Slow MA", color=green, linewidth=2) // Plot Slow MA plot(fastMA1, "Fast MA", color=red, linewidth=1) // Plot Fast MA if (crossover(slowMA1, fastMA1)) strategy.entry("Buy", strategy.long, comment="Buy") if (crossunder(slowMA1, fastMA1)) strategy.entry("Sell", strategy.short, comment="Sell")