A estratégia de ruptura da média móvel e da ruptura da faixa de Bollinger

Autora:ChaoZhang, Data: 2024-02-19 14:18:00
Tags:

img

Resumo

Esta estratégia combina o uso do indicador RSI para identificar os sinais de sobrecompra e sobrevenda, as Bandas de Bollinger para determinar as rupturas de preços e os crossovers da média móvel para julgar o mercado em diferentes estágios de tendência, a fim de lucrar.

Estratégia lógica

A estratégia consiste nos seguintes principais indicadores:

  1. Indicador RSI: Quando a linha RSI cruza o limiar de sobrecompra ou cruza abaixo do limiar de sobrevenda, são colocadas negociações longas ou curtas em conformidade.

  2. Bandas de Bollinger: Quando o preço atravessa a faixa superior de Bollinger, um negócio curto é colocado; quando o preço quebra a faixa inferior de Bollinger, um negócio longo é colocado.

  3. Média móvel: Os preços mais altos e mais baixos durante um determinado período (por exemplo, 5 períodos) são calculados.

  4. MACD: O cruzamento e o cruzamento da linha rápida, da linha lenta e da linha MACD são utilizados como indicadores de julgamento auxiliares.

Estes indicadores trabalham juntos para julgar o mercado em estágios de tendência e consolidação. As bandas de Bollinger identificam quebras e reversões para a média. As médias móveis determinam pontos de reversão da tendência durante a consolidação. Os extremos do RSI detectam condições de mercado de sobrecompra / sobrevenda para negociações contra-tendência.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. A combinação de múltiplos indicadores melhora a precisão. RSI, Bandas de Bollinger, média móvel e mais interagem para produzir sinais de negociação confiáveis.

  2. Aplicável a diferentes condições de mercado. Bandas de Bollinger para tendências, médias móveis para consolidação, RSI para extremos.

  3. Frequência de negociação razoável.

  4. Estrutura de código limpa, fácil de entender, editar e construir.

Análise de riscos

Alguns riscos requerem atenção:

  1. Riscos de parâmetros. Parâmetros de indicador inadequados podem gerar sinais de negociação incorretos. Os parâmetros precisam de testes e otimização contínuos.

  2. Riscos de transição longa/curta. Mudanças frequentes de posição longa/curta em torno de inversões de tendência aumentam os custos de negociação. O período de detenção pode ser ajustado.

  3. Riscos de codificação: falhas lógicas ocultas no código podem levar a transacções anormais.

Optimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Adicionar stop loss para bloquear os lucros e reduzir as perdas.

  2. Incorporar volume de negociação para evitar sinais falsos.

  3. Introduzir aprendizado de máquina para encontrar parâmetros ideais com base em dados históricos.

  4. Construir uma interface gráfica para visualização intuitiva do desempenho.

  5. Realizar backtesting para encontrar as melhores combinações de parâmetros.

Conclusão

Esta estratégia combina média móvel, Bandas de Bollinger, RSI e mais para gerar sinais de negociação. Sua versatilidade e precisão são pontos fortes claros, enquanto a configuração de parâmetros e os riscos de codificação precisam ser gerenciados.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
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)



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(close[lengthch]))
    strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
    strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
    
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Mais.