Estratégia de negociação de swing de alta baseada em bandas de Bollinger e RSI

Autora:ChaoZhang, Data: 2024-03-11 11:51:22
Tags:

img

Resumo

Esta estratégia utiliza dois indicadores técnicos, Bandas de Bollinger e Índice de Força Relativa (RSI), para a negociação de swing de alta em tendências de alta. A lógica da estratégia é simples, mas eficaz: abrir uma posição longa quando o preço cai abaixo da Banda de Bollinger inferior e o RSI está abaixo de 35, e fechar a posição quando o RSI cruza acima de 69.

Princípios de estratégia

  1. Calcule o RSI: Use a média móvel relativa (RMA) para calcular a magnitude média dos aumentos e diminuições de preços separadamente, em seguida, divida a magnitude dos aumentos pela magnitude total para obter o RSI.

  2. Calcule as bandas de Bollinger: Use a média móvel simples (SMA) para calcular a linha média do preço, em seguida, adicione e subtraia os desvios padrão para obter as bandas superior e inferior.

  3. Abre longo: Quando o preço se rompe abaixo da faixa de Bollinger inferior e o RSI é inferior a 35, ele é considerado sobrevendido e uma posição longa é aberta.

  4. Fechar longo: Quando o RSI cruza acima de 69, é considerado sobrecomprado, e a posição longa é fechada para bloquear os lucros.

  5. Tome lucro e stop loss: Após a abertura de uma posição, os preços de take profit e stop loss são calculados com base em porcentagens definidas pelo usuário. A posição é fechada quando o preço de take profit ou stop loss é atingido. Isso ajuda a controlar o risco e o retorno de cada negociação.

Análise das vantagens

  1. As bandas de Bollinger podem refletir objectivamente a gama de movimentos de preços e ajustá-las em sincronia com as tendências de preços sem serem limitadas por limiares fixos.

  2. O RSI pode refletir intuitivamente o equilíbrio entre as forças de alta e baixa e também é relativamente objetivo.

  3. Quando usado em tendências de alta, é mais adequado para negociação de balanço. Ao capturar rebotes de preço com a faixa de Bollinger mais baixa e RSI baixo, e fechar posições em tempo hábil com RSI alto, ele pode capturar efetivamente os movimentos de curto prazo do mercado.

  4. A definição de take profit e stop loss torna o risco da estratégia controlado.Os investidores podem definir flexivelmente parâmetros de acordo com as suas preferências de risco.

  5. A lógica e o código da estratégia são relativamente simples, fáceis de entender e implementar, e os resultados dos backtests são relativamente estáveis.

Análise de riscos

  1. Em mercados agitados, as bandas de Bollinger e o RSI podem gerar muitos sinais de negociação, levando a uma alta frequência de negociação e a um aumento dos custos de transação.

  2. Um único indicador como o RSI é facilmente afetado por flutuações de preços de curto prazo e pode produzir sinais enganosos.

  3. A seleção dos parâmetros da banda de Bollinger e do RSI tem um impacto significativo no desempenho da estratégia e diferentes mercados e instrumentos podem exigir parâmetros diferentes.

  4. Em caso de eventos inesperados ou condições anormais de mercado, as Bandas de Bollinger e o RSI podem tornar-se ineficazes.

Orientações de otimização

  1. Considere a introdução de outros indicadores técnicos, tais como médias móveis para filtragem, por exemplo, apenas abrir posições quando as médias móveis estão em alinhamento de alta para melhorar a confiabilidade dos sinais.

  2. Otimizar os limiares superior e inferior do RSI, os parâmetros das bandas de Bollinger, etc., para encontrar as melhores combinações de parâmetros para cada instrumento e período de tempo.

  3. Com base no backtesting, realizar testes prospectivos e negociações simuladas adequadas para validar plenamente a eficácia e a estabilidade da estratégia antes da negociação em tempo real.

  4. Estratégia de controlo adicional das reduções de juros e melhoria dos retornos ajustados ao risco através do dimensionamento das posições, da tomada dinâmica de lucros e das medidas de stop loss e de outros métodos.

  5. Incorporar a estratégia numa carteira de investimento e utilizá-la em conjunto com outras estratégias de cobertura, em vez de a utilizar isoladamente, para melhorar a estabilidade da carteira.

Resumo

Este artigo apresenta uma estratégia de negociação de swing de alta baseada em dois indicadores técnicos, Bollinger Bands e RSI. A estratégia é adequada para capturar movimentos de mercado de curto prazo em tendências de alta, e sua lógica e implementação são relativamente simples. Ela abre posições longas quando o preço cai abaixo da Bollinger Band mais baixa e o RSI é baixo, fecha posições quando o RSI é alto, e define níveis de lucro e stop loss. As vantagens da estratégia são que ela pode refletir objetivamente a faixa de flutuações de preços e o equilíbrio de forças de alta e baixa, e seus riscos são relativamente controláveis. No entanto, ao usá-la na prática, é necessário prestar atenção ao controle da frequência de negociação, combinando mais indicadores para filtrar parâmetros, otimizando padrões e gerenciando posições. Além disso, a estratégia pode ser útil em condições anormais de mercado e outras medidas de controle de risco.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(69, "Upper Band", color=#C0C0C0)
band0 = hline(31, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 35.58 and src < lower
exit_long = rsi > 69
 
plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)


Mais.