Esta estratégia combina o indicador de Brin e o indicador de retração de Fibonacci, permitindo a negociação de uma combinação de indicadores múltiplos. Pertence ao tipo típico de estratégia de indicador de combinação. A estratégia determina a direção da tendência através das faixas de Brin e a retração de Fibonacci determina os pontos de resistência de suporte crítico, gerando assim um sinal de negociação.
A estratégia baseia-se em dois indicadores:
Calcule os traços superior, médio e inferior na faixa de Bryn. Quando o preço quebra o traço inferior, faça um sinal de mais, e quando o preço quebra o traço superior, faça um sinal de menos.
Dois importantes pontos de retração de Fibonacci, 0% e 100%, são calculados com base nos altos e baixos históricos. Estes dois pontos podem servir como pontos de suporte e resistência importantes.
A lógica da transação é a seguinte:
Faça mais sinais: o preço sobe através da faixa de Brin e está em 0% acima do suporte de Fibonacci
Sinais de vazio: Preço abaixo do traçado da faixa de Brin e abaixo de 100% da resistência de Fibonacci
A estação plana é usada como referência no meio da rota, com parada ou perda perto do meio da rota.
As medidas a seguir podem reduzir o risco:
A estratégia pode ser melhorada em vários aspectos:
Encontrar a melhor proporção de parâmetros para o cálculo de ascensão e descensão
Parâmetros de diferentes períodos de teste de cálculo de retração
Por exemplo, observe a forma de uma linha K na ruptura de uma faixa de Bryn.
Considere um modo de parar perdas com função de rastreamento
Os parâmetros de diferentes variedades não são necessariamente os mesmos e precisam ser ajustados
Esta estratégia, através da combinação de indicadores de retirada de Fibonacci e Fibra, exercita suas vantagens técnicas e melhora a qualidade do sinal de negociação. Mas também há problemas como a dificuldade de otimização de parâmetros, condições de entrada muito rigorosas. Podemos aperfeiçoar o sistema de estratégia por meio de métodos como configuração de parâmetros de otimização, largura adequada de condições de entrada e melhoria do mecanismo de parada de perdas.
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands & Fibonacci Strategy", shorttitle="BB & Fib Strategy", overlay=true)
// Initialize position variables
var bool long_position = false
var bool short_position = false
// Bollinger Bands settings
length = input.int(20, title="Bollinger Bands Length")
src = input(close, title="Source")
mult = input.float(2.0, title="Standard Deviation Multiplier")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper_band = basis + dev
lower_band = basis - dev
// Fibonacci retracement levels
fib_0 = input.float(0.0, title="Fibonacci 0% Level", minval=-100, maxval=100) / 100
fib_100 = input.float(1.0, title="Fibonacci 100% Level", minval=-100, maxval=100) / 100
// Plotting Bollinger Bands
plot(upper_band, color=color.red, title="Upper Bollinger Band")
plot(lower_band, color=color.green, title="Lower Bollinger Band")
// Calculate Fibonacci levels
fib_range = ta.highest(high, 50) - ta.lowest(low, 50)
fib_high = ta.highest(high, 50) - fib_range * fib_0
fib_low = ta.lowest(low, 50) + fib_range * fib_100
// Plot Fibonacci retracement levels
plot(fib_high, color=color.blue, title="Fibonacci High")
plot(fib_low, color=color.orange, title="Fibonacci Low")
// Entry conditions
long_condition = ta.crossover(close, upper_band) and low > fib_low
short_condition = ta.crossunder(close, lower_band) and high < fib_high
// Plot arrows on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Entry and exit logic
if long_condition and not short_position
strategy.entry("Long", strategy.long)
long_position := true
short_position := false
if short_condition and not long_position
strategy.entry("Short", strategy.short)
short_position := true
long_position := false
// Exit conditions (you can customize these)
long_exit_condition = ta.crossunder(close, basis)
short_exit_condition = ta.crossover(close, basis)
if long_exit_condition
strategy.close("Long")
long_position := false
if short_exit_condition
strategy.close("Short")
short_position := false