Estratégia de tendência de oscilação do canal de banda de Bollinger de reversão


Data de criação: 2023-10-31 14:30:45 última modificação: 2023-10-31 14:30:45
cópia: 0 Cliques: 664
1
focar em
1617
Seguidores

Estratégia de tendência de oscilação do canal de banda de Bollinger de reversão

Visão geral

Trata-se de uma estratégia de tendência de reversão de choque baseada no canal da faixa de Brin. Utiliza o canal de Brin para cima e para baixo como um juízo de tendência e procura oportunidades de reversão de entrada quando o preço se aproxima da fronteira do canal.

Princípio da estratégia

A estratégia usa o indicador da faixa de Brin como principal indicador técnico. A faixa de Brin é composta por uma média móvel de n dias e sua amplitude de oscilação para cima e para baixo, a faixa de Brin para cima = média móvel de n dias + m × n dias de diferença padrão, a faixa de Brin para baixo = média móvel de n dias - m × n dias de diferença padrão.

Quando o preço está perto de subir, indica que está em uma tendência ascendente, mas pode atingir o topo da reversão; quando o preço está perto de descer, indica que está em uma tendência descendente, mas pode atingir o fundo da reversão. Neste momento, se efetivamente romper a faixa de Brin para descer, pode começar a reversão.

As regras de negociação específicas para esta estratégia são as seguintes:

  1. Quando o preço de fechamento é maior do que o Brin com a trajetória, faça mais entrada; Quando o preço de fechamento é menor do que o Brin com a trajetória, faça uma entrada em branco.

  2. O stop loss é sinalizado com a média móvel de n dias. O stop loss é executado quando o preço de fechamento de uma opção múltipla quebra a média de n dias abaixo da linha; o stop loss é executado quando a linha de fechamento de uma opção vazia quebra a média de n dias acima da linha.

  3. O volume de transações é fixo, o valor de cada transação é fixo.

  4. O método de gestão de capital de taxa fixa, que define a taxa de ganho e perda fixa e a amplitude de ajuste de pedidos. Aumentar a posição em termos de amplitude fixa quando se obtém um lucro de taxa fixa e reduzir a posição quando se perde.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Usar o canal de Brin para determinar a direção da tendência, adotar uma estratégia de negociação de contracorrente, entrar em ações em momentos em que o preço pode reverter, evitar a maior parte dos choques e aumentar a taxa de vitória.

  2. As médias móveis são mais confiáveis como sinais de stop loss e bloqueiam a maior parte dos lucros.

  3. A estratégia de volume fixo é simples e fácil de executar, sem a necessidade de cálculos complexos.

  4. A estratégia de gestão de capital de taxa fixa permite expandir o lucro e controlar o risco por meio de ajustes de posição.

Análise de Riscos

A estratégia também tem riscos:

  1. A probabilidade de um erro de correlação de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de correlações de

  2. O atraso das médias móveis pode levar a que a paralisação não seja suficiente.

  3. O volume fixo de negociação não permite que as posições sejam ajustadas de acordo com as condições do mercado, existindo um problema de posições grandes ou pequenas.

  4. O método de gerenciamento de capital de taxa fixa expande as posições em grande escala, o que pode levar a uma expansão dos prejuízos.

Contra-medidas: otimização dos parâmetros da faixa de Bryn para melhorar a precisão do sinal; combinação com outros indicadores para avaliar a tendência; redução apropriada do tamanho das posições fixas; redução da amplitude de ajuste de posições para a gestão de fundos de taxa fixa.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Otimizar os parâmetros da faixa de Bryn, como ajustar os valores n e m, para melhorar a precisão de julgamento da passagem da faixa de Bryn.

  2. Adicione outros indicadores de julgamento, como MACD, KD, etc., para evitar sinais errados de Brin.

  3. Ajustar o volume de negociação fixo para o volume de negociação dinâmico e ajustar as posições com flexibilidade de acordo com as condições do mercado.

  4. Reduzir a amplitude de ajuste de posição da gestão de fundos de taxa fixa e otimizar a curva de fundos.

  5. A adição de estratégias de stop loss, como stop loss móvel, stop loss de ruptura de intervalos, etc., para controlar ainda mais o risco.

  6. Optimização de parâmetros, otimização automática de combinações de parâmetros, busca de parâmetros ideais para otimizar a estratégia.

Resumir

