O recurso está a ser carregado... Carregamento...

Bollinger Bands Baseado em Tendência Seguindo a Estratégia

Autora:ChaoZhang, Data: 2024-01-18 16:37:56
Tags:

img

Resumo

Esta estratégia usa Bandas de Bollinger para determinar a direção da tendência do preço combinada com médias móveis rápidas e lentas para entrar em posições. O sinal de compra é acionado quando o preço atravessa a banda média de Bollinger e a média móvel rápida cruza a média móvel lenta. O sinal de venda é acionado quando o preço quebra abaixo da banda média de Bollinger e a média móvel rápida cruza abaixo da média móvel lenta. O método de stop loss é o ATR trailing stop loss.

Estratégia lógica

A estratégia consiste principalmente no indicador Bollinger Bands e nas médias móveis.

OBandeiras de BollingerA banda média é a média móvel simples de n dias. A banda superior e a banda inferior são k desvios padrão acima e abaixo da banda média. Quando o preço está perto da banda superior, indica condições de sobrecompra. Quando o preço está perto da banda inferior, indica condições de sobrevenda. A banda média representa a direção da tendência do preço.

OMédia móvelA média móvel rápida tem um período de 40 e a média móvel lenta tem um período de 120. Quando o MA rápido cruza o MA lento, é um sinal de compra.

Com base nas regras dos indicadores acima referidos, os sinais de negociação específicos desta estratégia são:

Comprar sinal: Preço fechado quebra a faixa média e MA rápida cruza a MA lenta

Venda de sinal: Preço de fechamento abaixo da faixa média e cruzamento rápido da MA abaixo da MA lenta

Parar de Perder: ATR trailing stop loss, preço de stop loss é o preço atual menos 4 vezes ATR

Análise das vantagens

Esta estratégia combina as bandas de Bollinger e as médias móveis, que podem determinar eficazmente a direcção da tendência dos preços e evitar a abertura excessiva de posições durante os períodos de variação.

A faixa média de Bollinger pode refletir claramente a tendência do preço. Quando o preço quebra a faixa média, forma um forte sinal de tendência. As faixas superior e inferior podem julgar efetivamente as condições de sobrecompra e sobrevenda para evitar perseguir novas altas e matar baixas durante os períodos variáveis.

A cruz de ouro e a cruz morta de MAs rápidos e lentos também são métodos comumente usados para determinar tendências.

O sistema ATR de stop loss traseiro ajusta o ponto de stop loss para se adaptar às flutuações do mercado, controlando efetivamente a perda de uma única posição.

Análise de riscos

O maior risco desta estratégia é que o preço pode rapidamente recuar após a quebra da faixa média, incapaz de obter lucros efetivamente. Isso resultaria em perdas. A solução é ajustar adequadamente os parâmetros MA para que os indicadores correspondam melhor às características do mercado.

Outro risco é que, durante os períodos de variação, as Bandas de Bollinger e as Médias Móveis possam dar sinais errados. Neste momento, devemos considerar ignorar os sinais de negociação e esperar por tendências mais claras. Ou reduzir o tamanho da posição adequadamente.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Ajustar os parâmetros das bandas de Bollinger para adaptá-los às características do mercado de diferentes períodos

  2. Ajustar os parâmetros de MA rápidos e lentos para melhor corresponder aos instrumentos de negociação específicos

  3. Adicionar outros indicadores auxiliares para combinação para melhorar a estabilidade da estratégia

  4. Otimizar os métodos de dimensionamento das posições, aumentar as posições durante os períodos de tendência e diminuir as posições durante os períodos de variação

  5. Teste diferentes métodos de stop loss para encontrar melhores soluções

Conclusão

Em geral, esta é uma tendência típica após a estratégia. Combina Bandas de Bollinger e Média Móvel para determinar tendências de preços e oportunidades de negociação. O sinal de estratégia é relativamente claro, adequado para negociação automatizada. Mas também tem alguns riscos, parâmetros e regras que precisam ser otimizados para se adaptar a ambientes de mercado mais extensos.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 1m
basePeriod: 1m
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/
// © Robrecht99

//@version=5
strategy("Trend Following with Bollinger Bands", overlay=true, margin_long=100, margin_short=100, pyramiding=4)

// Bollinger Bands //

length = input.int(20, minval=1, group="Bollinger Bands Inputs")
src = input(close, title="Source", group="Bollinger Bands Inputs")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500, group="Bollinger Bands Inputs")
plot(basis, "Basis", color=color.orange, offset = offset)
p1 = plot(upper, "Upper", color=color.orange, offset = offset)
p2 = plot(lower, "Lower", color=color.orange, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(255, 0, 255, 95))

// Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast MA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow MA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maColorFast = input.color(color.new(color.red, 0), title = "Color Fast MA", group = "Moving Average Inputs", inline = "maFast")
maColorSlow = input.color(color.new(color.purple, 0), title = "Color Slow MA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1) 
slow = ta.ema(src2, len2)
plot(fast, color=maColorFast, title="Fast EMA")
plot(slow, color=maColorSlow, title="Slow EMA")

// ATR Inputs //
strategy.initial_capital = 50000

lengthATR = input.int(title="ATR Period", defval=14, minval=1, group="ATR Input")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Input")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (2 * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > basis and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < basis and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")

Mais.