記事の目次

根拠と適用範囲

Fidelityは数式と従来の解釈を文書化しており、TradingViewは組み込みのインジケーターを文書化しています。どちらの情報源も、以下に提案する20バーフィルターまたはダイバージェンス戦略を検証していません。これらのバリアントは、コストを差し引いた後、独立したテストが必要です。[1] [2]

データと市場同一銘柄・同一フィードの終値と出来高を一貫して取得し、企業アクションの調整方針を記録する。別の市場間実験を定義せずに、現物出来高と無期限先物価格を混ぜてはならない。
研究対象の時間足日足バージョンと日中バージョンは、それぞれ個別にテストする必要があります。この記事で示されているウィンドウ長は、研究上の設定であり、最適化された推奨事項ではありません。
合成シーケンスOBVは、0、10、2、2、22、13です。下段の列はバーの出来高を示しています。縦軸は価格ではなく、累積符号付き出来高を表しています。図解を原寸で開く
オリジナルの合成図。合成シーケンス OBV は、0、10、2、2、22、13 です。下段の列はバーの出来高を示しています。縦軸は価格ではなく、累積符号付き出来高を表しています。

実践の流れ

実践手順: オンバランスボリューム:OBV ダイバージェンスおよびブレイクアウトアルゴリズム
詳しい手順を以下に示します。各段階でデータ不足や条件不成立があれば、除外理由を記録します。
  1. シリーズを検証する価格、数量、調整に関する規則を一致させてください。
  2. 符号付きボリュームを蓄積する終値同士の方向で計算します。終値が同じ場合はゼロを加算します。
  3. 両方のピボットを確認してください乖離は、後のピボットポイントが利用可能になった後にのみ発生する。
  4. 価格確認をお待ちくださいブレイクアウトまたはネックラインのトリガーは、候補者の後に発生する必要があります。
  5. 制御分岐を比較する価格の上昇・下落方向だけの条件と OBV フィルターで執行条件を同じにする。

終値の変化方向で足全体の出来高に符号を付ける

0.01 の上昇でも 5 の上昇でも、足全体の出来高を加える。出来高が等しければ、リターンが大きく違っても OBV への寄与は同じである [1]。したがって OBV は、上昇・下落に分類した期間に活動量がどう分布するかを表し、価格変動幅そのものは測定しない。

開始値はゼロまたは任意の定数となる場合があります。異なる開始日を持つ銘柄や履歴における絶対値は直接比較できません。ローリングウィンドウ内の変化、傾き、およびポジションの方が、より有用な分析機能となります。すべての取引には買い手と売り手が存在します。「オンバランス」という名称は、取引量を資産に流入する純資本に変換するものではありません。

標準の符号は現在の始値ではなく、一つ前の足の終値との比較で決まる。夜間ギャップ後に、始値より低く引けても前の終値より高い足は、標準 OBV に正の寄与をする。足の色を使う計算は別指標であり、名前と設定を分ける。

正規化された研究特徴量を計算する

銘柄間比較のための提案特徴量は、20 本の OBV 変化を同じ 20 本の寄与に対応する総出来高で割る。有効な非負出来高と正の分母なら −1 から 1 の間になる。これは元の OBV 水準とは別の正規化特徴量である。終値不変の足は分子にゼロを加えるが、その出来高は分母に残す。

二十本の符号付き出来高の寄与には、窓の直前を含む 21 個の終値が必要である。20 個の価格しか確認しない実装では、負の配列添字を読んだり、不完全な最初の差分を使ったりする恐れがある。準備期間の全データを明示的に要求し、欠損は中立に見えるゼロで埋めず利用不可のままにする。

確定した足で特徴量を計算する。暫定値を使うなら別のライブ版を定義する。各シグナルに入力締切と受信時刻を保存する。企業アクション調整の改訂は過去の符号を変え得るため、調整方針とデータ版を結果に付記する。

obv[0] = 0
for t in 1..last_closed_bar:
    if C[t] > C[t-1]: obv[t] = obv[t-1] + V[t]
    elif C[t] < C[t-1]: obv[t] = obv[t-1] - V[t]
    else: obv[t] = obv[t-1]
if t >= 20 and valid_full_window(t,21) and sum(V[t-19:t+1]) > 0:
    f = (obv[t]-obv[t-20]) / sum(V[t-19:t+1])
else: f = NA

価格と乖離には同じタイムスタンプを使用する

確認済みの2つの安値、p1とp2を取り上げます。強気のダイバージェンス候補は、2番目の安値が低く、かつ、まさにその2つのタイムスタンプでサンプリングされたOBVが高いことを要求します。候補は、p2が確認された後にのみ存在します。例をより魅力的にするためだけに、別のOBVの底値を選択しないでください。許容される時間差には、固定されたペアリングウィンドウとタイブレークルールが必要です。

ダイバージェンスはエントリーのトリガーではなく、特徴の一つです。提案された確認の一つは、中間の反発高値を上回る終値が必要です。p2が利用可能になる前にそのレベルを既に超えていた場合は、事前定義されたポリシーに従って、候補を見逃したか期限切れとして記録してください。2番目のピボットがまだ不明な時点で、ヒストリカルエントリーを挿入しないでください。

