A estratégia de ruptura de oscilação de dupla linha média é uma estratégia de negociação de curta distância que utiliza um sistema de dupla linha média. A estratégia é baseada em um canal de preço e duplas faixas de Brin para construir um sinal de negociação, auxiliado pelo indicador RSI rápido para julgar sobrecompras e sobrevendas, resultando em sinais de entrada e saída.
A dupla estratégia de ruptura de equilíbrio utiliza um canal de preço com 20 ciclos de duração e uma faixa de burins como principais indicadores de negociação. O canal de preço é formado pela linha de equilíbrio entre o preço mais alto e o preço mais baixo, representando a faixa de oscilação do preço atual. A faixa de burins é formada pelo eixo central do canal de preço e o desvio padrão, e a área de faixa descreve de forma mais intuitiva a faixa de oscilação do preço. Quando o preço se aproxima da descida do canal, indica que o preço pode romper a faixa de oscilação e formar uma nova tendência.
Especificamente, quando o RSI rápido é inferior a 5 é considerado uma zona de superabando, e quando o RSI rápido é superior a 99, é considerado uma zona de superabando. Além disso, deve-se combinar a direção da linha K com fatores como a direção da entidade, a inovação de preços alta (nova baixa), para evitar a ocorrência de falsas rupturas de cabeça. Quando as condições acima são atendidas, os sinais de compra e venda são gerados.
A maior vantagem da estratégia de ruptura de oscilação de dupla linha média é capturar os pontos de inflexão da tendência de preços de linha média curta e obter lucro. Em comparação com a linha média única e o canal, a dupla faixa de brinquedo reflete melhor a flutuação e o volume dos preços. Em comparação com indicadores de períodos mais longos, como a linha média de 20 dias, 60 dias, etc., ela responde mais rapidamente às mudanças de preço e tem uma maior taxa de sucesso em capturar a ruptura. Além disso, a combinação com o indicador RSI rápido pode filtrar efetivamente as rupturas de falha.
A estratégia de ruptura com oscilação de dupla linha de equilíbrio tem um certo risco. Primeiro, a negociação em linha curta e média tem um maior risco de parada. Em um cenário de forte tendência, o indicador de linha curta e média pode ter várias falsas rupturas de cabeça e causar uma parada. Segundo, o efeito do RSI rápido sobre o julgamento de sobrecompra e sobrevenda é afetado pela emoção do mercado.
A contra-medida é ajustar adequadamente a amplitude de parada de perda, relaxar o ponto de parada de perda no movimento ascendente e apertar no movimento descendente. Além disso, considerar plenamente mais indicadores auxiliares, evitando a dependência única de um ou dois indicadores. Quando o efeito de julgamento diminui, reduzir adequadamente o risco de evasão de posição.
A estratégia de ruptura de oscilação de dupla equilíbrio ainda tem espaço para otimização adicional. Primeiro, otimização de parâmetros. Pode testar mais parâmetros de ciclo para encontrar a combinação de parâmetros ideal. Segundo, otimização de modelos. Introdução de treinamento de modelos de aprendizado de máquina para julgar com mais precisão o intervalo de venda e venda. Terceiro, otimização do quadro de tempo.
A estratégia de ruptura de onda de equilíbrio duplo é uma estratégia eficaz de rastreamento de tendências. A estratégia tem uma alta taxa de sucesso, responde rapidamente e pode lucrar efetivamente.
/*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)