ボラティリティ圧縮モメンタムブレイクアウト追跡戦略:TTMスクイーズ指標の定量的実装

动量指标 波动率 布林带 肯特纳通道 线性回归 移动平均线 量化交易 追踪止损 MA BB KC TTM SMA ATR
作成日: 2025-06-19 13:42:37 最終変更日: 2025-06-19 13:42:37
コピー: 5 クリック数: 368
2
フォロー
319
フォロワー

ボラティリティ圧縮モメンタムブレイクアウト追跡戦略:TTMスクイーズ指標の定量的実装 ボラティリティ圧縮モメンタムブレイクアウト追跡戦略:TTMスクイーズ指標の定量的実装

概要

波動圧縮動量突破追跡戦略は,TTM圧縮指標に基づく定量取引システムで,波動圧縮後の強烈な突破状況を捕捉するために設計されている.この戦略は,波動圧縮 (ブリン帯はケンター通路内にある) と動量確認を巧みに組み合わせて,多めに行うだけの取引システムを構築している.その核心思想は,市場の”エネルギー蓄積”段階,つまり,波動率が著しく収縮する期間を識別し,その後,動量確認の場合には,その後の爆発的な行動を捕捉するために進出する.

戦略原則

この戦略の核心的原理は,市場の変動の周期的な性質に基づくもので”,変動率の収縮は,必然的に変動率の拡大に伴います”.具体的には,以下のようないくつかの重要なコンポーネントを通じて戦略は協調的に動作します.

  1. 圧縮状態の判断

    • 20周期のブリン帯 ((BB)) を計算し,パラメータは2.0
    • 20周期のケントナー通路 ((KC) を計算し,パラメータは1.5で,実際の波幅 ((ATR) を使用する
    • ブルイン帯が完全にケントナー通路の内部にあるとき, “圧縮開く”状態と定義される
  2. 動力柱状図

    • 最近の高低の範囲のミッドポイントと20サイクルクローズアップ価格SMAを計算する
    • この混合平均値から価格の偏差を測定します.
    • この偏差値に20回周期リゲレーションを適用し,柱状図を生成する
    • 動力の変化に応じて,異なる色の標識を使用:上昇傾向では緑 / 明るい緑,下降傾向では赤 / 色の
  3. 視覚的な指示

    • 海軍のブルーポイント=圧縮開始 (爆破準備)
    • 青い点 = プレッシャーがちょうど放出された
    • 青い点 = 中性 (非圧縮)
  4. トランザクションロジック

    • 入場条件:連続3つの柱形が”圧縮開始”状態を形成する (つまり連続3つの海軍ブルーポイント)
    • 出場条件:価格が21周期単調移動平均を下回る
    • 余分な取引は一度に1つの取引しか行わない

コード解析により,この論理に厳密に従って戦略が実行され,BBとKCの長さと倍数,実際の波幅を使用するオプション,取引ウィンドウの時間範囲設定を含むユーザが設定できるパラメータが提供されていることがわかります.

戦略的優位性

この戦略は,コードを深く分析した結果,いくつかの顕著な利点を示しています.

  1. 流行の始まりを捉える波動率の圧縮は通常,大トレンドの始まりの先兆であり,この戦略は,トレンドの初期にポジションを構築し,利益を最大化するために,これらの高確率の突破口を捕捉することに焦点を当てています.

  2. 低品質の信号をフィルタリング: 連続した3つの柱形が圧縮状態で要求され,一時的な”偽圧縮”現象を効果的にフィルターし,誤報信号を減少させ,取引品質を向上させる.

  3. スマートダイナミック・ストロー:21周期移動平均をストップとして使用し,トレンドを十分に展開させ,また,動力が衰退したときにタイムリーで退出できるようにし,利益の可能性とリスク管理をバランスとします.

  4. 視覚的に直感的に戦略は,原始のTTMの絞り込み指標のすべての視覚要素を保持し,動力の柱状図とカラーコードの絞り込み点を含め,トレーダーが各取引のトリガーの理由を直観的に理解できるようにします.

  5. 幅広い適応性戦略の設計は,1分から周回線までの任意の時間枠に適用でき,様々な取引品種に適しており,非常に普遍性があります.

  6. パラメータはカスタマイズできます.フレキシブルなパラメータ設定が提供され,特定の品種の波動特性に応じてブリン帯とケントナー通路の感度を調整することができます.

  7. 内蔵の反響機能: 戦略は,手数料と滑点のシミュレーションを含む,反省のサポートを内蔵し,戦略のパフォーマンスをよりリアルに評価することができます.

戦略リスク

この戦略は合理的に設計されていますが,以下の潜在的なリスクがあります.

  1. 偽の突破の危険性: 三柱のフィルタリングを経ても,市場には偽の突破が発生し,その突破後に価格が移動平均線以下に急速に戻り,ストップダウスを引き起こす可能性があります. 解決策は,取引量確認やトレンドフィルターなどの追加の確認指標を追加することを検討することです.

  2. 市場が揺れ動いた長期横軸の振動のある市場環境では,戦略が頻繁に進出し,連続した小損失を引き起こす可能性があります. 傾向判断条件を追加し,明確な振動のある市場での取引を一時停止することで解決できます.

  3. 減損の遅れ:21周期移動平均は,急速な反転する市場では反応が遅いため,引き下がりが拡大する可能性がある.高波動の環境では,より短い周期の移動平均に調整するか,波動率自律的な構成要素を追加することを考えることができる.

  4. 長期にわたる下落のリスク: 純粋に多重な戦略として,長期の熊市で挑戦に直面する. 市場トレンドフィルターを追加したり,配套した空調戦略を開発したりすることで,このリスクをカバーすることを考えることができます.

  5. パラメータ感度: ブリンベルトとケントナー通路のパラメータ設定は戦略の性能に顕著な影響があり,不適切なパラメータは過剰な信号または重要な機会を逃す可能性があります.異なる市場条件の反射でパラメータ設定を最適化することをお勧めします.

  6. 流動性のリスクコード注釈に記載されているように,取引量が非常に低い品種や流動性が低い時間枠で,より大きな撤退を経験する可能性があります.流動性が低い市場では,この戦略を避けるべきです.

戦略最適化の方向性

コード分析により,この戦略を最適化できる方向は以下の通りです.

  1. 添加量は確認できる:現在の戦略は,取引量要因を考慮せず,価格と変動率のみに基づいて意思決定を行う. 取引量確認条件を増加させ,取引量の大きな支持のもとで突破が起こるようにし,突破の有効性を向上させることを提案する. この最適化は,偽突破のリスクを大幅に軽減する.

  2. 適応パラメータ機構:現在のパラメータは固定値であり,戦略が市場状況に応じてブリンベルトとケントナー通路の倍数を自動的に調整し,異なる変動環境下での戦略の適応性を強化するために,歴史的な変動率に基づく自適性パラメータシステムを実現することを考慮することができます.

  3. 統合された市場構造分析市場構造を識別するアルゴリズム,例えばサポート/レジスタンスレベル,トレンドライン,または重要な価格レベルを導入すると,重要な構造点の近くの圧縮シグナルがより高い成功率を持つ可能性があります.

  4. 多時間枠分析: 複数のタイムフレームの確認メカニズムを実現し,入口信号がより長いおよびより短いタイムフレームの条件を同時に満たすことを要求し,これは信号品質を向上させ,偽突破を減らすことができる.

  5. リスク管理の最適化:現在の戦略は,固定移動平均をストップとして使用し,ATRに基づくダイナミックストップまたは波動率に基づくポジションサイズ調整を考慮し,リスク調整後の収益率を向上させることができます.

  6. 余空論理を追加する: 策略が熊市でも同様に有効になるように,相補的な空白論理を設計することを考え,市場全体のサイクルに適応性を向上させる.

  7. 季節性および時間フィルター: 戦略は,異なる季節,月,または1日の異なる時間帯のパフォーマンスを分析し,特定の時間帯のパフォーマンスをより良く発見し,それに応じて時間フィルターを追加して,全体的なパフォーマンスを向上させる.

要約する

波動圧縮動量突破トラッキング戦略は,クラシックなTTMの圧縮指標を,追跡可能な戦略の枠組みに成功させた,優雅で実用的量的取引システムである.その核心的な優位性は,波動圧縮後の暴発的な動きを捕捉し,移動平均を追跡し,ストップロスを使用して利益を保護することにある.戦略は,簡潔で効果的な設計であり,同時に,豊富な視覚的フィードバックを提供し,トレーダーが各取引信号の形成過程を容易に理解できるようにする.

偽ブレイクや揺れ市場などの潜在的リスクがあるにもかかわらず,これらの問題は,推奨された最適化方向によって効果的に緩和できます.特に,取引量確認,自主パラメータ機構および複数時間枠分析などの最適化措置を追加することで,戦略の安定性と適応性が著しく向上する見込みがあります.

この戦略は,市場波動の突破を捉えるためのトレーダーにとって,直接的に適用できるだけでなく,より複雑なシステムの基本構成要素としても,堅固な出発点を提供します.何よりも,この戦略の設計哲学は,市場の基本法則に適合しています.波動率の収縮は最終的に波動率の拡大につながり,この法則を認識して利用することは,成功の取引の鍵の1つです.

ストラテジーソースコード
/*backtest
start: 2024-06-19 00:00:00
end: 2025-06-17 08:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("NA GPT - TTM Squeeze Strategy", overlay=false, commission_type=strategy.commission.percent, commission_value=0.01, slippage=3)

// === Inputs ===
length       = input.int(20,  title="BB & KC Length")
multBB       = input.float(2, title="BB MultFactor")
lengthKC     = input.int(20,  title="KC Length")
multKC       = input.float(1.5, title="KC MultFactor")
useTrueRange = input.bool(true, title="Use TrueRange (KC)")

// === Core data ===
source = close

// --- Bollinger Bands ---
basis   = ta.sma(source, length)
dev     = multBB * ta.stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// --- Keltner Channels ---
ma          = ta.sma(source, lengthKC)
kcRange     = useTrueRange ? ta.tr : (high - low)
kcRangeAvg  = ta.sma(kcRange, lengthKC)
upperKC     = ma + kcRangeAvg * multKC
lowerKC     = ma - kcRangeAvg * multKC

// --- Squeeze states ---
sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = not sqzOn and not sqzOff

// --- Momentum histogram (same as indicator) ---
midpoint = (ta.highest(high, lengthKC) + ta.lowest(low, lengthKC)) / 2
average  = (midpoint + ta.sma(close, lengthKC)) / 2
val      = ta.linreg(source - average, lengthKC, 0)

// Histogram colours
bcolor = val > 0 ?
         (val > nz(val[1]) ? color.lime : color.green) :
         (val < nz(val[1]) ? color.red  : color.maroon)

// Zero-line colour
scolor = noSqz ? color.new(color.blue, 0) :
         sqzOn ? color.new(#031753, 0)   :
                  color.new(#78797c, 0)

// === Plotting (visuals preserved) ===
plot(val, title="Momentum", style=plot.style_histogram, linewidth=4, color=bcolor)
plot(0,   title="Zero Line", style=plot.style_line,      linewidth=2, color=scolor)

// --- Blue-dot theme ---
dotColor = sqzOn  ? color.new(#000080, 0) :   // Navy Blue
           sqzOff ? color.new(#7f858a, 0) :   // Steel Blue
                     color.new(#87CEEB, 0)    // Sky Blue
plotshape(true, title="Squeeze Dot", location=location.bottom, style=shape.circle, color=dotColor, size=size.tiny)

// === Trading logic ===

// 3 consecutive “blue-dot” squeeze bars
threeSqz = sqzOn and sqzOn[1] and sqzOn[2]

// 21-period SMA
sma21 = ta.sma(close, 21)

// Entry: go long when threeSqz appears inside window
if strategy.position_size == 0 and threeSqz
    strategy.entry("Long", strategy.long)

// Exit: close long when price crosses below SMA-21
if strategy.position_size > 0 and ta.crossunder(close, sma21)
    strategy.close("Long")