O RSI duplo combinado com a banda de Bollinger para seguir a tendência

Autora:ChaoZhang, Data: 2023-09-19 22:10:02
Tags:

Resumo

Esta estratégia usa indicadores RSI duplos para identificar condições de sobrecompra e sobrevenda, combinados com breakouts de Bollinger Band para gerar sinais de negociação.

Análise dos princípios

A estratégia emprega dois RSI com diferentes prazos para julgar o status de sobrecompra/supervenda de curto e longo prazo. Os sinais de negociação só são gerados quando ambos os RSI atingem os valores de limiar simultaneamente. Isso evita sinais falsos de um único RSI.

As bandas de Bollinger também são usadas para identificar breakouts de preços. Somente quando as condições do RSI são atendidas e o preço quebra a banda superior/inferior da banda de Boll, um sinal comercial será gerado. A confirmação do breakout ajuda a evitar sinais em mercados não-trending.

Por fim, MAs rápidos e lentos são verificados para a direção da tendência.

Análise das vantagens

O uso combinado de múltiplos indicadores ajuda a filtrar sinais falsos, negociando apenas tendências óbvias.

Análise de riscos

O principal risco é não identificar prontamente as reversões de tendência. Reversões acentuadas em forma de V podem levar a perdas significativas sem stop loss oportuno. O ajuste de parâmetros também pode afetar o desempenho.

Sugestões de otimização

  1. Adicione estratégias de stop loss para sair rapidamente em reversões.

  2. Incorporar outros filtros como o volume para evitar falhas.

  3. Otimize os parâmetros para encontrar a melhor combinação.

  4. Adicionar modelos de aprendizagem de máquina para identificar melhor os regimes de mercado.

  5. Melhorar a gestão dos riscos, incluindo o dimensionamento das posições e o controlo das perdas.

Conclusão

Esta estratégia combina RSI duplo e Bollinger Bands para lucrar com tendências de curto prazo. Embora simples e direto, existem limitações como sinais de reversão atrasados.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 04:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "Madrugada strat copy", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, currency = currency.USD)
 
// === GENERAL INPUTS ===
// RSI 1
RSIlength = input(10,title="RSI") 
RSIoverSold = input(65,title="OSold")
RSIoverBought = input(35,title="OBought")
price = close
vrsi = rsi(price, RSIlength)
// RSI 2
RSIlength2 = input(6,title="RSI2") 
RSIoverSold2 = input(65,title="OSold2")
RSIoverBought2 = input(35,title="OBought2")
price2 = close
vrsi2 = rsi(price2, RSIlength2)

//Bollinger Bands
source = close
Bollinger = input(20, minval=1), Desv = input(1.7, minval=0.001, maxval=50)
basis = sma(source, Bollinger)
dev = Desv * stdev(source, Bollinger)
upper = basis + dev
lower = basis - dev
plot(basis, color=red, title="BB ma")
p1 = plot(upper, color=blue, title="BBajo")
p2 = plot(lower, color=blue, title="BAlto")
fill(p1, p2)

//Media movil
short = input(3, minval=1, title="Media corta")
long = input(10, minval=1, title="Media larga")
src = close
plot(sma(src, short), color=#00FF00, transp=0, linewidth=1, title="Media rapida")
plot(sma(src, long), color=white, transp=0, linewidth=2, title="Media lenta")


// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => vrsi < 30 and  vrsi2 < 27 and cross(lower, price)
exitLong() => short < long
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => vrsi > 70 and vrsi2 > 70 and cross(upper, price)
strategy.entry(id = "Short", long = false, when = enterShort())


// Definición señales de compra
buy_signals = vrsi < 30 and  vrsi2 < 27 and cross(lower, price)

// Definición señales de venta
sell_signals = vrsi > 70 and vrsi2 > 70 and cross(upper, price)

// Dibuja las señales de compra venta en franjas de color
b_color = (sell_signals) ? color(red,65) : (buy_signals) ? color(green,65) : na
bgcolor(b_color)

// Dibuja las señales de compra venta coloreando las velas
barcolor(buy_signals ? white : sell_signals ? white : na)

plot(vrsi, color=white, linewidth=1)
plot(vrsi, color=white, linewidth=2)

// Crea alarmas usables desde el desplegable para poder enviar mails a haas
alertcondition(buy_signals, title='Buy-Signal', message='compra')
alertcondition(sell_signals, title='Sell-Signal', message='vende')


Mais.