
A estratégia baseia-se no indicador de Bollinger Bands e na média móvel para determinar se o preço está perto de uma baixa na Bollinger Bands, fazendo uma posição LONG ou SHORT para obter lucro. Quando o preço quebra a Bollinger Bands para cima, olhe para baixo; Quando o preço cai para baixo, olhe para cima.
A estratégia baseia-se em dois sinais de entrada:
Sinais multi-cabeça: quando o preço de fechamento toca a trajetória inferior e o preço de fechamento está acima da linha média da EMA, a entidade anterior da linha K é negativa e a entidade atual da linha K é positiva.
Sinal de vazio: quando o preço de fechamento toca a linha superior e o preço de fechamento está abaixo da linha média da EMA, a entidade anterior da linha K é a linha do sol e a entidade atual da linha K é a linha do sol.
Método de stop loss: Stop loss fixo. O ponto de stop loss é o coeficiente de risco-retorno do preço de entrada em relação à distância do adversário.
Método de paragem: o objetivo é ganhar para o adversário. Isto é, fazer mais paragem para o lado inferior e fazer uma parada para o lado superior.
Combinando os benefícios de uma estratégia de tendência e reversão, a estratégia é mais eficiente em situações de tendência.
O indicador de correlação de tendências de Bolingbroke é usado para avaliar as áreas de sobrevenda e sobrecompra, e para avaliar as oportunidades de reversão.
A fixação de um ponto de parada é razoável e ajuda a controlar o risco.
O sistema de bloqueio móvel permite o máximo de lucro.
A estratégia de ruptura é muito arriscada, e é preciso ter cuidado com as falsas rupturas.
O stop loss pode ser acionado com frequência quando a situação é muito turbulenta.
O Stop Loss fixo não pode ser ajustado para as flutuações do mercado e pode ser demasiado flexível ou demasiado radical.
A configuração dos parâmetros da faixa de Bryn pode ter um efeito negativo.
Pode-se considerar a combinação de indicadores RSI para filtrar os sinais de entrada, como RSI acima de 50 para fazer mais, RSI abaixo de 50 para fazer menos, para evitar sinais errados.
A adição de uma função para ajustar automaticamente a distância de parada fixa para tornar a parada mais flexível. Por exemplo, a distância de parada pode ser configurada dinamicamente de acordo com o indicador ATR.
Optimizar os parâmetros da faixa de Bryn para encontrar a melhor combinação de parâmetros.
É possível testar diferentes parâmetros de linha média da EMA para otimizar o efeito de barreira da linha média.
A estratégia compreende a tendência e a reversão, usando a faixa de Brin para determinar o ponto de entrada de compra e venda, maximizando os lucros com o stop-loss móvel. O desempenho é melhor em situações de turbulência de tendência.
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)
// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
ema = ema(close, emaInput)
// These are our conditions as explained above
entryLong = low[1] <= lower[1] and low <= lower and low > ema
entryShort = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong = close > open and close[1] < open[1]
reversecandleShort = close < open and close[1] > open[1]
var stopLong = 0.0
var stopShort = 0.0
// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
stopLong := (((close / upper - 1) * riskreward + 1) * close)
strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")
if reversecandleShort and entryShort and strategy.position_size == 0
stopShort := (((close / lower - 1) / riskreward + 1) * close)
strategy.entry("Short Entry", strategy.short, comment = "Short Entry")
strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")
// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)
// These plots are to check the stoplosses, they can make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)