Estratégia de negociação de alta frequência combinando Bandas de Bollinger e DCA


Data de criação: 2024-03-29 16:20:13 última modificação: 2024-03-29 16:20:13
cópia: 5 Cliques: 828
1
focar em
1617
Seguidores

Estratégia de negociação de alta frequência combinando Bandas de Bollinger e DCA

Visão geral

A estratégia, denominada “DCA Booster (1 minute) “, é uma estratégia de negociação de alta frequência que funciona em um período de 1 minuto. A estratégia combina as técnicas de Bollinger Bands e DCA (Dollar-Cost Averaging, a média do custo do dólar) com o objetivo de aproveitar as flutuações do mercado para comprar e vender várias vezes, tentando obter lucro.

Princípio da estratégia

  1. Cálculo da faixa de Bryn: a subida e a descida da faixa de Bryn são calculadas usando médias móveis simples e diferença padrão.
  2. Configure o parâmetro DCA: Divida o montante fixo em várias partes, como o montante de capital por cada depósito.
  3. Condições de construção de posição: começa a construção de posição quando o preço de fechamento estiver abaixo da trajetória de baixa de Binance por dois períodos consecutivos. Dependendo se o preço continua abaixo da trajetória de baixa, a estratégia pode criar até 5 posições.
  4. Condições de liquidação: liquidação de todas as posições quando o preço subir através do binário.
  5. A pirâmide de posicionamento: se o preço continuar a cair, a estratégia continuará a aumentar a posição, até um máximo de 5 posições.
  6. Gerenciamento de posições: a estratégia registra a criação de posições para cada posição e elimina as posições correspondentes quando as condições de liquidação são satisfeitas.

Vantagens estratégicas

  1. A combinação das duas tecnologias, Brinbelt e DCA, permite capturar eficazmente as flutuações do mercado e reduzir os custos de compra.
  2. A pirâmide é permitida para fazer uma posição, que pode ser mantida enquanto os preços continuam a cair, aumentando as oportunidades de lucro.
  3. Os termos da posição são simples e claros, permitindo um rápido bloqueio de lucros.
  4. Adequado para uso em um curto período de tempo, como 1 minuto, pode ser usado para negociações de alta frequência.

Risco estratégico

  1. Se a volatilidade do mercado for forte, o preço pode romper rapidamente o Brin e entrar em rota, o que pode levar a uma estratégia que não atinja o equilíbrio, causando perdas.
  2. A pirâmide pode levar a uma exposição excessiva e aumentar o risco se os preços continuarem a cair.
  3. A estratégia pode não funcionar bem em mercados turbulentos, pois a compra e venda frequentes pode gerar custos de transação mais elevados.

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

  1. Pode-se considerar a inclusão de stop loss em condições de equilíbrio para controlar o máximo de perdas de uma única transação.
  2. A lógica da pirâmide pode ser otimizada, por exemplo, ajustando a quantidade de acréscimo de acordo com a magnitude da queda do preço, evitando a exposição excessiva.
  3. Pode ser combinado com outros indicadores, como RSI, MACD, etc., para melhorar a precisão de entrada e saída.
  4. Os parâmetros podem ser otimizados, como o ciclo de Brin e o múltiplo da diferença padrão, para adaptar-se a diferentes condições de mercado.

Resumir

O “DCA Booster (1 minute) ” é uma estratégia de negociação de alta frequência que combina a banda de Brin e a DCA para capturar a volatilidade do mercado e tentar lucrar, criando posições em lotes quando o preço está abaixo da banda de Brin e fechando as posições quando o preço está acima da banda de Brin. A estratégia permite o aumento da pirâmide, mas também corre o risco de forte volatilidade do mercado e excesso de exposição.

Código-fonte da estratégia
/*backtest
start: 2024-02-27 00:00:00
end: 2024-03-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DCA Booster (1 minute)",
  overlay=true )

// Parameters for Bollinger Bands
length = input.int(50, title="BB Length")
mult = input.float(3.0, title="BB Mult")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// Variables for DCA
cantidad_dolares = 50000
orden1 = cantidad_dolares / close
orden2 = orden1 * 1.2
orden3 = orden2 * 1.3
orden4 = orden3 * 1.5
orden5 = orden4 * 1.5

// Variables for tracking purchases
var comprado1 = false
var comprado2 = false
var comprado3 = false
var comprado4 = false
var comprado5 = false

// Buy conditions
condicion_compra1 = close < lower and close[1] < lower[1] and not comprado1
condicion_compra2 = close < lower and close[1] < lower[1] and comprado1 and not comprado2
condicion_compra3 = close < lower and close[1] < lower[1] and comprado2 and not comprado3
condicion_compra4 = close < lower and close[1] < lower[1] and comprado3 and not comprado4
condicion_compra5 = close < lower and close[1] < lower[1] and comprado4 and not comprado5
// Variables de control
var int consecutive_closes_below_lower = 0
var int consecutive_closes_above_upper = 0

// Entry logic
if condicion_compra1 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra1", strategy.long, qty=orden1)
        comprado1 := true
        consecutive_closes_below_lower := 0

if condicion_compra2 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra2", strategy.long, qty=orden2)
        comprado2 := true
        consecutive_closes_below_lower := 0

if condicion_compra3 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra3", strategy.long, qty=orden3)
        comprado3 := true
        consecutive_closes_below_lower := 0

if condicion_compra4 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra4", strategy.long, qty=orden4)
        comprado4 := true
        consecutive_closes_below_lower := 0

if condicion_compra5 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra5", strategy.long, qty=orden5)
        comprado5 := true
        consecutive_closes_below_lower := 0


// Sell conditions
if close > upper  and comprado1 and barstate.isconfirmed
    strategy.close("Compra1")
    comprado1 := false

if close > upper  and comprado2 and barstate.isconfirmed
    strategy.close("Compra2")
    comprado2 := false

if close > upper  and comprado3 and barstate.isconfirmed
    strategy.close("Compra3")
    comprado3 := false

if close > upper and comprado4 and barstate.isconfirmed
    strategy.close("Compra4")
    comprado4 := false

if close > upper and comprado5 and barstate.isconfirmed
    strategy.close("Compra5")
    comprado5 := false