Estratégia quantitativa de curto prazo RSI-VWAP

Autora:ChaoZhang, Data: 2024-01-19 14:21:15
Tags:

img

Resumo

Esta estratégia é chamada de RSI-VWAP Short-term Strategy. Ela usa o indicador RSI e o Volume Weighted Average Price (VWAP) como indicadores técnicos para gerar sinais longos e curtos e, assim, tomar decisões de compra e venda. A estratégia visa capturar os fenômenos de sobrecompra e sobrevenda no mercado de curto prazo, a fim de alcançar retornos excessivos.

Princípio da estratégia

  1. Os valores do RSI acima de 80 indicam uma área de sobrecompra e abaixo de 20 indicam uma área de sobrevenda.
  2. O indicador RSI usa o VWAP em vez do preço de fechamento como dados de origem.
  3. Um sinal de compra é gerado quando o RSI cruza até 20 da área de sobrevenda. Um sinal de venda é gerado quando o RSI cruza para baixo até 80 da área de sobrecompra.
  4. Esta estratégia só vai longo e não vai curto, ou seja, apenas comprar em sobrevendido e vender em sobrecomprado.

Análise das vantagens

  1. Usar o VWAP como fonte de dados para o RSI faz com que o indicador do RSI julgue o mercado com mais precisão, evitando ser enganado por falsas rupturas.
  2. Apenas o longo prazo reduz a frequência de negociação e ajuda a obter retornos estáveis a longo prazo.
  3. O parâmetro RSI é 17, que é adequado para operações de curto prazo.
  4. O método de negociação de baixa frequência prevê menos transações, reduzindo os custos de transação e ajudando a obter taxas de retorno mais elevadas.

Análise de riscos

  1. Existe um risco de sobreajuste no backtesting de estratégia quântica e os resultados reais podem diferir do backtest.
  2. Incapaz de aproveitar oportunidades em tendências de queda apenas indo longo.
  3. Os critérios de sobrecompra e sobrevenda podem não corresponder a todos os produtos, sendo necessário ajustar os parâmetros para diferentes produtos.
  4. Qualquer indicador técnico pode gerar falsos sinais e as perdas não podem ser completamente evitadas.

Os riscos podem ser reduzidos por meio de uma flexibilização adequada dos critérios de sobrecompra e sobrevenda, da combinação de outros indicadores para confirmar sinais, do ajustamento das faixas de parâmetros, etc.

Orientações de otimização

  1. Testar os efeitos de diferentes parâmetros no desempenho da estratégia e otimizar o comprimento do RSI e os limiares de sobrecompra/supervenda.
  2. Adicione estratégias de stop loss para bloquear alguns lucros através de stop loss móvel, stop loss temporal, etc., reduzindo os drawdowns.
  3. Filtrar sinais combinando outros indicadores para melhorar a precisão do sinal.
  4. Estabelecer intervalos de parâmetros independentes de acordo com as características dos diferentes produtos, de modo a que a estratégia se adapte melhor aos diferentes produtos.

Conclusão

Em geral, esta é uma estratégia simples e prática de curto prazo. Usando VWAP torna o julgamento do RSI mais preciso, apenas indo longo reduz a frequência de negociação. A idéia da estratégia é clara e fácil de entender e implementar, adequada para iniciantes de negociação quant. Mas qualquer estratégia de indicador único dificilmente pode ser perfeita e precisa de otimização constante para um melhor desempenho ao vivo.


/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 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/
// © Xaviz

