
Esta é uma estratégia de negociação que utiliza o indicador de Brinks. Esta estratégia visa usar o indicador de Brinks para identificar os momentos de forte flutuação de preços e tomar decisões de compra ou venda de acordo.
A estratégia calcula a trajectória superior, a trajectória média e a trajectória inferior da faixa de Brin, para determinar se o preço atual está no intervalo de flutuação, para determinar o momento de fazer uma posição de alta ou baixa. Quando o preço está próximo da trajetória superior, é considerado como uma região de extremo múltiplo, a estratégia opta por vender uma posição de baixa; Quando o preço está próximo da trajetória inferior, é considerado como uma região de extremo em branco, a estratégia opta por comprar uma posição de baixa.
Além disso, a estratégia também introduz um fator de reversão de tendência, que, se um sinal de reversão ocorrer, também desencadeará uma decisão de compra ou venda correspondente. Concretamente, a lógica da estratégia é a seguinte:
A estratégia utiliza as características da faixa de Bryn, combinando tendências e fatores de reversão, para tentar capturar pontos de reversão e negociar quando a volatilidade aumenta.
A estratégia tem as seguintes vantagens em comparação com a estratégia de média móvel comum:
Em geral, a estratégia combina muito bem o discernimento da Brin e da entidade de preços, fazendo transações em pontos de inflexão razoáveis, garantindo um certo nível de lucro e controlando o risco.
No entanto, a estratégia também apresenta alguns riscos, como:
Em contrapartida, o futuro pode ser melhorado em:
Em geral, esta estratégia é um modelo típico de estratégia de negociação de Brin. Ela evita os inconvenientes de apenas usar o Brin e gerar transações ineficazes. Com a introdução de um julgamento de reversão de tendência, os sinais de filtragem efetiva podem teoricamente obter um melhor desempenho da estratégia.
/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")
uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")
//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
//Lines
col = showbands ? black : na
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)
//Body
body = abs(close - open)
abody = ema(body, 30)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2
//Trading
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
if exit
strategy.close_all()