記事の目次
根拠と適用範囲
元のコミュニティ投稿では利益が報告されているものの、ルールの一部は非公開となっている。独立した検証は行われていない。以下の公開仕様は、その実績を再現したものではなく、別の研究仮説である。
実践の流れ
- 直前の相場状態を確認VWAPが十分に水平で、過去に終値が線の上下を所定の回数切り替えていることを条件にします。
- 下限バンド内への復帰を検出事前イベントのスナップショットを使用して、下側のバンドとターゲットを固定します。
- 乖離を確認する右側のバーが表示されるまで待ち、価格のピボットポイントでCVDを比較してください。
- 残りのチャンスを確認する価格がすでに利確目標に到達した候補、または約定可能な価格で計算したリワード/リスク比が不足する候補を却下します。
- ポジションを管理する固定ストップ、固定平均値、および事前設定された時間での決済を使用してください。
利益報告から何が分かるか
Rogue-seekerは、VWAPバンド、CVD、独自ブロックを使い、年初から投稿時点までの税引き後利益$103,750とプロフィットファクター2.15を報告しています。[1] 確認した資料には監査済みの取引時系列がなく、一部の閾値も非公開です。アイデアの出発点として扱ってください。見やすいチャートや自信に満ちた説明だけでは、別の実装で同程度の収益が得られるとは証明できません。
慎重に扱うべきなのは、二標準偏差を超えた動きはすぐ反転するはずだという仮定です。日中の観測値には時間方向の依存があり、価格生成過程もセッション中に変化し得ます。二シグマのバンドは、VWAPへ戻る確率が95%であることも、まして損切りより先に利確目標へ達することも保証しません。
この記事では、先行市場がレンジ相場に類似しているかどうか、バンド変動が収束したかどうか、そしてCVDの乖離が確認されたかどうかという3つの判断を分けて扱います。未定義のボリュームプロファイルノードやプライベートブロックは除外されます。これらを追加するには、独自のデータ可用性と判断タイムスタンプを持つ別の仕様が必要です。
バンドと直前の相場状態を定義
約定数量を重みとして、セッションのアンカーからμ=Σqp/Σqとσ²=Σq(p−μ)²/Σqを累積計算します。数値的に安定した逐次更新を実装してください。これは本記事で選んだ推定方法であり、すべてのプラットフォームと一致するとは限りません。TradingViewではアンカー、価格ソース、バンドを設定できます。[2] シグナルより先に計算実装を比較してください。
提案するレンジ判定には、直前20本の足、|VWAP[t−1]−VWAP[t−6]|≤0.2A、および直前20本で終値のVWAPに対する上下が少なくとも三回切り替わることを要求します。AはATR14[t−1]です。終値がVWAPと等しい場合は直前の側を引き継ぎ、交差として数えません。これらの閾値は研究用に選んだ条件です。
時点tのイベントはL[t]<μ[t−1]−2σ[t−1]を満たし、C[t]が同じ下限バンドより上で確定する必要があります。target_ref=μ[t−1]を固定します。その安値は後に左右それぞれ二本の足を持つピボットとして確認されなければなりません。同じリセット区間の直前の確認済み価格ピボットより、価格は少なくともb=max(2 ticks,0.1A)だけ低く、一方CVDは高いことが必要です。確認後、イベントから五本以内に、直前の足の高値より上かつtarget_refより下で終値が確定することを求めます。途中ですでに目標へ到達していれば取り消します。
アクティブなイベントは最大で 1 つに留めます。必要な 2 つの左バーがないイベント、ピボット確認前にイベントの安値が無効になったイベント、CVD セグメントが欠落しているイベント、またはリセットの不一致があるイベントは拒否します。エンドポイントの値だけでなく、以前の価格ピボットからイベントピボットまでのフローの完全性を確認します。次の価格が報酬/リスク テストに失敗した場合でも、シグナルが出たイベントを消費します。後の魅力的な価格によって、その event_id を復活させることはできません。
at_event_close(t):
if active_event or not complete_prior_band_ATR_regime_history: return
if prior_range_regime and L[t]<lower[t-1] and C[t]>lower[t-1]:
create_event(target=VWAP[t-1],event_low=L[t],A=ATR[t-1],
buffer=max(2*tick,0.10*ATR[t-1]),start=t,expiry=t+5,
session_id=session_id(t),anchor_id=anchor_id(t),
cutoff=session_end-5_minutes,state=AWAITING)
on_completed_bar(now):
if event.state!=AWAITING: return
if changed_session_or_anchor(event,now) or received_close_time(now)>=event.cutoff:
event.state=EXPIRED; return
if now>event.expiry or target_touched_after_event_through(now):
event.state=CANCELED; return
if event_low_no_longer_a_valid_pivot_candidate:
event.state=CANCELED; return
if not pivot_confirmed_left2_right2 or not previous_confirmed_pivot: return
if not same_reset_and_complete_classified_CVD_segment_between_pivots:
event.state=REJECTED; return
if price_lower_low_by_frozen_buffer and cvd_higher_low
and C[now]>H[now-1] and C[now]<event.target:
stop=min_low_since_event-event.buffer
event.state=CONSUMED
check_expected_RR_then_order_on_next_quote_before_cutoff()
# A consumed event permits at most one submission; rejected quotes do not rearm it.
# Session-close and anchor-reset timers terminate pending events without another bar.
価格ピボットの時点でCVDを比較
CVD は積極的な買いボリュームから積極的な売りボリュームを差し引いた値を累積します。Sierra Chart は、AskVolume−BidVolume の実装と履歴データ要件 [3] を文書化しています。他のフィードでは、取引を異なる方法で分類する場合があります。分類方法、銘柄、契約、およびリセット規則を維持してください。同じインジケーター名でも、同じ測定値を意味するわけではありません。
CVDは、2つの価格ピボットのタイムスタンプで読み取ってください。CVDで魅力的な安値を独自に選択し、無関係な価格安値に結びつけないでください。累積リセットの一方の側のピボットを、もう一方の側のピボットと直接比較することはできません。価格安値が低いときにCVDの値が高いのは、特定の機関が供給を吸収していることを示すものではなく、単なる観測結果です。
レジームフィルターは過去のデータのみを参照します。終値が始値に戻るという理由でその日をレンジと分類すると、将来の情報が混入することになります。また、エントリー後にレンジから持続的なトレンドに移行することもあります。繰り返し発生する平均回帰シグナルによって制御不能な累積リスクが発生しないよう、試行回数の上限、クールダウン期間、セッションのリスク予算を事前に設定してください。
成功する経路と二つの失敗例
正規化した合成データを考えます。イベント前にμ=100、σ=1なら下限バンドは98です。ATRは1、ティック幅は0.01、b=0.1です。前の価格ピボットは98.5で、その時点のCVDは−800です。新しいイベントは97.5に達して98.2で引け、安値時点のCVDは−650です。その後の二本でも安値は更新されません。確認時の終値は98.5で直前の高値98.4を上回り、100ではまだ約定していません。
利用可能な売り気配98.55で買い、損切りを97.4に置くとリスクは1.15です。固定目標100までの値幅は1.45で、コスト前の約1.26Rです。提案する最低リワード/リスク比1.2を満たします。一方、売り気配98.8ではリスク1.4、利幅1.2となり条件を満たしません。平均値が近いだけで二Rの目標を設定できるわけではありません。
下落局面では、売りが再開し、97.3 に達し、ストップ注文が 97.35 で約定し、実際のエントリー価格から 1.20 を失います。別の取引なしのケースでは、価格は t+1 で 100 に触れ、確認により 98.5 に戻ります。このイベントはキャンセルします。遅延エントリーでは、実行可能になる前に発生した以前の反発を回収することはできません。
利確目標を固定し、確認後に約定させる
ベースラインは、ターゲットをイベント前の平均値に維持し、ストップをイベントからシグナルまでの最安値の下に設定し、約定後10バー後またはセッション終了前に決済します。ライブVWAPに追従するターゲットも別の戦略です。価格とVWAPの両方が下落する場合、ターゲットを下に移動することで、トレードあたりの報酬を減らしながら、ターゲット到達頻度を高めることができます。
買いは利用可能な売り気配で支払い、決済売りは約定可能な買い気配で代金を受け取ります。実際の注文方式と流動性も考慮します。先物の価格差を契約乗数で金額に換算し、注文価格を有効なティックに丸めます。損切り幅0.5ポイントに対してコスト0.1ポイントなら、他の手数料の前ですでに0.2Rを消費します。狭い損切りでは、気配の中間値で約定すると仮定した結果が特に楽観的になります。
上限バンドのショートバージョンは幾何学的に対称ですが、結果は別途報告してください。価格が2シグマからさらに外れるたびにポジションサイズを増やさないでください。取引の欠落、累積リセット、ゼロボリューム期間、および確認遅延中に終了するセッションをテストしてください。無効なデータは、暗黙的に補間された利益シグナルではなく、明示的な拒否を生成する必要があります。
基本仕様では、短縮取引日も含め予定されたセッション終了の五分前を新規エントリーの締切とします。各候補はsession_idを保持し、VWAPを使う場合はanchor_idも保持します。締切到達、セッション変更、アンカーのリセットで待機イベントを終了します。シグナル後の気配も締切前に受信する必要があります。後続の足が届かなくてもセッションタイマーが待機状態を取り消すため、足数のカウントを翌朝へ持ち越せません。この締切は本記事で定めた研究条件です。
各コンポーネントとその遅延をテストします。
まず、価格のみのバンドの回復をすべて行い、次にレジームゲート、CVDゲート、およびそれらの組み合わせを比較します。拒否されたイベントはデータセットに保持します。比較は、時間帯と以前のボラティリティに基づいて一致させます。そうしないと、組み合わせたルールが有用な乖離を特定することなく、単に静かな昼間の状況を選択するだけになる可能性があります。
検証中は重複するイベントをグループ化し、開発期間を未処理の年や市場状況から分離します。純期待値、売買回転率、ドローダウン、連続ストップを報告します。また、ピボット確認前に平均値に戻ったケースもカウントします。この統計は待機による機会費用を測定し、説得力のある過去のチャートと取引可能なシーケンスを区別するのに役立ちます。
将来のデータで行うペーパートレードでは、取引所のイベント時刻と手元での受信時刻を両方保存します。判断には、その判断より前に受信した情報だけを使います。仕様を固定し、未知の検証データでもコストと現実的な約定条件を織り込んで成り立つ場合に限り、より強い証拠を主張できます。コミュニティ投稿者の成績報告はこの検証の代わりにはなりません。
よくある落とし穴
最終終値を見てレンジ相場と分類する
一日が終わってから得られるデータでそれ以前の相場を分類すると、フィルターに未来情報が漏れます。
事前の規則なしに動く利確目標
動的なVWAPターゲットと固定された事前イベント平均は異なる戦略であり、それぞれ別の結果が必要となります。
私的なルールを再現すると主張する
カスタムブロックの欠落や未公開のしきい値により、ソース著者が報告したパフォーマンスを再現することができません。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
2シグマを超える動きは、価格が売られ過ぎであることを証明するものなのか?
いいえ。これは特定の推定量における距離を表しています。傾向の変化によって分布が変化し、変動幅が拡大する可能性があります。
取引分類が利用できない場合、OBVはCVDの代わりになりますか?
OBVは異なる機能を測定するため、積極的な取引デルタを再現することはできません。価格のみを測定するバージョン、またはOBVのバリアントを、それぞれ異なる名称と仕様でテストしてください。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Here's how being a dev helped me make YTD $104k (NET profit)Rogue-seeker on r/Daytrading. 投稿と議論を読みました。結果は自己申告で、一部ルールは非公開です。利益を独立に検証できたわけではありません。 確認日: .
- Volume Weighted Average PriceTradingView. VWAPとバンドの設定に関する説明。本記事の加重分散式は独自に定めた仕様です。 確認日: .
- Cumulative Delta Bars – VolumeSierra Chart. 売値/買値の取引量、履歴データ要件、リセット動作を定義します。プラットフォームの精度に関するマーケティングは、独立した証拠として扱われません。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード