Estratégia de Canal de Onda e Stop Loss


Data de criação: 2023-11-23 15:49:12 última modificação: 2023-11-23 15:49:12
cópia: 1 Cliques: 772
1
focar em
1617
Seguidores

Estratégia de Canal de Onda e Stop Loss

Visão geral

A Bollinger Bands Strategy é uma estratégia clássica que usa bandas de ondas de Bollinger para acompanhar a tendência e sobrecomprar sinais de sobrevenda. Esta versão, com base na estratégia original, adiciona um mecanismo de stop loss para controlar o risco.

A estratégia julga a sobrevenda e a sobrevenda do mercado por meio de um binário de cima para baixo, e segue a tendência por meio de um binário de baixo. A região entre o binário de cima e o binário de baixo reflete a amplitude de flutuação do mercado atual. O binário de baixo é composto por um binário médio, um binário superior e um binário inferior, com uma média móvel simples de n dias, definida por um binário de cima e um binário inferior, com um diferencial padrão de n dias, multiplicado por k.

Princípios

A faixa de Brin é um indicador técnico que reflete a volatilidade e a amplitude de oscilação do mercado. Quando o preço toca perto da faixa de Brin, o mercado está em um estado de sobrevenda.

A estratégia combina a realização de sinais de supercompra e supervenda com a realização de posições de acompanhamento de tendências e o aumento do mecanismo de parada de perdas para controlar o risco.

Quando o preço atravessa a Bollinger Band para baixo, indica que o mercado entrou na zona razoável a partir da zona de sobrevenda, e uma posição a mais pode ser estabelecida. Quando o preço atravessa a Bollinger Band para baixo, indica que o mercado entrou na zona de sobrecompra, e uma posição a menos pode ser estabelecida.

Depois de criar uma posição, configure um ponto de parada de percentual fixo para controlar o risco. Quando a perda excede a amplitude de parada definida, a parada é retirada da posição atual para evitar perdas excessivas.

Vantagens

  1. A estratégia, combinada com o indicador Brin Belt, julga áreas de sobrevenda e sobrevenda, alcançando um baixo preço de compra e venda por meio de um cruzamento de preços com um trajeto ascendente e descendente

  2. Utilizando as características de volatilidade da faixa de Brin para o acompanhamento de tendências

  3. Aumentar o mecanismo de stop loss para controlar efetivamente a perda máxima de uma única transação

  4. A combinação de acompanhamento de tendências e parada de perdas permite obter ganhos estáveis

Risco e otimização

  1. A configuração dos parâmetros da faixa de brinquedos afeta a qualidade do sinal de negociação. O comprimento do eixo médio n e o múltiplo da diferença padrão k precisam ser ajustados de forma razoável de acordo com diferentes mercados, ou afetam a precisão do sinal de negociação.

  2. A configuração de stop loss muito grande ou muito pequena pode afetar a estabilidade dos ganhos. A configuração de stop loss amplitude aumenta o risco de perda individual, e a configuração de stop loss exagerada aumenta a probabilidade de o stop loss ser acionado. A configuração razoável de stop loss percentual é necessária de acordo com diferentes variedades.

  3. Pode-se considerar a filtragem de sinais em combinação com outros indicadores para melhorar a precisão dos sinais de negociação.

  4. Pode-se testar diferentes configurações de tempo de detenção, como a combinação de níveis de hora ou de menor período de Brin para uma maior frequência de negociação, aumentando a eficiência do uso de fundos.

Resumir

Esta estratégia é uma estratégia de seguimento de tendência comum, combinada com a construção de posições em áreas de sobrevenda e sobrevenda, aumentando o stop loss para controlar o risco. Otimizando a configuração dos parâmetros, combinando com um sinal de negociação mais preciso e a configuração do nível de stop loss, pode obter um lucro estável.

Código-fonte da estratégia
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000)
source = input(close, "Source")
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50, step=0.001)
stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1)

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

var float lastTradePrice = na
var float stopLossLow = na
var float stopLossHigh = na
var bool currentIsLong = na

var bool nextExpectedIsLong = true

var bool existedLong = false
var bool existedShort = false

buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)

if (buyEntry and nextExpectedIsLong == true)
	strategy.entry("BBandLE", strategy.long, comment="BBandLE")
	nextExpectedIsLong := false
	if(nz(strategy.position_size[1], 0) < 0) // new position detected
	    lastTradePrice := close
	    stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
	    stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandLE")

if (sellEntry and nextExpectedIsLong == false)
	strategy.entry("BBandSE", strategy.short, comment="BBandSE")
	nextExpectedIsLong := true
	if(nz(strategy.position_size[1], 0) > 0) // new position detected
        lastTradePrice := close
        stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
        stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandSE")

strategy.close("BBandLE", close < stopLossLow)
strategy.close("BBandSE", close > stopLossHigh)

// if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh)
//     strategy.entry("BBandLE", strategy.long, comment="BBandLE")
// 	lastTradePrice := close
// 	stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
// 	stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
// if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow)
//     strategy.exit("BBandSE", strategy.short, comment="BBandSE")
//     lastTradePrice := close
//     stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
//     stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))

plot(source, "close", color.blue)
plot(lower, "lower", color.red)
plot(upper, "upper", color.red)
plot(stopLossLow, "StopLossLow", color.black)
plot(stopLossHigh, "StopLossHigh", color.black)
plot(lastTradePrice, "lastTradePrice", color.green)
plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green)
plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)