Estratégia de negociação de grade de Bollinger adaptável

BB SMA GRID stdev
Data de criação: 2025-02-21 11:52:10 última modificação: 2025-02-27 17:04:20
cópia: 3 Cliques: 691
2
focar em
319
Seguidores

Estratégia de negociação de grade de Bollinger adaptável Estratégia de negociação de grade de Bollinger adaptável

Visão geral

Trata-se de uma estratégia de negociação de grelha avançada baseada nos indicadores da faixa de Brin. Esta estratégia determina a posição da grelha através da dinâmica de ascensão e descensão da faixa de Brin e ajusta automaticamente o intervalo da grelha de acordo com a volatilidade do mercado.

Princípio da estratégia

A estratégia usa uma média móvel de 20 ciclos como o meio da faixa de brinquedos, e o dobro da diferença padrão como a largura de banda. Com base na faixa de brinquedos, a estratégia configura 4 níveis de grade entre os trilhos de cima e de baixo, com um intervalo de grade de 1%. Quando o preço sobe para cima, o sistema executa várias operações; Quando o preço desce para baixo, o sistema executa uma operação de vazio.

Vantagens estratégicas

  1. Ajuste dinâmico - a posição da grade se move com a faixa de Bryn, permitindo que a estratégia se adapte a diferentes cenários de mercado
  2. Risco controlado - Limitação do intervalo de negociação por meio da faixa de Brin para evitar excesso de posições em situações extremas
  3. Alta automatização - o sistema executa transações automaticamente, sem a intervenção humana
  4. Negociação bidirecional - pode ser lucrativa em alturas de alta e baixa
  5. Parâmetros ajustáveis - o intervalo de grade e o número de níveis podem ser ajustados com flexibilidade conforme necessário

Risco estratégico

  1. Risco de mercado de tendência - pode haver uma retracção maior em um cenário de tendência unilateral
  2. Risco de gestão de fundos - a ação simultânea de várias grades pode levar a excesso de posições
  3. Risco de deslizamento - os preços de transação podem desviar-se do preço da grelha em situações de forte volatilidade do mercado
  4. Risco tecnológico - Falso sinal de ruptura na faixa de Brin

Solução:

  • Configurar um limite de posição total
  • Introdução de filtros de tendências
  • Mecanismos de execução de encomendas
  • Adicionar filtro de sinal de confirmação

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

  1. Espaçamento de grelha adaptável - ajuste dinâmico do espaçamento de grelha de acordo com a taxa de flutuação
  2. Introdução de relações de quantidade e preço - a combinação de indicadores de quantidade para otimizar o momento de entrada
  3. Otimização do mecanismo de suspensão - conceber um plano de suspensão mais flexível
  4. Otimização da gestão de fundos - Gestão de posições baseada no risco
  5. Sincronização de múltiplos períodos de tempo - introdução de mecanismos de confirmação de sinais de múltiplos períodos

Resumir

A estratégia, através da combinação de transações em Brin-Band e Grid, permite um sistema de negociação automatizado com flexibilidade e estabilidade. A principal vantagem da estratégia é a capacidade de se adaptar a diferentes ambientes de mercado e, ao mesmo tempo, controlar o risco por meio de ajustes de parâmetros. Embora existam alguns riscos inerentes, é possível construir um sistema de negociação mais robusto com otimização e aperfeiçoamento contínuos.

Código-fonte da estratégia
/*backtest
start: 2024-12-19 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Grid Bot based on Bollinger Bands with Adjustable Levels", overlay=true)

// Settings
source = close
length = input.int(20, minval=1, title="Bollinger Bands Length")
mult = input.float(2.0, minval=0.001, maxval=50, title="Bollinger Bands Multiplier")
gridDistancePercent = input.float(1.0, title="Distance Between Levels (%)") / 100 // Distance between grid levels in percentage
gridSize = input.int(4, title="Number of Grid Levels") // Number of grid levels

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

// Middle line between the upper and lower Bollinger Bands
middle = (upper + lower) / 2

// Levels for long and short positions
var float[] longLevels = array.new_float(gridSize)
var float[] shortLevels = array.new_float(gridSize)

// Filling levels for long and short positions
for i = 0 to gridSize - 1
    array.set(longLevels, i, lower * (1 + gridDistancePercent * (i + 1))) // For longs, increase the lower band
    array.set(shortLevels, i, upper * (1 - gridDistancePercent * (i + 1))) // For shorts, decrease the upper band

// Logic for entering a long position (buy) at the first level crossover
longCondition = ta.crossover(source, array.get(longLevels, 0)) // Condition for buying — crossover with the first long level
if longCondition
    strategy.entry("GridLong", strategy.long, comment="GridLong")

// Logic for entering a short position (sell) at the first level crossunder
shortCondition = ta.crossunder(source, array.get(shortLevels, 0)) // Condition for selling — crossunder with the first short level
if shortCondition
    strategy.entry("GridShort", strategy.short, comment="GridShort")

// Logic for additional buys/sells when reaching subsequent levels
// For longs:
for i = 1 to gridSize - 1
    if ta.crossover(source, array.get(longLevels, i))
        strategy.entry("GridLong" + str.tostring(i), strategy.long, comment="GridLong")

// For shorts:
for i = 1 to gridSize - 1
    if ta.crossunder(source, array.get(shortLevels, i))
        strategy.entry("GridShort" + str.tostring(i), strategy.short, comment="GridShort")

// Visualization of the levels
plot(upper, color=color.red, linewidth=2, title="Upper Bollinger Band")
plot(lower, color=color.green, linewidth=2, title="Lower Bollinger Band")
plot(middle, color=color.blue, linewidth=2, title="Middle Line")

// Display additional grid levels (fixed titles)
plot(array.get(longLevels, 0), color=color.green, linewidth=1, title="Long Level 1") // For the 1st long level
plot(array.get(longLevels, 1), color=color.green, linewidth=1, title="Long Level 2") // For the 2nd long level
plot(array.get(longLevels, 2), color=color.green, linewidth=1, title="Long Level 3") // For the 3rd long level
plot(array.get(longLevels, 3), color=color.green, linewidth=1, title="Long Level 4") // For the 4th long level

plot(array.get(shortLevels, 0), color=color.red, linewidth=1, title="Short Level 1") // For the 1st short level
plot(array.get(shortLevels, 1), color=color.red, linewidth=1, title="Short Level 2") // For the 2nd short level
plot(array.get(shortLevels, 2), color=color.red, linewidth=1, title="Short Level 3") // For the 3rd short level
plot(array.get(shortLevels, 3), color=color.red, linewidth=1, title="Short Level 4") // For the 4th short level