Estratégias de rastreamento de tendências baseadas no RSI e no ZigZag

Autora:ChaoZhang, Data: 2024-02-22 16:15:18
Tags:

基于RSI指标和ZigZag指标趋势追踪策略

Resumo

A estratégia é chamada de estratégia de rastreamento de tendências de 15 minutos de criptomoedas baseada no RSI e no ZigZag. A estratégia é projetada especificamente para mercados de criptomoedas com períodos de tempo de 15 minutos (como ETHUSD/T, BTCUSD/T, etc.).

Princípios estratégicos

No caso do RSI, nós definimos a linha de compra para 75 e a linha de venda para 25. Quando a linha do RSI atravessa 25 de baixo para cima, considera-se que o mercado passou de supervenda para supervenda.

No caso do indicador ZigZag, definimos um limiar de amplitude de salto no preço de 1%; quando o preço se move mais do que 1%, o indicador ZigZag emite um sinal; combinado com o julgamento da tendência, podemos ver o ponto de inflexão da tendência do preço.

Quando os dois indicadores emitem sinais, se a direção da tendência anterior é positiva, agora o RSI está sobrecomprando e o ZigZag mostra um déficit de salto, então nós determinamos que o mercado está em alta, e podemos considerar fazer o vazio; ao contrário, se a direção da tendência anterior é negativa, agora o RSI está sobrevendendo e o ZigZag mostra um déficit de salto, então nós determinamos o fundo do mercado, e podemos considerar fazer o vazio. Com essa lógica, podemos realizar operações de rastreamento de tendências.

Vantagens estratégicas

Outra vantagem é a flexibilidade de configuração de parâmetros. Os parâmetros RSI e ZigZag desta estratégia são personalizáveis e podemos ajustar os parâmetros de acordo com as características de diferentes mercados para obter o melhor efeito. Isso confere grande flexibilidade à estratégia.

Risco estratégico

O principal risco desta estratégia é a probabilidade de um indicador emitir sinais errados. Embora tenhamos usado a verificação de combinações de dois indicadores, ainda é possível que um indicador falhe em momentos de forte volatilidade do mercado, levando a erros de negociação. Além disso, a configuração incorreta dos parâmetros também pode afetar o efeito da estratégia.

Para reduzir o risco, podemos reduzir apropriadamente o tempo de detenção de posições e parar os prejuízos em tempo hábil. Ao mesmo tempo, a otimização da configuração dos parâmetros é muito importante e precisa considerar plenamente as características do mercado.

Estratégias de otimização

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

  1. O aumento da combinação de indicadores e a introdução de mais indicadores para julgamentos integrados, como KDJ, MACD, etc., podem filtrar ainda mais os sinais.

  2. Aumentar o mecanismo de parada de prejuízo adaptativo, permitindo ajustar dinamicamente a distância de parada de acordo com a amplitude da volatilidade do mercado.

  3. Otimizar o gerenciamento de posições, por exemplo, distribuindo o capital de acordo com a tendência.

  4. Configure uma política de reserva para alternar automaticamente em mercados fora de ordem.

Resumo

A estratégia como um todo é uma estratégia típica de acompanhamento de tendências, com a ideia central de combinar o indicador RSI e o indicador ZigZag para determinar o ponto de inflexão da tendência de preços. A vantagem da estratégia é que os dois indicadores combinam sinais filtrados e desviados, aumentando a eficiência comercial.


/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21
//@version=4
strategy("Crypto ZigZag RSI strategy 15min",overlay=true)
length =input(5, title="RSI Length")
overSold = input(25)
overBought= input(75)

p =close

vrsi = rsi(p, length)
var bool long = na
var bool short = na

long :=crossover(vrsi,overSold) 
short := crossunder(vrsi,overBought)

var float last_open_long = na
var float last_open_short = na

last_open_long := long ? close : nz(last_open_long[1])
last_open_short := short ? close : nz(last_open_short[1])


entry_value =last_open_long
entry_value1=last_open_short

//
ZZPercent = input(1, title="Minimum % Change", type=input.float)
r1Level=entry_value
s1Level=entry_value1
trend = 0
trend := na(trend[1]) ? 1 : trend[1]
LL = 0.0
LL := na(LL[1]) ? s1Level : LL[1]
HH = 0.0
HH := na(HH[1]) ?r1Level : HH[1]

Pi = ZZPercent * 0.01
zigzag = float(na)

if trend > 0  
    if r1Level >= HH  
        HH := r1Level
        HH
    else
        if s1Level < HH * (1 - Pi)
            zigzag :=r1Level[1]
            trend := -1
            LL := s1Level
            LL
else
   
    if s1Level <= LL 
        LL := s1Level
        LL
    else
        if r1Level > LL * (1 + Pi)
            zigzag := s1Level[1]
            trend := 1
            HH := s1Level
            HH


shortc=crossunder(trend,0)
longc=crossover(trend,0)


longa =input(true)
shorta=input(false)

if(longa)
    strategy.entry("long",1,when=longc)
    strategy.close("long",when=shortc)
if(shorta)
    strategy.entry("short",0,when=shortc)
    strategy.close("long",when=longc)


Mais informações