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.).
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.
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.
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.
A estratégia pode ser optimizada em vários aspectos:
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.
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.
Otimizar o gerenciamento de posições, por exemplo, distribuindo o capital de acordo com a tendência.
Configure uma política de reserva para alternar automaticamente em mercados fora de ordem.
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)