Estratégia de negociação de swing de bandas de Bollinger


Data de criação: 2024-02-21 14:39:14 última modificação: 2024-02-21 14:39:14
cópia: 0 Cliques: 578
1
focar em
1617
Seguidores

Estratégia de negociação de swing de bandas de Bollinger

Visão geral

A estratégia de negociação de ruptura de Bollinger Bands é uma estratégia de negociação quando o mercado está em um estado de agitação. A estratégia usa o indicador de Bollinger Bands para avaliar o estado de agitação do mercado e emite um sinal de negociação quando o preço toca a Bollinger Bands para baixo. Ao contrário da estratégia tradicional de acompanhamento de tendências, a estratégia é mais adequada para um ambiente de mercado de ordenação horizontal.

Princípio da estratégia

A estratégia é baseada principalmente no indicador da faixa de Brin. A faixa de Brin é composta por meio, cima e baixo. Quando o preço está perto de cima ou baixo, representando um mercado excessivamente otimista ou pessimista, há uma maior probabilidade de reversão.

Concretamente, a estratégia usa primeiro o indicador DMI para determinar se o mercado está em um estado de agitação. Quando a diferença entre + DMI e -DMI é menor que 20, o mercado é considerado em um movimento horizontal. Nessa condição, quando o preço sobe, faz mais quando atravessa a trajetória abaixo, e quando o preço desce, faz mais. O ponto de parada é definido perto da trajetória oposta.

Vantagens estratégicas

Em comparação com a estratégia de acompanhar a tendência, a estratégia é mais adequada para o mercado onde oscilações horizontais, não perderá juros por perseguir a tendência. Em comparação com a estratégia de negociação de choques tradicionais, a estratégia usa o indicador de bandas de Brin para determinar com mais precisão o excesso de compra e venda do mercado, aumentando a probabilidade de entrada.

Risco estratégico

A estratégia baseia-se principalmente em Brines para avaliar oscilações de mercado e sobrecompra e sobrevenda. Quando os Brines se dispersam ou contraem de forma anormal, isso pode levar a sinais errados. Além disso, o ponto de parada é próximo e o ponto de parada individual pode ser maior.

Direção de otimização da estratégia

Pode-se considerar a combinação de outros indicadores para filtrar os sinais de entrada, como os indicadores de choque, como o RSI, para aumentar a precisão de entrada. Além disso, é importante otimizar a estratégia de stop loss para evitar grandes travas únicas. Também é possível escolher a variedade de negociação mais adequada para a estratégia, como moedas de baixo valor de mercado.

Resumir

A estratégia, em geral, é adequada para mercados turbulentos e pode ser usada quando a estratégia de tendência falha. Mas a sua dependência de indicadores para determinar o estado do mercado ainda tem espaço para otimização. Podemos aperfeiçoar ainda mais a estratégia por meio de combinações de vários indicadores, gerenciamento de fundos e outros métodos, para que seu efeito seja mais estável e excelente.

Código-fonte da estratégia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works on ETHUSD 3h, 1h, 2h, 4h

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true

[pos_dm, neg_dm, adx] = dmi(14, 14)


lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

sideways = (abs(pos_dm - neg_dm) < 20)



//Stop_loss= ((input (3))/100)
//Take_profit= ((input (2))/100)

//longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
//longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

//closeLong = close < longStopPrice or close > longTakeProfit or StopRSI


//Entry 
strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window())


//Exit
strategy.close("long", when = (crossunder(close, upper)))