
A estratégia é uma estratégia de negociação baseada em bandas de Brin e osciladores aleatórios. Ela usa oscilações aleatórias para determinar a amplitude de oscilação do mercado e usa osciladores aleatórios para julgar a sobrecompra e a sobrevenda do mercado.
O centro da estratégia são os dois indicadores técnicos da faixa de Brin e do oscilador aleatório. A faixa de Brin é composta por três linhas: a média, a média e a média. A média é uma média móvel simples do preço, a média e a média são respectivamente um múltiplo da diferença padrão de preço entre a média e a média.
O oscilador aleatório é composto por duas linhas: a linha%K e a linha%D. A linha%K mede a posição do preço de fechamento entre o preço mais alto e o preço mais baixo no período mais recente, e a linha%D é a média móvel da linha%K. Quando a linha%K atravessa a linha%D, indica que o mercado pode estar em um estado de sobrecompra; Quando a linha%K atravessa a linha%D, indica que o mercado pode estar em um estado de sobrevenda.
A estratégia combina esses dois indicadores, fazendo uma estratégia maior quando o preço quebra a faixa de Brin e cruza a linha de %D com o oscilador %K aleatório; fazendo uma estratégia menor quando o preço entra na faixa de Brin e cruza a linha de %D com o oscilador %K aleatório. Esta combinação pode efetivamente capturar a tendência do mercado, mas também pode evitar a negociação frequente em mercados de flutuação.
A estratégia é uma estratégia de negociação simples e eficaz, que combina os dois indicadores técnicos clássicos, a faixa de Brin e o oscilador aleatório, para obter ganhos estáveis em ambos os estados de mercado de tendência e oscilação. Embora a estratégia também tenha alguns riscos e limitações, com a otimização e melhoria adequadas, a performance e adaptabilidade da estratégia podem ser ainda melhoradas, tornando-se uma estratégia de negociação digna de referência e aprendizagem.
/*backtest
start: 2023-05-03 00:00:00
end: 2024-05-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Unique Bollinger Bands Strategy", overlay=true)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev
upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2
colorBasis = src >= basis ? color.blue : color.orange
pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))
fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))
// Parameters
bbLength = input.int(34, title="Length", minval=1)
bbMultiplier = input.float(2.0, title="Multiplier", minval=0.001, maxval=50)
// Source
priceData = close // Unique name for price data source
// Bollinger Bands Calculation
bbBasis = ta.sma(priceData, bbLength)
bbDeviation = ta.stdev(priceData, bbLength)
bbDeviationMultiplied = bbMultiplier * bbDeviation
bbUpperBand = bbBasis + bbDeviationMultiplied
bbLowerBand = bbBasis - bbDeviationMultiplied
// Plot Bollinger Bands
plot(bbBasis, color=color.blue, linewidth=2)
plot(bbUpperBand, color=color.blue)
plot(bbLowerBand, color=color.orange)
// Strategy Logic for Entry and Exit
enterLong = ta.crossover(priceData, bbUpperBand)
enterShort = ta.crossunder(priceData, bbLowerBand)
// Enter Long when price crosses over upper band
if (enterLong)
strategy.entry("Long", strategy.long)
// Enter Short when price crosses under lower band
if (enterShort)
strategy.entry("Short", strategy.short)
// Close Long when Short condition is met (i.e., price under lower band)
if (enterShort)
strategy.close("Long")
// Close Short when Long condition is met (i.e., price over upper band)
if (enterLong)
strategy.close("Short")