Estratégia de Crossover de Média Móvel Axial RSI


Data de criação: 2023-11-23 16:45:55 última modificação: 2023-11-23 16:45:55
cópia: 2 Cliques: 751
1
focar em
1617
Seguidores

Estratégia de Crossover de Média Móvel Axial RSI

Visão geral

A estratégia de cruzamento da linha de equilíbrio do RSI é baseada na medição do RSI e sua média móvel simples, e na observação de que os dois jogadores estão em uma posição de resistência ao suporte.

Princípio da estratégia

A estratégia primeiro calcula o indicador RSI de 14 dias, e depois calcula a média móvel simples de 8 dias do indicador RSI. Quando o indicador RSI se move de baixo para cima, gera um sinal de compra; Quando o RSI se move de cima para baixo, gera um sinal de venda.

Ao mesmo tempo, a estratégia aumenta a banda de Brin para a média-axial do RSI. A banda de Brin determina se a média-axial do RSI já está relativamente sobrecarregada, evitando comprar os altos e vender os baixos, através do cálculo da diferença padrão.

Análise de vantagens

A estratégia de cruzamento de linha de equilíbrio do RSI combina o indicador de tendência RSI com a média móvel do indicador de tendência curva, permitindo uma avaliação eficaz da tendência e da aleatoriedade do mercado. A média aritmética do indicador RSI permite melhor suavizar o impacto das flutuações de preços sobre o sinal.

A estratégia usa o princípio do desvio padrão para ajustar automaticamente a largura do trajeto ascendente e descendente, evitando a interferência dos sinais de negociação. Quando a faixa de Brin estreita, a mudança diminui e é adequada para buscar oportunidades de reversão; e quando a faixa de Brin se expande, um período de forte flutuação da situação, é adequado para acompanhar a tendência.

Análise de Riscos

O maior risco de uma estratégia de cruzamento de linha de média-axial do RSI é o atraso do indicador RSI e da própria média móvel. Quando a situação é rápida, o cálculo do indicador e a determinação da tendência têm um atraso. Isso pode levar ao aumento do ponto de compra e à redução do ponto de venda.

Outro risco principal é a falha do indicador quando a tendência se transforma em um touro e um urso. Quando a situação se inverte e o RSI e o indicador de linha média ainda não reagiram, isso pode gerar um sinal de negociação errado e causar perdas.

As soluções incluem ajustes apropriados dos parâmetros do RSI, redução do ciclo da linha média; adição de critérios auxiliares de indicadores de tendência; largura apropriada do intervalo de parada.

Direção de otimização

A estratégia de cruzamento de linha mediana RSI pode ser otimizada nas seguintes direções:

  1. Optimizar os parâmetros do RSI: ajustar o comprimento do RSI pode equilibrar a sensibilidade e a estabilidade

  2. Optimizar parâmetros de média móvel: ajustar o tipo de média e os parâmetros de período, otimizar a tendência do indicador

  3. Aumentar o mecanismo de stop loss: definir stop loss móvel ou stop loss de tempo, controlar a perda individual

  4. Combinação de indicadores de tendência: adicione indicadores como MACD, KDJ e outros para evitar erros de inversão

  5. Verificação de múltiplos prazos: identificação de tendências com prazos mais elevados para evitar a armadilha

Resumir

A estratégia de cruzamento de equilíbrio do RSI é uma estratégia de negociação quantitativa mais madura. Ela combina os benefícios de vários indicadores técnicos, e pode entrar no mercado através do ajuste de parâmetros e otimização multidimensional. O maior risco da estratégia reside no atraso do indicador, que precisa ser acompanhado de um stop loss para controlar os prejuízos.

Código-fonte da estratégia
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Copyright (c) 2020-present, Alex Orekhov (everget)
// Corrected Moving Average script may be freely distributed under the terms of the GPL-3.0 license.
strategy('rsisma', shorttitle='rsisma')

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.blue)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")


long = ta.crossover(rsi, rsiMA)
short = ta.crossunder(rsi, rsiMA)
if long
    strategy.entry("long", strategy.long)
if short
    strategy.close("long", comment = "long TP")

 
// long1 = close * 9
// long2 = long1 / 100
// long3 = long2 + close


//plot(long3,color=color.blue)
// if short
//     strategy.entry("short", strategy.short)
// if long
//     strategy.close("short", comment = "short TP")