Estratégia Take-Profit do Bollinger Bandit Tier

BOLLINGER SMA stdev TP SL
Data de criação: 2025-08-26 11:39:47 última modificação: 2025-08-26 11:39:47
cópia: 5 Cliques: 309
2
focar em
319
Seguidores

Estratégia Take-Profit do Bollinger Bandit Tier Estratégia Take-Profit do Bollinger Bandit Tier

Como é que isso funciona?

A estratégia do “ladrão de Brin” é como um atirador de tiro no mercado! Oh, não é o tipo de tiro casual, mas sim o tipo de tiro que é direcionado especificamente para os “transgressores” na borda do Brin. Quando o preço sai da “zona de segurança” do Brin como um menino mal-educado, a estratégia é imediatamente executada para agarrar as oportunidades de retorno!

A lógica central é muito simples.

A essência dessa estratégia é o “pensamento invertido”:

  • Preço abaixo do normal = sobrevendido, pronto para fazer mais!
  • Preços quebraram trilhas = super comprados, preparem-se para ficar vazios! Assim como a mola, quanto mais pressionado, mais forte é a reação. A faixa de brinco é a ferramenta de visualização dessa “prima”. A linha média de 20 dias é o eixo médio e a linha ascendente e descendente é o limite.

O fascínio mágico da casca de limão

