KDJ RSI Crossover Buy Sell Signals Estratégia

Autora:ChaoZhang, Data: 2023-11-27 10:57:16
Tags:

img

Resumo

Esta estratégia combina o indicador KDJ e o indicador RSI para determinar o momento das compras e vendas.

Princípio da estratégia

A estratégia utiliza o cruzamento do indicador KDJ e do indicador RSI para julgar o momento das compras e vendas.

Especificamente, quando a linha J do KDJ cruza acima da linha K de baixo para cima, é considerado um sinal de compra. E quando a linha J cruza abaixo da linha K de cima para baixo, é um sinal de venda.

Ao mesmo tempo, a estratégia incorpora o indicador RSI para julgar a força dos sinais. RSI abaixo de 30 é sobrevendido e RSI acima de 70 é sobrecomprado. Quando o KDJ emite um sinal de compra, se o indicador RSI também mostra sobrevenda, ele aumenta a confiabilidade do sinal de compra.

Em resumo, esta estratégia gera sinais de negociação nas seguintes situações:

Sinais de compra:

  1. KDJs J linha cruza acima da linha K E RSI(6) < RSI(12)
  2. KDJs J linha cruza acima da linha K E RSI(6) cruza acima do RSI(24)
  3. RSI ((6) cruza acima do RSI ((24) E RSI ((6) < 40

Sinais de venda:

  1. KDJs linha J cruza abaixo da linha K E RSI(6) > RSI(12)
  2. KDJs J linha cruza abaixo da linha K E RSI(6) cruza abaixo do RSI(24)
  3. RSI ((6) cruza abaixo do RSI ((24) E RSI ((6) > 60

Vantagens

  1. A combinação do indicador KDJ e do indicador RSI torna os sinais de negociação mais confiáveis.

  2. O indicador KDJ avalia o estado de sobrecompra/supervenda, enquanto o indicador RSI avalia a força.

  3. As condições de compra/venda múltiplas evitam oportunidades perdidas devido a razões de um único indicador.

  4. Os parâmetros do RSI são definidos em períodos de 6, 12 e 24, que são adequados para diferentes níveis do ciclo, tornando a estratégia mais versátil.

Análise de riscos

  1. Os indicadores KDJ e RSI podem dar sinais falsos, levando a negociações desnecessárias.

  2. As múltiplas condições comerciais aumentam a complexidade das operações estratégicas e exigem uma verificação cuidadosa.

  3. A estratégia deve ser testada e otimizada em diferentes mercados e os parâmetros devem ser ajustados.

Orientações para melhorias

  1. Teste adicionando outros indicadores como Bandas de Bollinger para fortalecer os sinais comerciais.

  2. Otimizar os parâmetros do KDJ e do RSI para que se adequem aos diferentes níveis do ciclo.

  3. Aumentar os padrões de stop loss para controlar os riscos.

  4. Adicionar mecanismos automáticos de stop loss para parar a perda quando os preços revertem.

Conclusão

Esta estratégia combina as vantagens do indicador KDJ e do indicador RSI usando o cruzamento dos dois indicadores para determinar o momento das compras e vendas, o que melhora a precisão dos sinais de negociação. Usar indicadores RSI com diferentes parâmetros também torna a estratégia mais versátil. Esta estratégia evita efetivamente o risco de falsos sinais que podem ocorrer com um único indicador. Melhorando os parâmetros, adicionando indicadores auxiliares, mecanismos de stop loss, etc., o desempenho desta estratégia pode ser ainda melhorado.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
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/
// © innocentChart76064

//@version=5
strategy(title = "buy/sell KDJ RSI", overlay=true)

//Define KDJ parameter
kdj_length = input(9, title = "KDJ length")
signal = input(3,title="signal")

// Calculate KDJ values
bcwsma(s,l,m) => 
    _bcwsma = float(na)
    _s = s
    _l = l
    _m = m
    _bcwsma := (_m*_s+(_l-_m)*nz(_bcwsma[1]))/_l
    _bcwsma

c = close
h = ta.highest(high, kdj_length)
l = ta.lowest(low,kdj_length)
RSV = 100*((c-l)/(h-l))
kdj_k = bcwsma(RSV, signal, 1)
kdj_d = bcwsma(kdj_k, signal, 1)
kdj_j = 3 * kdj_k-2 * kdj_d

//Define RSI parameter 
rsi_length_1 = input(6)
rsi_length_2 = input(12)
rsi_length_3 = input(24)
price = close 

//Calculate RSI values
rsi_1 = ta.rsi(price, rsi_length_1)
rsi_2 = ta.rsi(price, rsi_length_2)
rsi_3 = ta.rsi(price, rsi_length_3)

// Trading conditions
longCondition = ta.crossover(kdj_j,kdj_k) and rsi_1 > rsi_2 or ta.crossover(kdj_j,kdj_k) and ta.crossover(rsi_1,rsi_3) or ta.crossover(rsi_1,rsi_3) and rsi_1<40
shortCondition = ta.crossunder(kdj_j,kdj_k) and rsi_1 < rsi_2 or ta.crossunder(kdj_j,kdj_k) and ta.crossunder(rsi_1,rsi_3) or ta.crossunder(rsi_1,rsi_3) and rsi_1>60
// Enter long trade
strategy.entry("Long", strategy.long, when=longCondition)

// Enter short trade
strategy.entry("Short", strategy.short, when=shortCondition)


Mais.