Estratégia de RSI estocástico para negociação de criptomoedas

Autora:ChaoZhang, Data: 2023-12-15 10:08:14
Tags:

img

I. Visão geral da estratégia

Esta estratégia é chamada de Estratégia Stochastic RSI para negociação de criptomoedas.

A ideia principal por trás da estratégia é: primeiro calcular o valor do RSI, em seguida, construir o indicador estocástico do RSI com base no RSI, ou seja, os valores K e D. Quando o valor K cruza acima do valor D, um sinal de compra é gerado. Quando o valor K cruza abaixo do valor D, um sinal de venda é gerado. Para filtrar falsos sinais, a estratégia também introduz o índice de mudança (RVI) e sua linha média móvel para confirmação.

II. Princípios pormenorizados da estratégia

  1. Calcular o valor do RSI de 14 períodos.

  2. Construir um indicador de RSI estocástico de 14 períodos baseado no RSI para obter valores K e D (D é a média móvel de 3 períodos de K).

  3. Calcular o RVI de 5 períodos e a sua linha de sinal (média móvel do RVI).

  4. Quando K cruza acima de D, se RVI > Linha de sinal e último períodos RVI < Linha de sinal, um sinal de compra é gerado.

  5. Abrir posições longas ou curtas com base nos sinais gerados.

III. Análise das vantagens

  1. A combinação de RSI estocástico e confirmação dupla do RVI pode efetivamente filtrar sinais falsos.

  2. O indicador RVI pode refletir condições de sobrecompra/supervenda a curto prazo e evita a abertura de posições em pontos extremos.

  3. O indicador RSI estocástico identifica zonas de sobrecompra/supervenda. Utiliza a cruz dourada/morta do indicador KDJ para determinar os pontos de entrada.

  4. Os resultados dos backtest mostram que essa estratégia alcançou um bom desempenho em alguns pares de criptomoedas (como FCT/BTC).

IV. Análise de riscos

  1. A colocação inadequada de estratégias de stop loss de trailing stop semelhantes pode conduzir a um stop out prematuro.

  2. A alta frequência do sinal pode levar a taxas de negociação excessivas que devem ser tidas em consideração.

  3. Os indicadores KDJ e RVI podem gerar sinais falsos, resultando em perdas desnecessárias.

  4. Os parâmetros da estratégia devem ser otimizados para os diferentes pares de negociação.

V. Orientações de otimização

  1. Adicione um stop loss móvel para bloquear os lucros. O ATR pode ser referenciado para definir níveis de stop loss.

  2. Otimizar os parâmetros RVI e os parâmetros RSI estocásticos para sinais mais limpos.

  3. Adicionar o controlo do tamanho do negócio para evitar ordens individuais excessivamente grandes.

  4. Adicionar mecanismos de filtragem para evitar a abertura de posições em níveis desfavoráveis. Indicadores de volatilidade podem ser introduzidos para determinar se o mercado está atualmente em estado agitado.

  5. Teste em diferentes pares de criptomoedas para encontrar o melhor.

VI. Resumo da estratégia

Esta estratégia primeiro constrói um RSI estocástico com base no indicador RSI, em seguida, usa o indicador RVI para confirmação, a fim de detectar condições de sobrecompra/supervenda de curto prazo e posições abertas em pontos de virada. A vantagem é que a confirmação dupla pode filtrar sinais falsos. A desvantagem é o risco de parâmetros de sobreajuste.


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

//@version=4
strategy(title="Stochastic RSI", shorttitle="Stoch RSI", overlay = true)
Per = input(5, title="Length", minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
K = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
D = sma(K, smoothD)


rvi = sum(swma(close-open), Per)/sum(swma(high-low),Per)
sig = swma(rvi)
//plot(rvi, color=green, title="RVI")
//plot(sig, color=red, title="Signal")

//plot(K,  title="K")
//plot(D,  title="D")
Dn = K <= D  and K > 70 and rvi <= sig  and rvi[1] >= sig[1]
Up= K >= D  and K < 30 and rvi >= sig  and rvi[1] <= sig[1]
ARROW =  Up - Dn
plotarrow(ARROW, title="Down Arrow",  colordown=red, transp=0, maxheight=10, minheight=10)
plotarrow(ARROW, title="Up Arrow", colorup=lime,  transp=0, maxheight=10, minheight=10)
long = crossover(Up, Dn)
short = crossunder(Up, Dn)
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

//plot(long_signal, "BUY", color=green)
//plot(short_signal, "SELL", color=red)
strategy.entry("BUY", strategy.long, when=long_signal)
strategy.entry("SELL", strategy.short, when=short_signal)


Mais.