記事の目次
根拠と適用範囲
ソース指標はBOSの実装例を1つ提供しており、プラットフォームおよび取引所のドキュメントでタイミングと注文方法が詳しく説明されています。提案されたルールは、ここでは検証済みの収益性結果を示していません。
実践の流れ
- 以前の傾向を確認する有効な高値・安値の切り上げ、または高値・安値の切り下げを使用します。
- 参照を固定する現在のバーが始まる前に、まだ突破されていないスイングを保存します。
- クローズブレイクを確認する固定バッファを適用し、その水準を突破済みとして記録します。
- オプションのフィルターを評価する変位実験とRVOL実験は分けて実施してください。
- 選択したエントリを実行します即時エントリーとリテスト後のエントリーの結果を分けて残します。
BOSは、既に知られている傾向を必要とします。
確認された高値が 100 と 104 であり、対応する確認された安値が 95 と 99 である場合、上昇トレンドは高値と安値の切り上げによって定義できます。この慣例では、後日 104 を上回る終値は強気 BOS となります。順序付けられたスイングシーケンスのないレンジでは、同じ終値はトレンドの継続ではなく、レンジブレイクアウトとなります。
LuxAlgoは、内部構造とスイング構造を区別します([1])。各固定ピボット構成にscale_idを割り当てることで、データ内でその区別を維持します。マイナーな逆トレンドブレイクは、主要トレンドが反転したという十分な証拠にはなりません。
「未突破」であることが重要です。昨日すでに条件を満たす終値でスイング高値を突破していれば、今日さらに高い終値が出ても同じ水準に対して再び BOS を発生させてはいけません。broken_level_id を保存し、同時に起きた突破をまとめます。そうしないと、一つの継続的な値動きを何十もの独立した信号のように数えてしまいます。
現在のバーをテストする前のスナップショット構造
提案するピボットは左右それぞれ3本のバーで確定し、eps=max(2 ticks,0.15ATR)、b=max(2 ticks,0.10ATR) を使います。上昇トレンドには、直近の高値同士と安値同士の比較で、どちらも eps より大きく切り上がることを要求します。下降トレンドでは不等号を逆にし、それ以外は混合状態とします。期間と閾値は研究用パラメータです。
バー t の開始時に、前のトレンドと最新の有効な未突破高値をスナップショットします。強気 BOS には、prior_state=UPTREND、close[t]>high+b、およびそのしきい値を超えていない直前の終値が必要です。ATR は t−1 から生成されます。t の終値で確認されたピボットは、t+1 からの決定にのみ追加されるため、同じ処理サイクルの途中でレベルを置き換えることはできません。
複数の参照が同時に途切れた場合は、関連するレベルのリストを含む親イベントを1つ作成します。スコープ内で最も上位のレベルをメインの参照として選択することは可能ですが、そのポリシーは安定している必要があります。期限切れのレベルは、後から作成されたチャートで重要に見えるという理由だけで復活させることはできません。
基となるピボットエンジンで、等号とタイの定義を明確にしてください。フラットなダブルハイは、タイの処理方法によっては、1つのスイングになる場合もあれば、複数になる場合もあります。この選択はトレンドの状態と次の未ブレイク参照に影響するため、チャートの詳細として扱うのではなく、ストラテジーバージョンで記録してください。
old = structure_snapshot_at_end(t-1)
A = ATR14[t-1]
if finite_positive(A) and old.trend == UPTREND:
b = max(2*tick,0.10*A)
h = old.last_eligible_unbroken_high
if h is not None and C[t-1] <= h.price+b and C[t] > h.price+b:
emit(BOS_UP,known_at=received_close_time(t),level_id=h.id)
mark_broken(h.id)
append_pivots_confirmed_at(t,eligible_from=t+1)
# New pivots cannot replace the threshold inside this bar's decision.
値動きの強さと出来高は別の特徴量群
提案されている強気変位フィルターには、body/ATR≥0.8、body/range≥0.6、およびCLV≥0.75が必要です。これらの番号はオプションの実験であり、必須のBOS定義ではありません。開始ギャップは、小さなローソク足の実体でスイングを超えて閉じる可能性があります。大きな実体の条件に強制するのではなく、gap_breakラベルを保持してください。
ブレイクアウト時の RVOL は、その時間帯として取引活動が異常に多いかを調べます。同じ元の突破イベント一覧で、BOS にフィルターを使う場合と使わない場合を比較します。大きなローソク足の実体と多い出来高は同じイベントに伴うことが多く、独立した証拠として数えてはいけません。
出来高データの信頼性が低くても、構造検出器は volume_unavailable=true として動作できます。通常の活動と不明な活動は異なるため、RVOL=1 で補完してはいけません。欠損を報告に残し、データ提供元の変更で取引可能なセットアップが密かに変わるのを防ぎます。
合成継続とウィップソーの例
確定高値を100と104、確定安値を95と99、ATR=2、tick=0.05 とします。このとき b=0.20 です。次の足は O=103.80、H=105.80、L=103.60、C=105.50 で、終値が104.20を超えます。実体は1.70、すなわち0.85ATR、body/range は約0.773、CLV は約0.864です。提案する変位フィルターを満たします。
この BOS の前に、別の小規模な押し安値103.40がすでに確定していたとします。足の確定後に105.60でエントリーが約定し、その押し安値にストップ、110に目標を置くと、リスク2.20に対して見込み利益4.40、コスト控除前で2Rです。ストップは既知の局所的な取引基準であり、将来のリテスト安値ではありません。後のリテストを待つ戦略は、実際に待って固有のエントリー価格を計算する必要があります。
乱高下する経路では、価格は条件を満たす終値から反転し、103.35でプロテクションが約定し、2.25は損失となります。BOSは正しくラベル付けされたイベントのままですが、継続トレードは失敗します。104.50へのヒゲとそれに続く103.90での終値は、この終値ベースのバージョンをトリガーしません。ヒゲベースの検出器には、別の仕様とテストが必要です。
再テストのエントリーには、実際の再テストが必要です。
ブレイクアウト足の確定後に買う戦略と、後のリテストを待って買う戦略を分けます。提案するリテスト期限は K=6 本で、安値が104付近の事前定義した領域に触れ、終値が104+bより上へ戻ることを要求します。条件が判明した後にのみ発注します。そのまま上昇する場合、この方式では未約定です。
リテスト安値の下のストップロスは、通常、保護された構造的安値よりも近い位置にあります。トレードは、上昇トレンド全体を終わらせることなくストップアウトする可能性があります。逆に、遠い主要安値で保護すると、次のターゲットまでの利益が不十分になる可能性があります。BOS ラベルは、ポジションリスクを自動的に選択しません。
エントリー前であれば、期限切れや旧レンジへ十分深く戻った終値により、事前のルールに従って待機候補を取り消せます。約定後の保護は、実際に執行できる注文方式と市場価格に従います [3]。後に回復しても、先に成立したストップを履歴から消せません。
重複するマイナーおよびメジャーなBOSエントリーの総リスクを、1つのイベント予算内に抑えてください。両方のシグナルが同じインパルス中に発生した場合、正式なスイングIDが異なっていても、損失は強く相関する可能性があります。すべてのラベルを新しい独立したトレードとしてカウントするのではなく、増分ポジションとエグジットを報告してください。
BOSは、上昇トレンドにあるという情報以外に、何か付加的な情報を提供してくれるのでしょうか?
BOSの上昇トレンド期間を、ボラティリティと高値からの距離が類似しているもののブレイクアウトのない、一致する上昇トレンド期間と比較します。強気なBOSを市場全体と比較することで、上昇トレンドが選択されたという事実を概ね測定できます。
まずシグナル後のリターンを測定し、次に実行可能な取引結果を評価します。再テスト頻度、再テスト生存率、エントリー遅延、MAE/MFE、期待値、レイテンシー感度を報告します。情報タイミングの原則[2]に基づいて行われるプレフィックスリプレイは、将来のピボットが過去のイベントを変更することを防ぐはずです。
正確な閾値を最適化するのではなく、安定した結果が得られるよう、近隣のピボット長とバッファを調べてください。不確実性を推定する際は、複数のスケールにわたる同時発生イベントをグループ化してください。また、トレンドの状態が混在する期間も保持してください。好ましくない結果が出た後にこれらの期間を除外すると、継続サンプルが人為的にクリーンになってしまいます。
よくある落とし穴
すべての新高値はBOSになります
明確な先行トレンドがない場合、その事象は単なるレンジブレイクアウトに過ぎない可能性がある。
将来のリテスト安値を使う
ブレイクアウト・クローズのエントリーでは、後から指定したストップ注文を流用することはできません。
多くの尺度は独立した証拠を示唆している
複数のラベルが同じ値動きと相関したリスクを表している可能性があります。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
スイング水準を超えたヒゲも数えますか?
この基準モデルでは数えません。足が確定した終値での突破が必要です。ヒゲによる突破は別の検出規則です。
BOSの取引が失敗したということは、そのイベントのラベルが間違っていたということでしょうか?
いいえ。イベントの定義を満たしていても、エントリー後にトレンド継続を狙った取引で損失が出ることはあります。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Smart Money ConceptsLuxAlgo on TradingView. 構造判定の実装例について、元の説明を参照済みです。 確認日: .
- RepaintingTradingView. 情報が利用可能になる時点とリペイントに関する技術解説を参照済みです。 確認日: .
- Futures Order TypesCME Group. 注文の仕組みを参照済みです。売買戦略の妥当性を検証した資料ではありません。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード