Estratégia de índice dinâmico dos traders

Autora:ChaoZhang, Data: 2023-11-13 10:09:48
Tags:

img

Resumo

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.

Estratégia lógica

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.

Análise das vantagens

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.

Análise de riscos

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.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Teste períodos de RSI de diferentes comprimentos para encontrar configurações mais adequadas às condições atuais do mercado.

  2. Otimizar os comprimentos dos MAs rápidos e lentos para equilibrar a captura de inversões e a filtragem de ruído.

  3. Para controlar o drawdown máximo, adicionar o stop loss baseado na volatilidade.

  4. Tente adicionar outros fatores como mudança de volume na lógica de entrada para melhorar a precisão.

  5. Teste o efeito da reutilização do mesmo conjunto de sinais de negociação em vários prazos.

  6. Desenvolver mecanismos de otimização adaptativa para o ajuste de parâmetros dinâmicos.

Conclusão

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")

Mais.