Estratégia de negociação quantitativa da FNGU baseada em bandas de Bollinger e RSI

Autora:ChaoZhang, Data: 2024-01-29 14:53:47
Tags:

img

Resumo

Esta estratégia é chamada de FNGU Quantitative Trading Strategy Based on Bollinger Bands and RSI. É uma estratégia de longo prazo projetada especificamente para o estoque FNGU. A estratégia usa principalmente os indicadores Bollinger Bands e RSI para identificar condições de sobrecompra e sobrevenda do estoque para gerar sinais de compra e venda.

Estratégia lógica

A lógica central desta estratégia baseia-se na combinação de bandas de Bollinger e indicadores RSI.

Em primeiro lugar, as bandas de Bollinger contêm três linhas: linha média, linha superior e linha inferior. A linha média é a média móvel simples de n dias, enquanto a linha superior e linha inferior são k vezes o desvio padrão acima e abaixo da linha média. Quando o preço atinge ou toca a linha superior ou inferior, indica que o estoque está em estado de sobrecompra ou sobrevenda.

Nesta estratégia, o período de duração da linha média das Bandas de Bollinger é de 235 dias, e o valor do parâmetro k é 2. Ele gera sinais de compra quando o preço cai abaixo da linha inferior de Bollinger ou cruza acima da linha média, e sinais de venda quando o preço sobe acima da linha superior de Bollinger.

Em segundo lugar, o indicador RSI reflete o nível de sobrecompra / sobrevenda de um estoque. RSI acima de 70 sugere estado de sobrecompra, enquanto abaixo de 30 estado de sobrevenda.

Nesta estratégia, as Bandas de Bollinger e os indicadores RSI são usados juntos: os sinais de compra são gerados quando o RSI atravessa o nível de sobrevenda enquanto o preço toca ou cai abaixo da linha inferior de Bollinger. Os sinais de venda são gerados quando o RSI cai do nível de sobrecompra enquanto o preço sobe acima da linha superior de Bollinger.

Vantagens da estratégia

Esta estratégia tem as seguintes vantagens:

  1. A combinação de Bandas de Bollinger e RSI torna os sinais de compra/venda mais precisos e confiáveis.
  2. As bandas de Bollinger identificam zonas de preços sobrecomprados/supervendidos, enquanto o RSI filtra sinais falsos.
  3. Apenas realiza negociações longas, não há necessidade de considerar riscos de curto prazo.
  4. Os parâmetros otimizados tornam-no adequado especificamente para o estoque de FNGU altamente volátil.
  5. Implementa um stop loss automatizado para reduzir os riscos de perda.
  6. A realização da codificação é simples e clara, fácil de entender e modificar.

Riscos e soluções

Há também alguns riscos associados a esta estratégia:

  1. Tanto as Bandas de Bollinger quanto o RSI podem gerar sinais falsos, levando facilmente ao sobreajuste.
  2. O FNGU em si tem alta volatilidade. A configuração incorreta de stop loss pode aumentar as perdas.
  3. A estratégia só se aplica a ações altamente voláteis como o FNGU em vez de outras.
  4. Embora otimizados, os parâmetros podem ficar desatualizados com as mudanças do mercado, exigindo monitoramento e otimização contínuos.

Orientações para a otimização da estratégia

Existem várias direcções para otimizar ainda mais esta estratégia:

  1. Adicione outros indicadores técnicos como KDJ e MACD para produzir sinais mais precisos.
  2. Otimizar os parâmetros das Bandas de Bollinger e do RSI para adaptar mais tipos de ações.
  3. Incorporar modelos de aprendizagem de máquina para ajudar a tomada de decisões com mais dados.
  4. Implementar negociações interperídicas utilizando dados de prazos mais longos.
  5. Combine a análise de sentimentos usando dados de mídia social para gerar sinais de negociação.
  6. Desenvolver um sistema de backtesting quantitativo para testar rapidamente diferentes configurações de parâmetros.

Conclusão

Esta é uma estratégia de longo prazo particularmente adequada para ações altamente voláteis, como o FNGU. Ao combinar as Bandas de Bollinger e o RSI, ele gera sinais de negociação em torno de níveis de preços sobrecomprados / sobrevendidos, com o objetivo de capturar oportunidades de reversão de preços.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by EMKM)", shorttitle="1Min Killer", overlay=true)

///////////// RSI
RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = rsi(price, RSIlength)

///////////// Bollinger Bands
BBlength = input(235, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length
BBmult = 2
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
BBtarget38 = BBbasis + 0.38 * BBdev  // Line at 38% of Bollinger Band width
BBtarget50 = BBbasis + 0.50 * BBdev  // Line at 50% of Bollinger Band width

///////////// EMA
emaLength = input(20, title="EMA Period Length")
ema = ema(close, emaLength)

source = close
buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band
sellEntry = crossunder(source, BBupper)

///////////// Plotting
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
plot(BBtarget38, color=color.blue, linewidth=2, title="SMA at 38% of BB width")  // Line at 38%
plot(BBtarget50, color=color.green, linewidth=2, title="SMA at 50% of BB width")  // Line at 50%
plot(ema, color=color.orange, title="EMA")  // Plot EMA

///////////// RSI + Bollinger Bands Strategy
longCondition = crossover(vrsi, RSIoverSold) and buyEntry
sellCondition = crossunder(vrsi, RSIoverBought) and close > BBupper

close_long = close > BBbasis
close_short = close < BBbasis

if (not na(vrsi))
    if longCondition
        strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy")
    else
        strategy.cancel(id="Buy")
        
    if close_long
        strategy.close("Buy")

if (sellCondition)
    strategy.entry("Sell", strategy.short, qty=10, stop=BBupper, comment="Sell")
else
    strategy.cancel(id="Sell")

if close_short
    strategy.close("Sell")


Mais.