Estratégia de negociação VSTOP e RSI

Autora:ChaoZhang, Data: 2023-10-09 15:48:46
Tags:

Resumo

Esta estratégia combina os indicadores VSTOP e RSI para ir longo quando o RSI está sobrecomprado e ir curto quando o RSI está sobrevendido, enquanto usa o VSTOP para determinar a direção da tendência e cortar as perdas a tempo quando a tendência se inverte.

Estratégia lógica

  1. Calcule o valor do indicador RSI e defina as linhas de sobrecompra e sobrevenda.

  2. Calcule o VSTOP, que é uma linha de stop loss baseada no intervalo de flutuação de preços.

    • Calcular o indicador ATR e definir o múltiplo do coeficiente ATR

    • Registre o preço máximo e o preço mínimo

    • De acordo com o estado de tendência ascendente is_uptrend, calcule a linha de stop loss atual: stop = is_uptrend? max - mult * ATR : min + mult * ATR

    • Atualizar a linha de stop loss: vstop1 = is_uptrend? max ((vstop_prev, stop) : min ((vstop_prev, stop)

    • Quando a inversão de tendência acontece, redefina a linha de stop loss entrar

  3. Quando o RSI está sobrevendido, se o preço cruzar acima do VSTOP, vá curto; quando o RSI está sobrecomprado, vá longo.

Análise das vantagens

  • A combinação do indicador de tendência e do indicador de sobrecompra/supervenda ajuda a captar oportunidades de reversão nos mercados em tendência.

  • Usando VSTOP para definir stop loss efetivamente controla os riscos.

  • As configurações flexíveis dos parâmetros RSI podem ser otimizadas para diferentes produtos.

  • O VSTOP rastreia sistematicamente a perda de parada sem intervenção manual.

Riscos e soluções

  • Se o parâmetro ATR for definido muito grande ou muito pequeno, a linha de stop loss não terá significado.

  • Em mercados de intervalo, o RSI pode desencadear sinais de negociação frequentes, aumentando a frequência de negociação e o custo de deslizamento.

  • A reversão fracassada é o principal risco desta estratégia. Os comerciantes precisam observar a direção da tendência de um período de tempo maior para evitar a negociação de contra-tendência. As médias móveis de longo prazo podem ser usadas para determinar a tendência.

Orientações de otimização

  • Considere a combinação de outros indicadores para filtrar sinais inválidos, por exemplo, volume, canal de Donchian, etc.

  • Otimizar parâmetros com base nos resultados dos backtests para encontrar a combinação de parâmetros ideal.

  • Pesquisar como ajustar dinamicamente o coeficiente ATR para adaptação em diferentes ambientes de mercado.

  • Explorar a desativação da estratégia durante períodos de alto risco.

Conclusão

Esta estratégia integra o julgamento da tendência e os níveis de sobrecompra / sobrevenda para capturar oportunidades de reversão em mercados de tendência. VSTOP fornece gerenciamento sistemático de stop loss para controle de risco. A estratégia pode ser melhorada através da otimização de parâmetros e combinação de outros indicadores. Os comerciantes precisam estar atentos a reversões fracassadas, o principal risco.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Vstop and RSI", overlay=true)

//RSI Section
length = input(2, "RSI Period") 
overSold = input(30, "Oversold Level") 
overBought = input(70, "Overbought Level") 
price = close 
vrsi = rsi (price, length) 

//VSTOP Section
vlength = input(2, "Vstop Length") 
mult = input(2, "Vstop Mult") 
atr_ = atr(vlength) 

max1=0.0 
min1=0.0 
is_uptrend_prev = false 
stop=0.0 
vstop_prev=0.0 
vstop1=0.0 
is_uptrend=false 
is_trend_changed=false 
max_ = 0.0 
min_ = 0.0 
vstop=0.0 

max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)


is_uptrend_prev := nz(is_uptrend[1], true)

stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)

if vrsi > overBought
    strategy.entry("Buy", strategy.long, comment="Buy")
     
if vrsi < overSold and vstop > price
    strategy.entry("Sell", strategy.short, comment="Sell")

Mais.