Estratégia de índice de trader dinâmico


Data de criação: 2023-11-13 10:09:48 última modificação: 2023-11-13 10:09:48
cópia: 1 Cliques: 668
1
focar em
1617
Seguidores

Estratégia de índice de trader dinâmico

Visão geral

A estratégia usa o índice de traders dinâmicos (TDI) como principal indicador técnico para a geração de sinais de negociação em combinação com médias móveis de diferentes períodos. O objetivo é descobrir oportunidades de reversão em casos de sobrecompra e sobrevenda.

Princípio da estratégia

A estratégia primeiro calcula o valor do RSI de close, com uma duração de 13 ciclos. Em seguida, calcula-se a média móvel simples de 34 ciclos do RSI e, em seguida, a diferença padrão de 34 ciclos do RSI é multiplicada por 1.6185 como um trajeto ascendente.

Em seguida, calcula-se a MA rápida do RSI, com 2 ciclos de duração; e a MA lenta, com 7 ciclos de duração. Em seguida, os valores históricos desses indicadores são obtidos a partir de ciclos mais altos. Quando a MA rápida atravessa a MA lenta de cima, gera um sinal de compra; quando a MA rápida atravessa a MA lenta de baixo, gera um sinal de venda.

Análise de vantagens

A estratégia utiliza a característica de mean reversion do RSI, em combinação com o indicador de momentum implement reversão de negociação. A subida e a descida do RSI refletem as áreas de sobrevenda e sobrevenda, e a média reflete o preço médio. O MA rápido e lento reflete as mudanças de volume e as oportunidades de reversão.

Especificamente, o RSI acima e abaixo da trajectória define um limite razoável de sobrevenda e sobrevenda, ajudando a detectar situações anormais em tempo hábil. A trajectória intermediária capta o preço de equilíbrio. O MA rápido filtra o ruído de curto prazo e o MA lento julga a tendência de médio prazo.

Análise de Riscos

A estratégia é baseada principalmente em negociações de reversão, com um certo risco de tempo e eficácia. Se houver uma expansão irracional prolongada do mercado, como a queda do mercado, a estratégia produzirá um prejuízo contínuo. Além disso, se o MA for configurado de forma inadequada, pode perder algumas oportunidades de reversão ou gerar erro de julgamento.

Para controlar os riscos acima, é recomendado ajustar adequadamente o ciclo de MA, ou aumentar o mecanismo de stop loss, etc. Quando o mercado entra em uma fase irracional, a posição deve ser reduzida ou até mesmo parar de negociar. Em geral, o ajuste de estratégia para um determinado cenário de mercado é fundamental.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Teste os parâmetros do ciclo RSI de diferentes comprimentos para encontrar a configuração mais adequada para o mercado atual

  2. Optimizar o comprimento do MA rápido e do MA lento, equilibrando a captura de reverberação e o ruído de filtragem

  3. Aumentar o método de parada baseado na volatilidade para controlar a máxima retirada

  4. Tente incluir outros fatores na sua lógica de encomenda, como mudanças no volume de transações, para aumentar a sua taxa de sucesso

  5. Teste da eficácia do mesmo conjunto de sinais de transação REUSE em vários quadros de tempo

  6. Desenvolver mecanismos de otimização adaptativa para que os parâmetros da estratégia se ajustem dinamicamente

Resumir

A estrutura geral da estratégia de reversão do RSI é razoável, a lógica de negociação é claramente interpretável. Tem espaço personalizável e potencial de otimização. Sua capacidade de capturar oportunidades de reversão é esperada, com o ajuste de parâmetros e o controle de risco em vigor.

Código-fonte da estratégia
/*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")