As bandas de Bollinger, o RSI, o MACD e a estratégia de negociação de fusão de múltiplos indicadores estocásticos

Autora:ChaoZhang, Data: 23 de janeiro de 2023
Tags:

Resumo

Esta estratégia integra Bollinger Bands, RSI, MACD e Estocástico, quatro indicadores técnicos diferentes, para tomar decisões longas e curtas. Primeiro, determina se o preço está fora do canal Bollinger Bands e toma posições longas ou curtas, em conformidade. Em seguida, verifica se o RSI está em zonas de sobrecompra ou sobrevenda e entra com base na direção. Em seguida, procura sinais de cruz de ouro e cruz de morte do MACD e toma posições, em conformidade. Finalmente, identifica a cruz de ouro e cruz de morte estocástica em zonas de sobrecompra / sobrevenda. Com sinais de todos os quatro indicadores, a estratégia adota posições de pirâmide mais agressivas para maximizar os lucros.

Princípios

A estratégia utiliza principalmente quatro indicadores - Bollinger Bands, RSI, MACD e Stochastic.

As bandas de Bollinger são representadas em níveis de desvio padrão acima e abaixo de uma média móvel simples.

O RSI calcula o momentum como a proporção de fechamentos mais altos para fechamentos mais baixos. Valores abaixo de 30 sugerem uma condição de sobrevenda, enquanto acima de 70 sugere sobrecompra.

O MACD é a diferença entre as médias móveis de curto e longo prazo.

O cruzamento de linhas estocásticas K e D também serve como sinais comerciais. K abaixo de 20 sugere sobrevenda, enquanto acima de 80 sugere sobrecompra.

A combinação de sinais desses quatro indicadores melhora a precisão das entradas de negociação. Especificamente, ir longo quando o preço excede a faixa superior das Bandas de Bollinger, o RSI abaixo de 30, a cruz de ouro do MACD e a travessia do Stochastic K acima de D abaixo de 20.

Vantagens

A principal vantagem desta estratégia é a combinação de múltiplos indicadores melhora a precisão e taxa de vitória.

Em primeiro lugar, o uso de indicadores em diferentes prazos - Bollinger para médio/longo prazo, e MACD, RSI, Stochastic para curto prazo, reduz os erros.

Em segundo lugar, exigir que todos os indicadores se alinhem reduz sinais falsos.

Além disso, a combinação de indicadores complementares capitaliza os pontos fortes de cada um.

Por fim, as posições de pirâmide com sinais confirmados maximizam os lucros em relação aos negócios de quantidade fixa.

Riscos

Alguns riscos a considerar:

Em primeiro lugar, mais parâmetros e indicadores tornam a otimização difícil.

Em segundo lugar, os sinais de indicadores simultâneos são raros, o que leva a uma baixa frequência de negociação.

Em terceiro lugar, a pirâmide pode amplificar as perdas se os indicadores derem sinais errados.

Por último, os sinais de indicadores inconsistentes necessitam de regras de decisão.

Melhorias

Algumas formas de melhorar a estratégia:

  1. Otimizar parâmetros através de algoritmos genéticos, busca de grelhas, etc. para encontrar as melhores combinações.

  2. Adicionar regras de stop loss para controlar as perdas quando o preço se move negativamente além dos limiares.

  3. Melhorar a lógica de entrada com sistema de pontuação para sinais de indicadores inconsistentes e parâmetros ponderados.

  4. Otimizar as saídas com dados de lucro/perda em períodos de detenção para gerar regras ideais de saída.

  5. Otimizar os produtos e os prazos mais adequados para a estratégia.

  6. Contar com custos de negociação como deslizamento e comissões na otimização de parâmetros.

  7. Utilize o aprendizado de máquina para otimização adaptativa.

Conclusão

Esta estratégia combina múltiplos indicadores e mecanismos de confirmação para a tomada de decisão. Com parâmetros adequados e controles de risco, pode alcançar bons resultados. Mas a complexidade e os riscos de ajuste precisam ser abordados através de melhorias contínuas para a estabilidade. Encontrar combinações ideais de indicadores, regras científicas de entrada/saída e controle de risco são fundamentais para a lucratividade sustentada em todas as condições de mercado.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",  minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)
lengthst = input(14, minval=1)
OverBoughtst = input(80)
OverSoldst = input(20)
smoothK = 3
smoothD = 3

k = sma(stoch(close, high, low, lengthst), smoothK)
d = sma(k, smoothD)



ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)

upper = basis + dev
lower = basis - dev

vrsi = rsi(price, lengthrsi)

if (not na(vrsi))
    if (crossover(vrsi, overSold))
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    if (crossunder(vrsi, overBought))
        strategy.entry("RsiSE", strategy.short, comment="RsiSE")

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")
    
    
if (not na(k) and not na(d))
    if (crossover(k,d) and k < OverSoldst)
        strategy.entry("StochLE", strategy.long, comment="StochLE")
    if (crossunder(k,d) and k > OverBoughtst)
        strategy.entry("StochSE", strategy.short, comment="StochSE")   
        
if (crossover(delta, 0))
    strategy.entry("MacdLE", strategy.long, comment="MacdLE")

if (crossunder(delta, 0))
    strategy.entry("MacdSE", strategy.short, comment="MacdSE")


Mais.