Indice de força relativa Estratégia longa/curta

Autora:ChaoZhang, Data: 2023-11-16 17:06:14
Tags:

img

Resumo

Esta estratégia gera sinais de negociação comparando o indicador RSI de uma criptomoeda com o indicador RSI de um índice de mercado de criptomoedas para julgar o valor relativo da criptomoeda em relação ao mercado de criptomoedas.

Estratégia lógica

A estratégia permite selecionar primeiro um índice de mercado de criptomoedas, como a capitalização total de mercado, a capitalização total de mercado excluindo o Bitcoin, a capitalização de mercado de outras moedas, etc. Ele também seleciona um período de tempo mais alto do índice de criptomoedas, padrão para diário. Em seguida, ele calcula o RSI da criptomoeda selecionada e o RSI do índice de criptomoedas e gera um índice de força relativa com base em sua relação. Quando o índice de força relativa cruza acima do parâmetro especificado, um sinal de compra é gerado. Quando cruza abaixo, um sinal de venda é gerado.

A lógica central é que quando o RSI da criptomoeda é mais forte do que o índice de criptomoeda, isso significa que a moeda está relativamente subvalorizada em comparação com o mercado e tem o potencial de se tornar sobrevalorizada, para que possa ser comprada.

Análise das vantagens

A maior vantagem desta estratégia é que usa o índice de força relativa, que permite uma avaliação mais precisa das criptomoedas, em vez de depender apenas de indicadores técnicos de uma única moeda para tomar decisões, evitando a armadilha de olhar para as coisas isoladamente.

O índice de força relativa tem em conta o impacto do ambiente global do mercado sobre as moedas individuais e pode capturar o ritmo de rotação do mercado e as rotações dos setores e extrair moedas valiosas do mercado.

Além disso, a estratégia prevê múltiplas selecções de índices, que podem ser otimizadas para diferentes ambientes de mercado para garantir a eficácia da estratégia.

Análise de riscos

O principal risco desta estratégia é que o índice de força relativa é apenas uma ferramenta de avaliação e não pode evitar completamente os riscos comerciais decorrentes dos padrões técnicos das moedas individuais.

Por exemplo, se a moeda entrou em um padrão de reversão superior óbvio, e a estrutura do mercado mudou, confiar apenas nos sinais de compra de força relativa pode levar a perdas.

Por conseguinte, a estratégia deve combinar os padrões técnicos das próprias criptomoedas individuais para evitar transações desfavoráveis em pontos técnicos críticos.

Outro risco é que, se o índice selecionado for inadequado e tiver baixa correlação com a criptomoeda, o poder indicador do índice de força relativa seria amplamente comprometido.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Adicione estratégias de stop loss para cortar as perdas a tempo quando os preços revertem.

  2. Otimizar a selecção de índices, combinar diferentes índices para diferentes moedas para aumentar a correlação.

  3. Adicionar várias combinações de prazos, como confirmar sinais diários com sinais de 4 horas, para aumentar a confiabilidade do sinal.

  4. Adicionar algoritmos de aprendizagem de máquina para determinar de forma adaptativa o limiar para o índice de resistência relativa, em vez de usar parâmetros fixos.

  5. Incorporar outros indicadores como análise de sentimentos, análise fundamental para formar um sistema de avaliação mais abrangente.

Conclusão

A estratégia de índice de força relativa julga a avaliação relativa das criptomoedas comparando sua força com índices de mercado e gera sinais de negociação. Sua vantagem reside na incorporação de dimensões de análise de mercado e captura de ritmos de mercado. Mas também tem riscos que precisam de otimização, como adição de stop loss, combinações de prazos, limiar adaptativo etc. para melhorar o desempenho. Se implementado corretamente, essa estratégia pode desempenhar um papel importante na negociação algorítmica de criptomoedas.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('RSI correlation with cryptoindices [strategy version]', overlay=false)

// Testing Start dates
testStartYear = input(2016, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

len = input(4, title='length of rsi comparison')
correlationcrossover = input(1, title='correlation crossover')
IndexSwitch = input.string('CRYPTOCAP:TOTAL2', title='Index selection', options=['CRYPTOCAP:TOTAL2', 'CRYPTOCAP:TOTAL', 'CRYPTOCAP:OTHERS', 'CRYPTOCAP:USDT', 'CRYPTOINDEX:CIX100', 'CRYPTOCAP:BTC.D', 'CRYPTOCAP:BTC'])
IndexHTF = input.string('120', title='higher time frame reference index', options=['1', '2', '5', '10', '15', '30', '45', '60', '90', '120', '150', '240', '360', '720', 'D', '3D', 'W', 'M'])
switchColor = input(true, 'Color Hull according to trend?')
ref = request.security(IndexSwitch, IndexHTF, close[1], lookahead=barmerge.lookahead_on)
RSI_ref = ta.rsi(ref, len)
RSI_close = ta.rsi(close, len)
relative = RSI_ref / RSI_close
plot(relative, color=color.new(color.blue, 0))
long = ta.crossover(relative, correlationcrossover)
short = ta.crossunder(relative, correlationcrossover)
corr = plot(correlationcrossover, color=color.new(color.green, 0), linewidth=1)
hullColor = switchColor ? relative > correlationcrossover ? #00ff00 : #ff0000 : #ff9800

//PLOT
///< Frame
Fi1 = plot(relative, title='relative', color=hullColor, linewidth=1, transp=50)
fill(Fi1, corr, title='Band Filler', color=hullColor, transp=50)

if long and testPeriod()
    strategy.entry("long", strategy.long)
    
if short and testPeriod()
    strategy.entry("long", strategy.short)

// alertcondition(long, title='long', message='long')
// alertcondition(short, title='short', message='short')



Mais.