A estratégia em geral é uma estratégia de reversão mais típica de Bollinger Bands. Ela usa o Bollinger Bands para determinar o ponto de reversão da tendência, com a configuração de stop-loss, volume de negociação fixo e risco de controle de gerenciamento de fundos de taxa fixa. Em comparação com a estratégia tradicional de Bollinger Bands, a estratégia como uma reversão, em teoria, pode evitar oscilações parciais e aumentar a probabilidade de lucro.

Código-fonte da estratégia
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
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/
// © gsanson66


//This strategy uses the well-known Bollinger Bands Indicator
//@version=5
strategy("BOLLINGER BANDS BACKTESTING", shorttitle="BB BACKTESTING", overlay=true, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=950, commission_type=strategy.commission.percent, commission_value=0.18)


//----------------------------------------FUNCTIONS---------------------------------------//

//@function Displays text passed to `txt` when called.
debugLabel(txt, color) =>
    label.new(bar_index, high, text = txt, color=color, style = label.style_label_lower_right, textcolor = color.black, size = size.small)

//@function which looks if the close date of the current bar falls inside the date range
inBacktestPeriod(start, end) => (time >= start) and (time <= end)


//---------------------------------------USER INPUTS--------------------------------------//

//Technical parameters
bbLength = input.int(defval=20, minval=1, title="BB Length", group="Technical Parameters")
mult = input.float(defval=2, minval=0.1, title="Standard Deviation Multipler", group="Technical Parameters")
smaLength = input.int(defval=20, minval=1, title="SMA Exit Signal Length", group="Technical Parameters")
//Money Management
fixedRatio = input.int(defval=400, minval=1, title="Fixed Ratio Value ($)", group="Money Management")
increasingOrderAmount = input.int(defval=200, minval=1, title="Increasing Order Amount ($)", group="Money Management")
//Backtesting period
startDate = input(title="Start Date", defval=timestamp("1 Jan 2020 00:00:00"), group="Backtesting Period")
endDate = input(title="End Date", defval=timestamp("1 July 2024 00:00:00"), group="Backtesting Period")


//----------------------------------VARIABLES INITIALISATION-----------------------------//
strategy.initial_capital = 50000
//Exit SMA
smaExit = ta.sma(close, smaLength)
//BB Calculation
basis = ta.sma(close, bbLength)
dev = mult * ta.stdev(close, bbLength)
upperBB = basis + dev
lowerBB = basis - dev
//Money management
equity = strategy.equity - strategy.openprofit
var float capital_ref = strategy.initial_capital
var float cashOrder = strategy.initial_capital * 0.95
//Backtesting period
bool inRange = na


//------------------------------CHECKING SOME CONDITIONS ON EACH SCRIPT EXECUTION-------------------------------//

//Checking if the date belong to the range
inRange := true

//Checking performances of the strategy
if equity > capital_ref + fixedRatio
    spread = (equity - capital_ref)/fixedRatio
    nb_level = int(spread)
    increasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder + increasingOrder
    capital_ref := capital_ref + nb_level*fixedRatio
if equity < capital_ref - fixedRatio
    spread = (capital_ref - equity)/fixedRatio
    nb_level = int(spread)
    decreasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder - decreasingOrder
    capital_ref := capital_ref - nb_level*fixedRatio

//Checking if we close all trades in case where we exit the backtesting period
if strategy.position_size!=0 and not inRange
    strategy.close_all()
    debugLabel("END OF BACKTESTING PERIOD : we close the trade", color=color.rgb(116, 116, 116))


//-----------------------------------EXIT SIGNAL------------------------------//

if strategy.position_size > 0 and close < smaExit
    strategy.close("Long")
if strategy.position_size < 0 and close > smaExit
    strategy.close("Short")


//----------------------------------LONG/SHORT CONDITION---------------------------//

//Long Condition
if close > upperBB and inRange
    qty = cashOrder/close
    strategy.entry("Long", strategy.long, qty)
//Short Condition
if close < lowerBB and inRange
    qty = cashOrder/close
    strategy.entry("Short", strategy.short, qty)


//---------------------------------PLOTTING ELEMENT----------------------------------//

plot(smaExit, color=color.orange)
upperBBPlot = plot(upperBB, color=color.blue)
lowerBBPlot = plot(lowerBB, color=color.blue)
fill(upperBBPlot, lowerBBPlot, title = "Background", color=strategy.position_size>0 ? color.rgb(0, 255, 0, 90) : strategy.position_size<0 ? color.rgb(255, 0, 0, 90) : color.rgb(33, 150, 243, 95))