
A estratégia de bloqueio de ondas de banda larga é uma estratégia de ruptura de linha longa baseada no indicador de banda de Brin para determinar se a volatilidade do mercado diminuiu. Quando o mercado entra na fase de correção de turbulência, a correção da banda de Brin ocorre quando a queda ocorre e, nesse momento, julgamos a oportunidade de entrar no campo.
A estratégia depende principalmente do indicador da faixa de Brin para determinar se o preço entrou no período de choque de baixa oscilação. A linha central da faixa de Brin é a média móvel do preço de fechamento, e as trajetórias superiores e inferiores são duas diferenças padrão de desvio para cima e para baixo. Quando a volatilidade dos preços diminui, o intervalo entre as trajetórias superiores e inferiores ocorre um estreitamento evidente.
Para confirmar ainda mais a queda na volatilidade, verificamos se a média móvel dos valores do ATR está em tendência de queda. A queda no valor do ATR médio também é uma evidência lateral de que a volatilidade está diminuindo. Quando as duas condições acima são preenchidas simultaneamente, determinamos que a faixa de Brin já está em evidência de convergência, o que é uma excelente oportunidade de compra.
Depois de comprar, ativamos a estratégia de parada móvel com o dobro do valor do ATR como distância de parada. Isso pode efetivamente controlar as perdas.
A principal vantagem desta estratégia é a capacidade de determinar com precisão os períodos de correção de choque em que o mercado entra em um período de baixa volatilidade, determinando assim o melhor momento para comprar. Em comparação com outras estratégias de linha longa, a estratégia de bloqueio de choque de banda larga tem uma maior probabilidade de lucro.
Em segundo lugar, a estratégia também usa o stop loss móvel para controlar ativamente o risco. Isso permite minimizar os prejuízos mesmo em condições adversas. Isso é algo que muitas estratégias de linha longa não têm.
O principal risco da estratégia reside no fato de que os indicadores de Brin não são 100% precisos para avaliar mudanças na volatilidade dos preços. Quando a volatilidade de Brin diminui, o tempo de compra pode ser desfavorável.
Além disso, a configuração de vários parâmetros na estratégia também pode afetar os resultados. Precisamos de um grande número de parâmetros de otimização de feedback para tornar a estratégia mais robusta.
Podemos considerar adicionar outros indicadores para confirmar que os indicadores tendenciais também apresentam sinais de reversão ao mesmo tempo em que a borda de Brin está se contraindo. Por exemplo, ao mesmo tempo em que a borda de Brin está se contraindo, o diferencial do MACD foi desviado para o lado negativo, ou o RSI foi detectado pela zona de supera compra, etc. Isso pode melhorar ainda mais a precisão do momento de compra.
Outra direção é testar a influência de diferentes parâmetros sobre o resultado, como o ciclo de Brink’s Belt, o ciclo ATR e as configurações de múltiplos de stop loss móveis. Precisamos usar a otimização em etapas para encontrar a combinação de parâmetros ideal.
A estratégia de bloqueio de ondas de banda larga é uma estratégia de ruptura de linha longa relativamente estável que usa os indicadores de banda de Brin para determinar o momento em que a volatilidade dos preços diminuiu, e usa o risco de controle efetivo de stop loss móvel. Ainda é necessário otimizar os parâmetros e combinar outros indicadores para melhorar a robustez da estratégia.
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DojiEmoji
//@version=4
strategy("[KL] Bollinger Bands Consolidation Strategy",overlay=true,pyramiding=1)
// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("19 Apr 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }
// Indicator: BOLL bands {
BOLL_length = 20//input(20,title="Periods to lookback for BOLL and ATR calc. (default 20)")
BOLL_src = close
BOLL_center = sma(BOLL_src, BOLL_length)
BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length)
BOLL_upper = BOLL_center + BOLL_sDEV_x2
BOLL_lower = BOLL_center - BOLL_sDEV_x2
plot(BOLL_center, "Basis", color=#872323, offset = 0)
BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = 0, transp=50)
BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = 0, transp=50)
fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// }
// ATR and volatility Indicator {
ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL
avg_volat = sma(ATR_x2, BOLL_length)
//}
// Trailing stop loss {
var entry_price = float(0)
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
trail_profit_line_color = color.green
UPDATE_ATR_TSL = false
if strategy.position_size == 0 or not within_timeframe // make TSL line less visible
trail_profit_line_color := color.black
stop_loss_price := close - trailing_SL_buffer
else if strategy.position_size > 0
if UPDATE_ATR_TSL and ATR_x2 < trailing_SL_buffer
trailing_SL_buffer := ATR_x2
stop_loss_price := max(stop_loss_price, close[1] - trailing_SL_buffer)
plot(stop_loss_price,color=trail_profit_line_color)
// }
IGNORE_BOLL_SHAPE = false//input(false,title="Ignore BOLL (vs ATR) during entry (experimental)")
IGNORE_VOLATILITY = false///input(false,title="Ignore average ATR during entry (experimental)")
// Main:
if within_timeframe
// ENTRY:
if (ATR_x2 > BOLL_sDEV_x2 or IGNORE_BOLL_SHAPE) and (avg_volat < avg_volat[1] or IGNORE_VOLATILITY)
if strategy.position_size == 0
entry_price := close
trailing_SL_buffer := ATR_x2
stop_loss_price := close - ATR_x2
strategy.entry("Long",strategy.long, comment="enter")
if strategy.position_size > 0
strategy.entry("Long",strategy.long, comment="+")
// EXIT:
if strategy.position_size > 0
if low <= stop_loss_price
if close > entry_price
strategy.close("Long", comment="take profit")
else if low <= entry_price
strategy.close("Long", comment="stop loss")
if strategy.position_size == 0
entry_price := 0