Stratégie de prise de profit à plusieurs niveaux de Bollinger Bandit

BOLLINGER SMA stdev TP SL
Date de création: 2025-08-26 11:39:47 Dernière modification: 2025-08-26 11:39:47
Copier: 5 Nombre de clics: 309
2
Suivre
319
Abonnés

Stratégie de prise de profit à plusieurs niveaux de Bollinger Bandit Stratégie de prise de profit à plusieurs niveaux de Bollinger Bandit

Je ne sais pas si cette tactique est efficace.

Cette stratégie de “vol de Brin” est comme un tireur d’élite sur un marché ! Oh, ce n’est pas une stratégie de tir au hasard, c’est une stratégie qui vise spécifiquement les “transgressors” qui sont à la limite de la ceinture de Brin.

La logique de base est simple.

L’essentiel de cette stratégie est la pensée à l’envers:

  • Le prix est tombé en dessous de la barre = survendu, prêt à en faire plus !
  • Le prix de l’or a atteint son sommet = trop acheté, prêt à faire le vide ! Comme dans le cas des ressorts, plus la pression est forte, plus la résistance est forte. La bande de broyage est l’outil de visualisation de ce “ressort”. La moyenne des 20 jours est l’axe central, et les rails supérieurs et inférieurs sont les limites.

Le charme magique de l’anesthésie

La stratégie de l’équipe de développement de l’entreprise, qui a été conçue par l’auteur de l’article, est la suivante:

  • Le TP1 est atteint, le premier sachet 50% de bénéfice ((3 points))
  • Les 50% restants sont conservés, c’est-à-dire TP2 ((5 points)
  • Si les conditions ne sont pas favorables, 5 points de protection contre les dommages

C’est un peu comme si on vendait du liquide, on vendait la moitié d’un livre et on attendait le reste pour un meilleur prix !

Recommandations de déploiement en temps de guerre

Le guide de la fosse est là !

  • Sélection de cycleLa configuration de 20 jours est classique, mais vous pouvez l’ajuster en fonction de la variété de transaction.
  • Paramètres du multiplicateurUn écart standard de 1,0 fois convient à la plupart des situations, les variétés à forte fluctuation peuvent être ajustées à 1,5 à 2,0
  • Arrêt de l’arrêt3/5/5 est une configuration très conservatrice, un peu plus radicale peut être essayée 5/8/10

Rappelez-vous: cette stratégie est la plus adaptée aux situations de choc, et méfiez-vous des “fausses percées” dans les tendances unilatérales !

Pourquoi avoir choisi cette stratégie ?

Si vous êtes un trader qui aime gagner de manière stable, cette stratégie est faite pour vous. Elle ne vous rendra pas riche du jour au lendemain, mais elle vous aidera à gagner de façon stable dans les fluctuations du marché.

Code source de la stratégie
/*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)