Estratégia de ruptura da média móvel de oscilação dupla

Autora:ChaoZhang, Data: 2024-01-08 14:43:48
Tags:

img

Resumo

A estratégia de breakout de média móvel dupla é uma estratégia de negociação de curto prazo que utiliza um sistema de média móvel dupla. A estratégia gera sinais de negociação baseados em canais de preços e bandas de Bollinger duplas, auxiliados por indicadores rápidos de RSI para determinar condições de sobrecompra e sobrevenda.

Estratégia lógica

A estratégia de ruptura de oscilação de média móvel dupla usa canais de preços de 20 períodos e Bandas de Bollinger como os principais indicadores de negociação. O canal de preços consiste em médias móveis dos preços mais altos e mais baixos, representando a faixa de oscilação de preços atual. As Bandas de Bollinger são formadas pela linha média do canal de preços e desvios padrão, que descrevem intuitivamente a faixa de flutuação de preços. Quando os preços se aproximam dos trilhos superior e inferior do canal, ele indica que os preços podem romper a faixa de oscilação e formar uma nova tendência. Neste ponto, combinado com o indicador RSI rápido para julgar as condições de sobrecompra ou sobrevenda, a direção da tendência pode ser determinada e decisões de negociação podem ser tomadas.

Especificamente, quando o RSI rápido está abaixo de 5, é considerado a zona de sobrevenda, e quando o RSI rápido excede 99, é considerado a zona de sobrecompra.

Vantagens

A maior vantagem da estratégia de ruptura de média móvel dupla é que ela capta os pontos de inflexão das tendências de preços de médio prazo para lucro. Em comparação com médias móveis e canais únicos, as bandas de Bollinger duplas refletem mais intuitivamente as flutuações e volumes de preços. E em comparação com indicadores de ciclo mais longo, como médias móveis de 20 dias e 60 dias, ela responde mais rapidamente às mudanças de preço e tem uma maior taxa de sucesso na captura de voltas. Além disso, a combinação do indicador RSI rápido pode filtrar efetivamente falhas de ruptura. Portanto, essa estratégia pode maximizar a probabilidade de lucro.

Riscos

A estratégia de breakout de média móvel dupla tem alguns riscos. Em primeiro lugar, a negociação de médio prazo em si tem riscos de stop-loss mais altos. Em uma tendência forte, breakouts falsos podem ocorrer várias vezes em indicadores de médio prazo, causando paradas. Em segundo lugar, a eficácia dos indicadores rápidos de RSI em julgar zonas de sobrecompra e sobrevenda será afetada pelo sentimento do mercado. Quando ocorrem mudanças estruturais no mercado, a utilidade de tais indicadores auxiliares diminuirá. Finalmente, incorporar outros fatores, como preços de fechamento, volume e volume de negócios, pode melhorar a precisão da decisão.

A contramedida é ajustar adequadamente o intervalo de stop loss, afrouxar o ponto de stop loss em uma tendência de alta e apertá-lo em uma tendência de baixa. Além disso, considere plenamente mais indicadores auxiliares para evitar depender apenas de um ou dois indicadores. Quando o efeito de julgamento diminuir, reduza adequadamente a posição para evitar riscos.

Orientações de otimização

Ainda há espaço para uma otimização adicional da estratégia de ruptura da média móvel de oscilação dupla. Primeiro, otimização de parâmetros. Mais parâmetros de ciclo podem ser testados para encontrar a combinação ideal de parâmetros. Segundo, otimização do modelo. Introduzir modelos de aprendizado de máquina para julgar com mais precisão as áreas de sobrecompra e sobrevenda. Terceiro, otimização de prazo. Teste em diferentes prazos, como diário e 60 minutos separadamente, para determinar o melhor cenário de aplicação. Quarto, otimização de condição. Adicione mais indicadores de volume e preço aos sinais de filtro, como tendência de expansão de volume e índice DMI.

Conclusão

A estratégia de ruptura de média móvel dupla capta rupturas de preço de médio prazo através da construção de um sistema de banda de Bollinger dupla, que é uma estratégia de rastreamento de tendência eficaz. A estratégia tem alta taxa de sucesso e resposta rápida, e pode lucrar efetivamente. Por meio de otimização de parâmetros, otimização de modelo, seleção de prazo e outros meios, o desempenho da estratégia pode ser melhorado. Esta estratégia é adequada para comerciantes quantitativos experientes para realizar melhorias e aplicações quantitativas.


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


//@version=2
strategy("Noro's Bands Strategy v1.4", shorttitle = "NoroBands str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Use ColorBar")
usecb = input(true, "Use CryptoBottom")
usersi = input(true, "Use RSI")
usemm = input(true, "Use min/max")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
needlo = input(false, defval = false, title = "Show Locomotive")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) and (min < min[1] or usemm == false) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) and (max > max[1] or usemm == false) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 ? 1 : 0
//dn3 = fastrsi > 99 ? 1 : 0

//Locomotive
uploco = trend == 1 and close < open and min < min[1] and close < center ? 1 : 0
plotarrow(needlo == true and uploco == 1 ? 1 : 0, colorup = black, colordown = black, transp = 0)

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == true)
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Mais.