ダイナミックボリンジャーバンドとPSARインジケーターを組み合わせた高度な定量取引戦略

BB PSAR SMA TP SL
作成日: 2025-02-18 14:11:00 最終変更日: 2025-02-18 14:11:00
コピー: 0 クリック数: 355
1
フォロー
1617
フォロワー

ダイナミックボリンジャーバンドとPSARインジケーターを組み合わせた高度な定量取引戦略

概要

これは,ブリン帯とパラパラ線転換指数 ((PSAR) を組み合わせた総合的な取引戦略で,固定されたリスク/利益比率を使用して取引管理を行う.この戦略は,主に日内取引の時間帯で動作し,価格がブリン帯と図形状を突破することによって取引機会を識別し,PSAR指数を使用してトレンドを確認する.この戦略は,ダイナミックな止損と利益目標設定を採用し,リスク/利益比率を1:3に保ちます.

戦略原則

複数の技術指標を用いた取引シグナル確認の戦略:

  1. 20周期のブリン帯を主要価格変動範囲の指標として使用
  2. PSAR指標 ((初期値0.02,最大値0.2) を用いてトレンド確認ツールとして
  3. 線実体比 ((実体長/総長≥0.33) を計算し,信号の信頼性を確保する
  4. 指定された取引時間ウィンドウ (GMT-5 7:30-16:00) で取引を実行する
  5. 多頭入場条件:閉盘価格が上線を突破し,実体比率が要求を満たす
  6. 空頭入場条件:閉盘価格が下落を突破し,実体比率が要求を満たす

戦略的優位性

  1. 複数の技術指標を組み合わせ,信号の信頼性を向上させる
  2. 固定リスク/利益の比率 ((1:3) を採用し,長期にわたる安定した利益に有利である
  3. 低流動性期間の干渉を回避するために,時間的にフィルターします.
  4. 偽突破を減らすためにの実比フィルタを使用
  5. 市場変動に対応するために,ダイナミックな止損と利益の目標を設定する.
  6. 戦略の論理は明確で,理解し,最適化することが容易です.

戦略リスク

  1. 波動の激しい市場では滑り込みが起こりうる
  2. 固定リスクと利益の比率は, 利益の機会の一部を逃す可能性があります.
  3. タイムフィルタリングにより,重要な市場機会が失われる可能性があります.
  4. 複数のインジケーターにより信号遅延が発生する場合があります
  5. 市場が揺れ動いている中で,継続的な損失が生じる可能性がある.

戦略最適化の方向性

  1. 異なる市場環境に対応する自己適応型のブリン帯周期の導入
  2. ダイナミックな開発のリスク/利益比設定機構
  3. 補助確認としてボリュームインジケーターを追加
  4. PSARパラメータを最適化し,トレンド追跡効果を向上させる
  5. 市場変動率のフィルターに追加
  6. 時間をフィルターするよりスマートなメカニズムを開発する

要約する

この戦略は,ブリン帯,PSAR指標,図分析を総合的に適用することで,完全な取引システムを構築している.戦略の核心的な優位性は,複数の技術指標の協同作用と厳格なリスク管理にある.いくつかの固有のリスクがあるものの,推奨された最適化の方向によって,戦略の安定性と収益性をさらに向上させることができる.戦略は,リスクを制御しながら安定した収益を得ることができる日内トレーダーのユーザーに特に適しています.

ストラテジーソースコード
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Estrategia Bollinger con PSAR y TP Máximo/ Mínimo", overlay=true)

// Parámetros de las Bandas de Bollinger
bb_length = input.int(20, title="Periodo de Bandas de Bollinger", minval=1)
bb_stddev = input.float(2.0, title="Desviación Estándar", step=0.1)

// Parámetros del Parabolic SAR
psar_start = input.float(0.02, title="PSAR Factor Inicial", step=0.01)
psar_increment = input.float(0.02, title="PSAR Incremento", step=0.01)
psar_max = input.float(0.2, title="PSAR Máximo", step=0.01)

// Cálculo de Bandas de Bollinger
basis = ta.sma(close, bb_length)
upper_band = basis + bb_stddev * ta.stdev(close, bb_length)
lower_band = basis - bb_stddev * ta.stdev(close, bb_length)

// Cálculo del Parabolic SAR
psar = ta.sar(psar_start, psar_increment, psar_max)

// Cálculo del cuerpo de la vela
body_high = math.max(open, close)
body_low = math.min(open, close)
body_length = body_high - body_low
total_length = high - low
body_ratio = body_length / total_length

// Condiciones de Entrada
long_condition = close > upper_band and body_ratio >= 0.33
short_condition = close < lower_band and body_ratio >= 0.33

// Filtro de tiempo: Operar solo de 7:30 AM a 4:00 PM hora colombiana
start_time = timestamp("GMT-5", year, month, dayofmonth, 7, 30)
end_time = timestamp("GMT-5", year, month, dayofmonth, 16, 0)
time_condition = (time >= start_time) and (time <= end_time)

// Variables para mantener el TP máximo y mínimo
var float max_tp = na
var float min_tp = na
var float dynamic_stop = na

// Condiciones de Entrada y Salida
if (long_condition and time_condition)
    entry_price = close  // Precio de entrada
    stop_loss = low  // SL en el mínimo de la vela
    take_profit = entry_price + 3 * (entry_price - stop_loss)  // TP con relación 1:3
    strategy.entry("Compra", strategy.long)
    strategy.exit("Exit Compra", "Compra", stop=stop_loss, limit=take_profit)

    // Dibujar las etiquetas para SL y TP para la operación larga
    label.new(bar_index, stop_loss, text="SL: " + str.tostring(stop_loss), style=label.style_label_up, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index, take_profit, text="TP: " + str.tostring(take_profit), style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)

if (short_condition and time_condition)
    entry_price = close  // Precio de entrada
    stop_loss = high  // SL en el máximo de la vela
    take_profit = entry_price - 3 * (stop_loss - entry_price)  // TP con relación 1:3
    strategy.entry("Venta", strategy.short)
    strategy.exit("Exit Venta", "Venta", stop=stop_loss, limit=take_profit)

    // Dibujar las etiquetas para SL y TP para la operación corta
    label.new(bar_index, stop_loss, text="SL: " + str.tostring(stop_loss), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
    label.new(bar_index, take_profit, text="TP: " + str.tostring(take_profit), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

// Dibujar Bandas de Bollinger
plot(upper_band, color=color.red, title="Banda Superior")
plot(lower_band, color=color.green, title="Banda Inferior")
plot(basis, color=color.blue, title="Media Base")

// Dibujar Parabolic SAR
plot(psar, style=plot.style_circles, color=color.orange, title="Parabolic SAR")