資源の読み込みに... 荷物...

過去のバックテストを伴う多時間枠のフェア・バリュー・ギャップ・ブレイクアウト戦略

作者: リン・ハーンチャオチャン, 日付: 2025-01-17 14:45:10
タグ:FVGBOSHTFRRSL

 Multi-timeframe Fair Value Gap Breakout Strategy with Historical Backtest

戦略の概要

この戦略は,マルチタイムフレーム分析,フェアバリューギャップ (FVG),および構造の破裂 (BOS) を組み合わせた包括的な取引システムである.低時間フレームでフェアバリューギャップの機会を探しながら,より高いタイムフレームで構造の破裂を検出することによって潜在的な取引エントリを特定する.この戦略には,自動ストップ損失とテイク・プロフィート設定のリスク管理システムも組み込まれている.

戦略の原則

基本論理は3つの主要な柱の上に構築されています.第一に,取引方向性の基礎となるフレームワークを提供するBOS (Break of Structure) を特定するために,より高い時間枠 (デフォルト1時間以上) を使用します.第二に,より低い時間枠でフェアバリューギャップ (FVG) を探し,それらの領域における潜在的な供給と需要の不均衡を示します.最後に,これらの条件を現在の価格ポジションと組み合わせ,価格が有利な位置にあるときに取引シグナルを誘発します.システムはリスク・報酬比率とストップ・ロスの因子を通じてリスクを管理します.

戦略 の 利点

  1. 多次元分析: 信号の信頼性を高めるため,複数のタイムフレーム分析を組み合わせます.
  2. 総合的なリスクマネジメント: リスク報酬設定とストップ・ロスの制御メカニズムが組み込まれているため,各取引に対して明確なリスクマネジメントが確保されます.
  3. ビジュアルフィードバック:戦略は,FVGボックス表示や潜在的な貿易機会マーカーを含む明確なビジュアルフィードバックを提供します.
  4. 高い適応性:パラメータ調整によって,戦略は異なる市場状況と取引スタイルに適応することができます.

戦略リスク

  1. 誤ったブレイクリスク: 市場では誤った取引信号につながる誤ったブレイクが発生する可能性があります. 解決策は,信号確認メカニズムを追加することです.
  2. シグナル遅延:より長い時間枠のデータを使用したため,シグナル遅延が発生することがあります.確認のために他の技術指標と組み合わせることをお勧めします.
  3. 市場変動リスク:高変動期間に,FVG形成は安定しない可能性があります.FVG観測長さを調整することで対処できます.

戦略の最適化方向

  1. シグナルフィルタリング: 音量によってサポートされる場合にのみシグナルを確認するために音量確認メカニズムを追加します.
  2. ダイナミックパラメータ: 市場の変動に基づいてリスク・リターン比とストップ・ロスの因子をダイナミックに調整する.
  3. トレンドフィルタリング: トレンド識別指標を追加し,トレンド方向でのポジションのみを取ります.
  4. タイムフィルタリング:不利な市場期間中に取引を避けるために取引セッションフィルタを追加します.

概要

この戦略は,マルチタイムフレーム分析,価格構造のブレイクアウト,フェアバリューギャップの包括的な使用を通じて完全な取引システムを構築する.その強みは多次元分析アプローチと包括的なリスク管理メカニズムにあるが,トレーダーは依然として実際の市場状況に応じてパラメータを最適化し,リスクを制御する必要がある.さらなる最適化は,シグナル確認,ダイナミックパラメータ調整,および戦略の安定性と信頼性をさらに向上させるために市場環境フィルタリングに焦点を当てることができる.


/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("ICT Strategy with Historical Backtest", overlay=true)

// === Настройки ===
tf = input.timeframe("60", title="Higher Timeframe (1H or above)")  // Таймфрейм для анализа BOS
fvg_length = input(3, title="FVG Lookback Length")                   // Длина для поиска FVG
risk_reward = input(2, title="Risk-Reward Ratio")                    // Риск-вознаграждение
show_fvg_boxes = input(true, title="Show FVG Boxes")                 // Показывать FVG
stop_loss_factor = input.float(1.0, title="Stop Loss Factor")         // Множитель для стоп-лосса

// === Переменные для анализа ===
var float bos_high = na
var float bos_low = na

// Получаем данные с более старшего таймфрейма
htf_high = request.security(syminfo.tickerid, tf, high)
htf_low = request.security(syminfo.tickerid, tf, low)
htf_close = request.security(syminfo.tickerid, tf, close)

// Определение BOS (Break of Structure) на старшем таймфрейме
bos_up = ta.highest(htf_high, fvg_length) > ta.highest(htf_high[1], fvg_length)
bos_down = ta.lowest(htf_low, fvg_length) < ta.lowest(htf_low[1], fvg_length)

// Обновляем уровни BOS
if (bos_up)
    bos_high := ta.highest(htf_high, fvg_length)
if (bos_down)
    bos_low := ta.lowest(htf_low, fvg_length)

// === Определение FVG (Fair Value Gap) ===
fvg_up = low > high[1] and low[1] > high[2]
fvg_down = high < low[1] and high[1] < low[2]

// Визуализация FVG (Fair Value Gap)
// if (show_fvg_boxes)
//     if (fvg_up)
//         box.new(left=bar_index[1], top=high[1], right=bar_index, bottom=low, bgcolor=color.new(color.green, 90), border_color=color.green)
//     if (fvg_down)
//         box.new(left=bar_index[1], top=high, right=bar_index, bottom=low[1], bgcolor=color.new(color.red, 90), border_color=color.red)

// === Логика сделок ===
// Условия для входа в Лонг
long_condition = bos_up and fvg_up and close < bos_high
if (long_condition)
    strategy.entry("Long", strategy.long, stop=low * stop_loss_factor, limit=low + (high - low) * risk_reward)

// Условия для входа в Шорт
short_condition = bos_down and fvg_down and close > bos_low
if (short_condition)
    strategy.entry("Short", strategy.short, stop=high * stop_loss_factor, limit=high - (high - low) * risk_reward)

// === Надписи для прогнозируемых сделок ===
if (long_condition)
    label.new(bar_index, low, text="Potential Long", color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)

if (short_condition)
    label.new(bar_index, high, text="Potential Short", color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)


関連性

もっと