
A estratégia usa o sistema de linha-meia para determinar a direção da tendência e, em combinação com os indicadores de volatilidade, evita mercados de baixa volatilidade e usa o stop loss de choque para gerenciar as negociações.
A estratégia julga a direção da tendência comparando a relação de posição entre a média rápida e a média lenta. Quando a média rápida atravessa a média lenta, veja mais e veja menos.
A lógica de negociação da estratégia é a seguinte:
Calcule a média rápida (default 20 dias) e a média lenta (default 50 dias).
Calcule a taxa de variação de largura da faixa de Bryn (default 40 dias, 2 vezes o diferencial padrão).
Quando a linha média rápida atravessa a linha média lenta, e a taxa de variação de largura de banda de Bryn é superior ao limite definido (default 9%), um sinal de múltiplas cabeças é gerado.
Quando a média rápida atravessa a média lenta e a taxa de variação da largura de banda de Bryn excede o limiar definido (default 9%), um sinal de cabeçalho é gerado.
Calcule o canal de vazio de Candeli como um ponto de parada.
O preço máximo de um stop loss é o ATR.*Multiplicação, o ponto de parada é o preço mínimo + ATR*Multiplicação.
Usando um sistema de linha média para determinar a direção da tendência, pode-se seguir a tendência de forma eficaz.
A introdução da taxa de variação da largura de banda de Brin evita o choque do mercado e reduz as transações desnecessárias.
O sistema de travamento de choque é usado para evitar que o jogador fique preso no campo.
Os vários parâmetros são ajustáveis e podem ser otimizados para diferentes mercados.
A lógica da estratégia é clara e fácil de entender, facilitando a aprendizagem.
O sistema linear apresenta um atraso e pode perder a oportunidade de uma rápida reversão.
A configuração inadequada dos parâmetros da faixa de Bryn pode filtrar os sinais de negociação válidos.
A perda de vibração é muito sensível e pode causar transações excessivamente frequentes.
A falta de otimização de parâmetros pode levar a um risco de posse.
A falta de capacidade para se adaptar às mudanças drásticas do mercado provocadas por eventos de grande importância.
É possível testar combinações lineares de diferentes parâmetros para encontrar o melhor parâmetro.
Pode-se testar os parâmetros da faixa de Bryn em diferentes períodos para encontrar o melhor efeito de filtragem de flutuação.
Pode ser combinado com outros indicadores para a confirmação de entrada, melhorando a qualidade do sinal.
A introdução de estratégias de stop loss dinâmicas permite que o stop loss acompanhe melhor o mercado.
Pode ser combinado com a tecnologia de aprendizagem de máquina para otimizar automaticamente os parâmetros, adaptando-se às mudanças do mercado.
A estratégia integra um sistema de linha de equilíbrio, indicadores de correlação e tecnologia de parada de choque, formando um sistema de acompanhamento de tendências relativamente estável. Otimizando os parâmetros, pode-se obter um bom efeito estratégico.
/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 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/
// © juanchez
//@version=4
strategy("CHI", overlay = true, close_entries_rule = "ANY")
n = input(title= "highest high o lowest low period", defval= 22)
f= input(title= "multiplicador", defval= 4)
long = highest(high, n) - atr(n)*f
short= lowest(low, n) + atr(n)*f
plot(long, color= color.red)
plot(short, color= color.green)
//moving averages
period= input(title= "moving averages period", defval= 50)
period2= input(title= "moving averages period2", defval= 20)
type= input(title= "moving averages type", options= ["sma", "ema"], defval= "ema")
//moving average function
mo(p, t) =>
if t == "sma"
sma(close[barstate.islast ? 1: 0], p)
else if t== "ema"
ema(close[barstate.islast ? 1: 0], p)
m= mo(period, type)
m2= mo(period2, type)
trend= m2 > m
plot(m, color = color.maroon, linewidth = 3)
plot(m2, linewidth= 3)
//BOLLINGER BANDS ENTRIES
bb1_period= input(title= "Bollinger bands 1 period", defval=40, minval=1)
bb1_source=input(title="Bollinger band 1 source", defval=close)
bb1_multi=input(title="Bollinger Bands 1 factor", defval=2, minval=1, step=0.1)
show_bb1= input(title="Show Bollinger bands 1", defval=false)
//BOLLINGER BANDS
_bb(src, lenght, multi)=>
float moving_avg= sma(src[barstate.islast? 1: 0], lenght)
float deviation= stdev(src[barstate.islast? 1: 0], lenght)
float lowerband = moving_avg - deviation*multi
float upperband = moving_avg + deviation*multi
[moving_avg, lowerband, upperband]
[bb1, lowerband1, upperband1]= _bb(bb1_source, bb1_period, bb1_multi)
//FIRST BAND
plot(show_bb1? bb1 : na, title="BB1 Moving average", linewidth= 3, color= color.fuchsia)
plot(show_bb1? upperband1 : na, title="BB1 Upper Band", linewidth= 3, color= color.green)
plot(show_bb1? lowerband1 : na, title="BB1 Lower Band", linewidth= 3, color= color.red)
//BB's Width threshold
thresh= input(title= "widen %", defval= 9, minval = 0, step = 1, maxval= 100)
widht= (upperband1 - lowerband1)/bb1
roc= change(widht)/widht[1]*100
cross=crossover(roc, thresh)
// entry
//long
elong= input(true, title= "enable long")
longcondition= m2 > m and cross and elong
//short
eshort= input(true, title= "enable short")
shortcondition= m2 < m and cross and eshort
plotshape(longcondition? true: false , location= location.belowbar, style= shape.labelup, size= size.small, color= color.green, text= "Buy", textcolor= color.white)
plotshape(shortcondition? true: false , location= location.abovebar, style= shape.labeldown, size= size.small, color= color.red, text= "Sell", textcolor= color.white)
out= crossunder(close, long)
outt= crossover(close, short)
strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = out)
strategy.entry("short", strategy.short, when = shortcondition)
strategy.close("short", when = outt)