
ダイナミック・フェア・バリュー・ギャップ (英語: Fair Value Gap,略称:FVG) は,市場構造理論に基づく量的な取引システムで,価格におけるフェア・バリュー・ギャップを特定し取引することに専念している.この戦略は,3つの線形状を使用して,価格行動における需要・供給の不均衡を検出し,価格がこれらの領域を反測する際に入場取引を行う.この戦略は,固定されたリスク・報酬比率を使用してリスク管理を行い,夜間リスクを避けるために毎日特定の時間帯の強制平準化ポジションを設定する.この方法は,スマートマネーコンセプト (英語: Smart Money Concept,略称:SMC) 理論に由来し,この理論は,金融機関の行動と市場構造の微小な変化を重視する.この戦略は,システム的にこれらの高回益率の地域を特定し取引することで,価格の波動を捕捉し,厳格なリスク管理を維持することを目的としている.
公正価値ギャップの取引戦略の核心原則は,価格が急速に動いているときに残される”未取引領域”または”ギャップ”に基づいています. これらの領域は,需要と供給の深刻な不均衡を代表し,通常,将来的に”埋め”または”再テスト”されます.具体的には,戦略は以下の方法で動作します.
ギャップ検出メカニズムFVGの2つのタイプを識別するために,3つの線モデルを使用します.
入場論理を反射するFVGは,FVGが形成されたときにすぐに入場するのではなく,価格がこれらの領域に反応するのを待っています.
リスク管理:
終盤は平らだった戦略: 毎日の午後3時15分 (インド標準時) に,すべての持株を自動的に平仓し,すべてのFVG配列をクリアし,次の取引日のために準備する.
トランザクションを重ね合わせる戦略は最大5回の重複取引を許容する (ピラミダイング),つまり同じ方向に複数のポジションを保持することができ,それによって強いトレンド市場での利益を拡大する.
この方法は,市場構造における不連続性と価格行動理論を利用し,これらの不均衡な領域を埋める際に価格の予測可能な行動を捉えようとしています.
この戦略は,コードを深く分析した結果,いくつかの利点が明らかになりました.
客観的な取引基準策略:FVGとエントリーポイントを識別するために明確に定義された数学的条件を使用し,主観的な判断を排除し,取引の規律と一致性を向上させる.
市場構造に基づく取引公平価値のギャップを取引することによって,戦略は,価格行動に遅れがちな従来の指標の信号に依存するのではなく,市場の真の需要と供給の不均衡の領域に焦点を当てます.
リスク管理:
複合収益の可能性ストップ・ロストによって各ポジションのリスクをコントロールしながら,強烈なトレンド市場において,戦略は収益を大幅に増加させることができます.
適応力戦略は固定価格レベルに依存するのではなく,現在の市場条件の下の重要な領域を動的に識別し,異なる市場環境とツールの中で適応できるようにします.
プログラミング効率: コードは,FVG情報をアセットで保存し,複数の潜在的な取引機会を効果的に管理し,システムが複数の価格レベルを追跡し,応答できるようにします.
ビジュアルアシスタント戦略:FVG領域をグラフに直感的に表示する (緑は看板FVG,赤は下落FVG),トレーダーがシステムの意思決定プロセスを理解するのを助ける.
この戦略は理論上は堅実で,多くの利点がありますが,いくつかのリスク要因があります.
偽の突破の危険性: 整合市場では,価格がFVGの境界に何度も触れて,継続的なトレンドを形成せず,複数のストップ・ロスの出口を引き起こす可能性があります. 解決策には,追加の市場環境フィルターまたはトレンド確認指標の追加が含まれます.
トランザクションリスクの重複: 最大5つの同方向ポジションを許可することは,特にトレンドが突然逆転したときに,間違った方向に過剰に曝露することにつながる可能性があります. すべてのポジションの最大リスクが特定のアカウントのパーセントを超えないように,全体的なリスク制限を実施することを推奨します.
固定リスク報酬率の限界: 固定の1:2リスク/リターン比率を使用することは,すべての市場条件に適していない可能性があります. 波動性が低い市場では,そのような目標を達成することは困難である可能性があります. 波動性が高い市場では,利益のある取引を早めに退出することがあります. 市場波動性に基づいて収益の目標の調整を考慮してください.
市場環境のフィルタリングの欠如:戦略は,全体的なトレンドや波動状態を考慮せずに,すべての市場条件でシグナルを生成する. 強いトレンドの環境で取引逆転FVGは,連続的な損失を引き起こす可能性があります. トレンドフィルターを追加すると,パフォーマンスを大幅に向上させることができます.
取引量確認の欠如: 策略は価格行動のみに基づいて,取引量確認を考慮しない.これは,取引量の低い領域で偽の信号を生成する可能性がある.取引量分析を統合することで,信号の質を向上させることができる.
固定時間退出の潜在的な問題: 特定の時間帯での退出は,有利な位置で早退したり,不利な位置でより良い退出の機会を逃す可能性があります. 価格行動に基づく退出条件を組み合わせて考慮してください.
歴史の追溯仮説に 依存する戦略的仮定: 将来のFVGの行動は,過去に観察されたパターンに似ています. 市場の動態が変化し,これらのモデルの有効性を弱める可能性があります. 定期的にパラメータを再最適化して仮定を検証することは非常に重要です.
このコードの詳細な分析に基づいて,以下はいくつかの可能な最適化方向です.
市場構造のフィルター:
波動性調整:
取引量確認:
ポジションの規模を調整する:
多時間枠分析:
スマート・スプレッド取引:
機械学習の強化:
統計回帰の枠組み:
ダイナミック・フェア・バリュー・ギャップ・インデイトレーディング・ストラテジーは,市場における需要・供給の不均衡地域を識別し,取引するための体系的な方法を提供する.三線FVGモデルと明瞭な反転入場ルールを活用することで,このストラテジーは理論的に健全であり,実用的に操作可能である.その強力なリスク管理フレームワークは,既定のストップ・損失,固定リスク・リターン・比率,日終止ポジションメカニズムを含む,取引の規律のための堅固な基盤を提供する.
この戦略の主要な優点は,その客観性と市場構造に基づく方法によって,異なる市場環境において関連性を保つのである.しかしながら,戦略の効果は,推奨された最適化方向の実施によって,特に,市場環境フィルター,波動性に基づく調整,取引量確認の追加によって,著しく強化される可能性がある.
注目すべきは,どんな取引戦略も,どんなに完璧であっても,成功を保証するものではないということです. 成功した取引には,健全な戦略だけでなく,厳格な執行規律,適切な資金管理,市場に関する深い理解が必要です. ダイナミックなFair Value Gap戦略は,トレーダーが自身のリスク承受能力と市場の見解に基づいてさらにカスタマイズし,最適化できる良い出発点を提供します.
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Intraday FVG", overlay=true, pyramiding=5, max_bars_back=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent)
// 2. FVG Detection (Three-Candle Pattern)
var bullFVGHigh = array.new_float()
var bullFVGLow = array.new_float()
var bullFVGIndex = array.new_int()
var bearFVGHigh = array.new_float()
var bearFVGLow = array.new_float()
var bearFVGIndex = array.new_int()
detectFVG() =>
// Bullish FVG: Current low > prior high AND next high < current low
bullCondition = low > high[2] and close[1] > high[2]
// Bearish FVG: Current high < prior low AND next low > current high
bearCondition = high < low[2] and close[1] < low[2]
if bullCondition
// log.info("bull condition met: {0} {0} {0}", high[2], close[1], low)
array.push(bullFVGHigh, low)
array.push(bullFVGLow, low[2])
array.push(bullFVGIndex, bar_index)
if bearCondition
// log.info("bear condition met: {0} {0} {0}", low[2], close[1], high)
array.push(bearFVGHigh, high[2])
array.push(bearFVGLow, high)
array.push(bearFVGIndex, bar_index)
detectFVG()
// 3. Retest Execution Logic
checkRetests(arrayHigh, arrayLow, barIndex, direction) =>
// log.info("{0} : {1}", bar_index, time)
i = array.size(arrayHigh) - 1
while i >= 0
// log.info("barIndex : {0}" , array.get(barIndex, i))
// log.info("bar_index : {0}" , bar_index)
if array.get(barIndex, i) < bar_index
fvgHigh = array.get(arrayHigh, i)
fvgLow = array.get(arrayLow, i)
// log.info("visting : {0} : {1} : {2} : {3} ", array.get(barIndex, i), bar_index, fvgHigh, fvgLow)
if direction == "long" and low <= fvgHigh
// log.info("entering long")
sl = array.get(arrayLow, i) // Previous candle's low
entry = close
tp = entry + (entry - sl)*2
strategy.entry("L"+str.tostring(array.get(barIndex, i)), strategy.long)
strategy.exit("XL"+str.tostring(array.get(barIndex, i)), "L"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
if direction == "short" and high >= fvgLow
// log.info("entering short")
sl = array.get(arrayHigh, i) // Previous candle's low
entry = close
tp = entry - (sl - entry)*2
strategy.entry("S"+str.tostring(array.get(barIndex, i)), strategy.short)
strategy.exit("XS"+str.tostring(array.get(barIndex, i)), "S"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
i := i - 1
checkRetests(bullFVGHigh, bullFVGLow, bullFVGIndex, "long")
checkRetests(bearFVGHigh, bearFVGLow, bearFVGIndex,"short")
// 5. Daily Exit at 3:15 PM IST
exitTime = hour == 15 and minute >= 15
if exitTime
strategy.close_all()
array.clear(bullFVGHigh)
array.clear(bullFVGLow)
array.clear(bearFVGHigh)
array.clear(bearFVGLow)
array.clear(bullFVGIndex)
array.clear(bearFVGIndex)