Triple BB Bands Breakout com RSI Estratégia

Autora:ChaoZhang, Data: 2024-02-29 14:57:49
Tags:

img

Resumo

Esta estratégia combina Bandas de Bollinger e indicadores RSI para gerar sinais de negociação. Monitora se os preços de fechamento de três velas quebram as bandas superiores ou inferiores ao mesmo tempo e combina o indicador Vortex e o indicador RSI para confirmar os sinais de negociação.

Princípio da estratégia

A estratégia baseia-se principalmente nos seguintes princípios:

  1. Use Bollinger Bands de 20 períodos, considere emitir sinais de negociação quando os preços quebrar as bandas superiores ou inferiores no fechamento
  2. Exige três candelabros para quebrar ao mesmo tempo para evitar falhas de fuga
  3. Combinar o indicador Vortex, quando fortemente sobrecomprado VIP>1.25, quando fortemente sobrevendido VIM>1.25, filtrar sinais
  4. Combine o indicador RSI para determinar sobrecompra e sobrevenda, considere ir curto quando o RSI atravessa 70, e considere ir longo quando o RSI atravessa 30
  5. Quando as condições acima são cumpridas, são gerados sinais longos e curtos

Análise das vantagens

As principais vantagens desta estratégia são:

  1. As bandas triplas de BB filtram falhas e garantem a fiabilidade das falhas
  2. O indicador Vortex avalia a força do mercado e evita negociações desfavoráveis no mercado
  3. O indicador RSI avalia a área de sobrecompra e sobrevenda, combinada com o indicador Bollinger Bands para entrada
  4. A combinação de múltiplos indicadores permite avaliar de forma abrangente a situação do mercado e a fiabilidade do sinal é relativamente elevada.

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. Indicador Bollinger Bands é muito sensível aos parâmetros, comprimento e StdDev multiplicador precisa ser otimizado
  2. O indicador Vortex também é bastante sensível ao parâmetro do ciclo, que precisa ser ajustado para diferentes mercados
  3. O indicador RSI é propenso a divergências e pode também perder tendências
  4. Se houver desacordo no julgamento dos três indicadores, será impossível entrar, perdendo algumas oportunidades

As medidas de controlo do risco incluem:

  1. Otimizar parâmetros e usar parâmetros com a maior taxa de vitória no backtesting
  2. Combinar outros indicadores, como a filtragem do volume de negociação
  3. Relaxar adequadamente a lógica de julgamento do indicador para evitar perder boas oportunidades

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar o comprimento e o multiplicador StdDev das Bandas de Bollinger para encontrar os parâmetros ideais
  2. Otimizar o ciclo do indicador Vortex para torná-lo mais adequado para diferentes mercados
  3. Aumentar o julgamento de outros indicadores, tais como volume de negociação, MACD, etc., para enriquecer sinais diversificados
  4. Ajustar a lógica de julgamento do indicador para evitar a impossibilidade de entrada devido à divergência do indicador
  5. Aumentar a estratégia de stop loss para controlar a perda máxima por negociação

Resumo

Esta estratégia combina múltiplos indicadores para julgamento. Ao mesmo tempo em que garante a confiabilidade do sinal, também tem alguns problemas. Através da otimização de parâmetros, fontes de sinal enriquecidas, lógica de julgamento ajustada e stop loss, etc., a estabilidade e lucratividade da estratégia podem ser ainda melhoradas.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Noway0utstorm

//@version=5
strategy(title='RSI + BB  over 3 bar+--- vortex0.71.3  ', shorttitle='NoWaytruongphuthinh', format=format.price, precision=4,overlay = true)

length = input(20, title="Length")
mult = input(2.0, title="Multiplier")
source = close

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)

upperBand = basis + dev
lowerBand = basis - dev

isClosedBar = ta.change(time("15"))

var bool closeAboveUpperBand = false
var bool closeBelowLowerBand = false


// Vortex Indicator Settings
period_ = input.int(14, title='Period', minval=2)

VMP = math.sum(math.abs(high - low[1]), period_)
VMM = math.sum(math.abs(low - high[1]), period_)
STR = math.sum(ta.atr(1), period_)
VIP = VMP / STR
VIM = VMM / STR

//
lengthrsi = input(14, title="RSI Length")
overboughtLevel = input(70, title="Overbought Level")
oversoldLevel = input(30, title="Oversold Level")

sourcersi = close
rsiValue = ta.rsi(sourcersi, lengthrsi)

shouldShort = rsiValue > overboughtLevel
shouldLong = rsiValue < oversoldLevel




if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3])

    if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel
        strategy.entry("Short", strategy.short)
        closeAboveUpperBand := false  // Reset the condition when entering a new Short position
    if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel
        strategy.entry("Long", strategy.long)
        closeBelowLowerBand := false  // Reset the condition when entering a new Long position



if strategy.position_size > 0  // Check if there is an open Long position
    closeAboveUpperBand := close > upperBand  // Update the condition based on close price
    if closeAboveUpperBand
        strategy.close("Long",disable_alert=true)  // Close the Long position if close price is above upper band

if strategy.position_size < 0  // Check if there is an open Short position
    closeBelowLowerBand := close < lowerBand  // Update the condition based on close price
    if closeBelowLowerBand
        strategy.close("Short",disable_alert=true)  // Close the Short position if close price is below lower band

// Plots
plot(basis, color=color.orange, title="Basis")
p1 = plot(upperBand, color=color.blue, title="Upper Band")
p2 = plot(lowerBand, color=color.blue, title="Lower Band")
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

Mais.