ボリンジャーバンディットティアテイクプロフィット戦略

BOLLINGER SMA stdev TP SL
作成日: 2025-08-26 11:39:47 最終変更日: 2025-08-26 11:39:47
コピー: 5 クリック数: 309
2
フォロー
319
フォロワー

ボリンジャーバンディットティアテイクプロフィット戦略 ボリンジャーバンディットティアテイクプロフィット戦略

この戦略の強さは?

この”ブリン強盗”戦略は,市場での狙撃手のようなものです! それは,随時発砲するタイプではなく,ブリン帯の縁の”越境者”を狙うものです. 価格が,いじめられた子供のようにブリン帯の”安全地帯”から逃げ出したとき,この戦略は,すぐに反撃のチャンスを掴むのです!

の核となる論理は 極めてシンプルです

この戦略の核心は”逆思考”です.

  • 価格が下落する=超売れ 余分に売る!
  • 価格が上昇する=超買い,空白準備! 弾丸のように,弾丸が強くなるほど,弾丸は強く反発する.ブリン帯は,この”弾丸”の可視化ツールである.20日平均線は中軸であり,上下線は極限である.位置

の魔法の魅力

伝統的な”一刀切”の戦略とは異なり,この戦略は賢明な商人のようなものです:

  • TP1に達すると,50%の利益が3ポイント)
  • 残りの50%は,TP2等を保有する.
  • この5つのポイントは, 状況が悪ければ, 損害防止の5つのポイントです

半額で売って,残りはもっと良い価格で売るようなものです!

戦闘配置の勧告

洞窟の案内が来た

  • サイクル選択20日はクラシックな設定ですが,取引の種類によって調整できます.
  • 倍数設定標準差の1.0倍はほとんどの状況に適しており,波動が大きい品種は1.5-2.0に調整できます.
  • ストップ・ストップ5/8/10: 5/5/5の配置は保守的で,少し過激な5/8/10を試してみることができます.

この戦略は,一面的なトレンドで”偽突破”の穴に引っ込まれるのを注意してください!

:なぜこの戦略を選んだの?

“安定して勝ちたい”というトレーダーなら,この戦略はあなたにとってぴったりです! 一晩で金持ちになることはなく,市場の変動の中で安定した利益を得ることができます.

ストラテジーソースコード
/*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)