傾斜フィルタと発散検出器は、異なる質問に答えます。直近 20 本のバーで上昇する OBV は、適切に一致する 二つの谷を意味するとは限りません。識別子を別々に保持し、候補として採用されたフィーチャを記録します。これにより、二つの視覚的記述が一致しているように見えても、異なるイベント セットを生成する場合に、後でエラー分析が可能になります。

計算された数列と反例

100、101、100、100、102、101の終値と、10、8、12、20、9の2番目のバーからのボリュームを考慮してください。ゼロから始まるOBVは、0、10、2、2、22、13へと続きます。終値が変更されていないバーのボリュームは12ですが、OBVは変更されません。図では、この正確な符号付きボリュームシーケンスを使用しています。

反例として、価格は 101 から 95 まで下落し、出来高は 10 で、その後、95 から 95.01 までわずかに上昇し、出来高は 100 となります。価格は当初の値よりほぼ 6% 低いままですが、OBV は差し引き 90 増加します。買い圧力によって価格の損失全体が回復したと結論付けると、式に含まれていない情報を式に帰属させることになります。

株式分割は、調整されていないフィードにおいて、終値から終値にかけて機械的な下落を引き起こす可能性があります。アルゴリズムは、対応する経済的な価格下落がないにもかかわらず、出来高を差し引きます。調整日周辺の価格と数量を一緒に監査してください。個別に調整されたフィールドは、もっともらしく見えるものの、一貫性のない系列を生成する可能性があります。

テスト可能なブレイクアウトフィルターを指定します。

提案されたベースラインでは、Qを以前の20バーの最高値として固定し、現在の終値がQに定義済みのATRバッファを加えた値よりも高いことを要求します。一つのブランチでは、正規化されたフィーチャーがゼロを超えることを要求します。もう一つのブランチでは、OBVが自身の以前の20バーの最大値よりも高いことを要求します。これらは別々の実験であり、数十の閾値を探索して最も強い結果のみを公開する理由ではありません。

OBVを適用する前に、すべての価格候補を保存して、拒否されたグループが観測可能な状態を維持するようにします。エントリーは、確認後の次に実行可能なイベントで発生します。制御ブランチでは、ターゲットと時間終了の規則が同一の、あらかじめ定められた構造的ストップまたは再テストストップを使用します。OBVの読み取り値が変化しても、ストップ幅の拡大は許可されません。

空売りの場合、該当する場合は実際の借入制約とコストを含めてください。対称的な数学的ルールは、対称的な実行可能性を意味するものではありません。実行された取引と併せて、利用できない借入、約定漏れ、スプレッド条件の変化を報告し、これらの機会を分母からこっそり除外しないでください。

価格の上昇・下落方向を超える出来高の情報を調べる

OBV を、アップクローズバーからダウンクローズバーを引いた単純なカウントと比較します。同様の結果であれば、そのサンプルではボリューム加重はほとんど意味がないことが示唆されます。次に、同じユニバース、候補タイムスタンプ、および実行モデルを使用して、生の OBV の変化を正規化されたバージョンと比較します。異常に大きなボリュームのバーがウィンドウに出入りしたときに何が起こるかを調べます。

時系列的なサンプル外評価を使用し、流動性グループ別に結果を報告してください。スプレッド、スリッページ、および関連する資金調達を含めてください。仮想通貨については、取引所と取引量のソースを特定してください。NBERが調査した過去のサンプルはデータ品質チェックの動機付けとなりますが、すべての現在の取引所に対して同じ報告バイアスを確立するものではありません。[3]

成功したダイバージェンスだけでなく、費用控除後の期待損益、ドローダウン、取引数、却下候補を記録する。有益な否定的結果として、OBV が選別を変えても純損益が改善しない場合や、一イベント分の執行遅延で見かけの利点が消える場合がある。いずれも成功チャートだけの一覧より有用である。

よくある落とし穴

キャンドルの色と OBV サインを混同する

標準的な指標は連続する終値を比較するが、終値と始値を比較することで異なる指標が定義される。

シリーズをリセットした後のレベルを比較する

任意に設定した初期値は、経済的なシグナルを生み出すことなく、線をずらしてしまう。

遡及的乖離エントリ

提案されたエントリー時点では、視覚的に説得力のあるピボットポイントの組み合わせが利用できなかった可能性がある。

この手法を使う前のチェックリスト

ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。

0/7 項目

よくある質問

OBVはCVDの代わりになりますか?

いいえ。OBV は終値の変化で足全体の出来高に符号を付ける。CVD には、約定出来高の分類方法を文書化したデータが必要である。

OBVの上昇は価格上昇を保証するのか?

いいえ。価格は大幅に下落した後、出来高が増加するとわずかに回復することがあります。この関係は経験的な仮説にすぎません。

研究資料

各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。

  1. On Balance VolumeFidelity. OBV 式と従来の発散解釈は、提案されたバリアントのバックテストなしで行われます。 確認日: .
  2. Built-in functions and variables for popular indicatorsTradingView. 内蔵型OBVおよびMFIの製品ドキュメントであり、収益性に関する証拠ではありません。 確認日: .
  3. Crypto Wash TradingNBER. 仮想通貨取引量の報告品質に関する歴史的研究。普遍的な現在のエラー率についての主張ではない。 確認日: .

関連する手法

リスクについて

この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.

実際の資金を使う前にルールを検証する

アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。

App StoreでBacktestをダウンロード