O que é o design mais brilhante aqui? Stop Stop! não é como a estratégia tradicional de “um corte”, mas é mais como um comerciante inteligente:

  • Quando o TP1 é atingido, primeiro saque 50% do lucro (três pontos)
  • Os restantes 50% continuam a ser detidos, por exemplo, TP2 ((5 pontos)
  • Se a situação não for boa, ainda há 5 pontos de proteção contra danos.

Isso é como vender um item em um supermercado, vender metade do livro e esperar o resto por um preço melhor!

Recomendações de configuração de combate

O guia para o poço chegou!

  • Seleção de cicloA configuração de 20 dias é clássica, mas você pode ajustar de acordo com a variedade de transação.
  • Configuração do múltiploO desvio padrão de 1,0 vezes é adequado para a maioria das situações, variedades com grande flutuação podem ser ajustadas para 1,5-2,0
  • Parar de perderA configuração é muito conservadora, um pouco mais radical.

Lembre-se: esta estratégia é mais adequada para situações de turbulência, cuidado com o buraco de “falso avanço” em uma tendência unilateral!

Por que escolher essa estratégia?

Se você é um comerciante que gosta de “vencer de forma estável”, esta estratégia é para você! Não vai te fazer rico da noite para o dia, mas pode ajudá-lo a ter um lucro estável na volatilidade do mercado.

Código-fonte da estratégia
/*backtest
start: 2024-08-25 00:00:00
end: 2025-01-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Bollinger Bandit + TP Escalonado", overlay=true)

// Configuración básica
length = input.int(20, "Periodo", minval=1)
mult = input.float(1.0, "Multiplicador", minval=0.1, maxval=3.0)
source = input(close, "Fuente")

// Opción para cierre en media
close_on_ma = input.bool(true, "Cierre en Media Móvil")

// SL/TP CONFIGURABLE CON NIVELES FIJOS
use_sltp = input.bool(true, "Usar SL/TP Personalizado", group="Gestión de Riesgo")
sl_points = input.int(5, "Puntos para SL", minval=1, group="Gestión de Riesgo")
tp1_points = input.int(3, "Puntos para TP1", minval=1, group="Gestión de Riesgo")
tp2_points = input.int(5, "Puntos para TP2", minval=1, group="Gestión de Riesgo")

// MOSTRAR TEXTO DE PRECIO
show_price_text = input.bool(true, "Mostrar Precio SL/TP", group="Visualización")

// Cálculo de las Bandas de Bollinger
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

// Detección de cruces
longCondition = ta.crossover(close, lower)
shortCondition = ta.crossunder(close, upper)

// Cálculo de SL/TP con niveles FIJOS EXACTOS - CORREGIDO
var float last_sl_price = na
var float last_tp1_price = na
var float last_tp2_price = na
var int last_entry_bar = 0
var float last_entry_price = na
var bool last_is_long = false

if longCondition or shortCondition
    last_entry_price := close
    last_is_long := longCondition
    if longCondition
        // COMPRA: SL = entrada - 5 puntos, TP1 = entrada + 3 puntos, TP2 = entrada + 5 puntos
        last_sl_price := last_entry_price - sl_points
        last_tp1_price := last_entry_price + tp1_points
        last_tp2_price := last_entry_price + tp2_points
    else
        // VENTA: SL = entrada + 5 puntos, TP1 = entrada - 3 puntos, TP2 = entrada - 5 puntos
        last_sl_price := last_entry_price + sl_points
        last_tp1_price := last_entry_price - tp1_points
        last_tp2_price := last_entry_price - tp2_points
    last_entry_bar := bar_index

// Entradas
if (longCondition)
    strategy.entry("Long", strategy.long)
    
if (shortCondition)
    strategy.entry("Short", strategy.short)

// DETECCIÓN DE CIERRES CON TEXTO PERSONALIZADO
var bool long_closed_by_sl = false
var bool long_closed_by_tp1 = false
var bool long_closed_by_tp2 = false
var bool short_closed_by_sl = false
var bool short_closed_by_tp1 = false
var bool short_closed_by_tp2 = false

// Para posiciones LARGAS
if (use_sltp and strategy.position_size > 0)
    if low <= last_sl_price
        strategy.close("Long", comment="LongSL")
        long_closed_by_sl := true
    else if high >= last_tp1_price and not long_closed_by_tp1
        strategy.close("Long", qty_percent=50, comment="LongTP1")
        long_closed_by_tp1 := true
    else if high >= last_tp2_price and not long_closed_by_tp2
        strategy.close("Long", comment="LongTP2")
        long_closed_by_tp2 := true
else if (strategy.position_size > 0)
    if (ta.crossunder(close, upper))
        strategy.close("Long", comment="STOP")
    if (close_on_ma and ta.crossunder(close, basis))
        strategy.close("Long", comment="STOPMedia")

// Para posiciones CORTAS
if (use_sltp and strategy.position_size < 0)
    if high >= last_sl_price
        strategy.close("Short", comment="ShortSL")
        short_closed_by_sl := true
    else if low <= last_tp1_price and not short_closed_by_tp1
        strategy.close("Short", qty_percent=50, comment="ShortTP1")
        short_closed_by_tp1 := true
    else if low <= last_tp2_price and not short_closed_by_tp2
        strategy.close("Short", comment="ShortTP2")
        short_closed_by_tp2 := true
else if (strategy.position_size < 0)
    if (ta.crossover(close, lower))
        strategy.close("Short", comment="STOP")
    if (close_on_ma and ta.crossover(close, basis))
        strategy.close("Short", comment="STOPMedia")

// Reset flags cuando no hay posición
if strategy.position_size == 0
    long_closed_by_sl := false
    long_closed_by_tp1 := false
    long_closed_by_tp2 := false
    short_closed_by_sl := false
    short_closed_by_tp1 := false
    short_closed_by_tp2 := false

// Visualización (manteniendo tus colores y estilo)
plot(basis, "Media", color=color.blue, linewidth=1)
plot(upper, "Banda Superior", color=color.orange, linewidth=2)
plot(lower, "Banda Inferior", color=color.green, linewidth=2)

// Señales de entrada
plotshape(longCondition, "↑ Compra", shape.triangleup, location.belowbar, color=color.green, size=size.tiny)
plotshape(shortCondition, "↓ Venta", shape.triangledown, location.abovebar, color=color.red, size=size.tiny)

// Relleno entre bandas (manteniendo tu estilo)
bgcolor = color.new(color.yellow,80)
fill(plot(upper), plot(lower), bgcolor)