//#####©ÉÉÉɶN###############################################
//####*..´´´´´´,,,»ëN########################################
//###ë..´´´´´´,,,,,,''%©#####################################
//###'´´´´´´,,,,,,,'''''?¶###################################
//##o´´´´´´,,,,,,,''''''''*©#################################
//##'´´´´´,,,,,,,'''''''^^^~±################################
//#±´´´´´,,,,,,,''''''''^í/;~*©####æ%;í»~~~~;==I±N###########
//#»´´´´,,,,,,'''''''''^;////;»¶X/í~~/~~~;=~~~~~~~~*¶########
//#'´´´,,,,,,''''''''^^;////;%I^~/~~/~~~=~~~;=?;~~~~;?ë######
//©´´,,,,,,,''''''''^^~/////X~/~~/~~/~~»í~~=~~~~~~~~~~^;É####
//¶´,,,,,,,''''''''^^^;///;%;~/~~;í~~»~í?~?~~~?I/~~~~?*=íÑ###
//N,,,,,,,'''''''^^^^^///;;o/~~;;~~;£=»í»;IX/=~~~~~~^^^^'*æ##
//#í,,,,,''''''''^^^^^;;;;;o~»~~~~íX//~/»~;í?IíI»~~^/*?'''=N#
//#%,,,'''''''''^^^^^^í;;;;£;~~~//»I»/£X/X/»í*&~~~^^^^'^*~'É#
//#©,,''''''''^^^^^^^^~;;;;&/~/////*X;í;o*í»~=*?*===^'''''*£#
//##&''''''''^^^^^^^^^^~;;;;X=í~~~»;;;/~;í»~»±;^^^^^';=''''É#
//##N^''''''^^^^^^^^^^~~~;;;;/£;~~/»~~»~~///o~~^^^^''''?^',æ#
//###Ñ''''^^^^^^^^^^^~~~~~;;;;;í*X*í»;~~IX?~~^^^^/?'''''=,=##
//####X'''^^^^^^^^^^~~~~~~~~;;íííííí~~í*=~~~~Ií^'''=''''^»©##
//#####£^^^^^^^^^^^~~~~~~~~~~~íííííí~~~~~*~^^^;/''''='',,N###
//######æ~^^^^^^^^~~~~~~~~~~~~~~íííí~~~~~^*^^^'=''''?',,§####
//########&^^^^^^~~~~~~~~~~~~~~~~~~~~~~~^^=^^''=''''?,íN#####
//#########N?^^~~~~~~~~~~~~~~~~~~~~~~~~^^^=^''^?''';í@#######
//###########N*~~~~~~~~~~~~~~~~~~~~~~~^^^*'''^='''/É#########
//##############@;~~~~~~~~~~~~~~~~~~~^^~='''~?'';É###########
//#################É=~~~~~~~~~~~~~~^^^*~'''*~?§##############
//#####################N§£I/~~~~~~»*?~»o§æN##################

//@version=4
strategy("RSI-VWAP INDICATOR", overlay=false)

// ================================================================================================================================================================================
// RSI VWAP INDICATOR
// ================================================================================================================================================================================

// Initial inputs
Act_RSI_VWAP = input(true, "RSI VOLUME WEIGHTED AVERAGE PRICE")
RSI_VWAP_length = input(17, "RSI-VWAP LENGTH")
RSI_VWAP_overSold = input(19, "RSI-VWAP OVERSOLD", type=input.float)
RSI_VWAP_overBought = input(80, "RSI-VWAP OVERBOUGHT", type=input.float)

// RSI with VWAP as source
RSI_VWAP = rsi(vwap(close), RSI_VWAP_length)

// Plotting, overlay=false
r=plot(RSI_VWAP, color = RSI_VWAP > RSI_VWAP_overBought ? color.red : RSI_VWAP < RSI_VWAP_overSold ? color.lime : color.blue, title="rsi", linewidth=2, style=plot.style_line)
h1=plot(RSI_VWAP_overBought, color = color.gray, style=plot.style_stepline)
h2=plot(RSI_VWAP_overSold, color = color.gray, style=plot.style_stepline)
fill(r,h1, color = RSI_VWAP > RSI_VWAP_overBought ? color.red : na, transp = 60)
fill(r,h2, color = RSI_VWAP < RSI_VWAP_overSold ? color.lime : na, transp = 60)

// Long only Backtest
strategy.entry("Long", strategy.long, when = (crossover(RSI_VWAP, RSI_VWAP_overSold)))
strategy.close("Long", when = (crossunder(RSI_VWAP, RSI_VWAP_overBought)))

Mais.