記事の目次
根拠と適用範囲
SMBはCLOVの取引レビューを提供し、AlphatrendsはAVWAPについて説明し、TradingViewは計算方法を文書化しています。これらは、提案されたアルゴリズムの検証済みリターンではなく、概念と定義を確立するものです。
実践の流れ
- トレンドを確立する価格、VWAPの方向、および活動条件が必要です。
- アンカーを固定参照とATRはプルバックの前にあります。
- 最初の再テストを待つ価格水準と取引量を別々に評価する。
- 価格の回復を確認再テスト高値と現在のVWAPを上回って引け。
- エントリーと決済シグナル後の約定、損切り保護、セッション内の決済を使います。
反落前にトレンドを確立する
SMBは、寄り付き後の強い上昇からVWAPへ押し戻されたCLOVの取引を解説しています。[1] Alphatrendsは価格の位置とAVWAPの方向を説明しています。[2] 本記事はその考え方を観測可能な状態へ変換しますが、実務家の板・約定の読み取り過程すべてを再現するとは主張しません。
個々の約定によるVWAPは、アンカー以降のΣ(price×quantity)/Σquantityです。OHLCVを使う場合、代表価格(H+L+C)/3で足単位の近似を求めます。[3] この近似をすべての約定の正確な平均と呼んではいけません。結果を比較する前に、約定単位か足単位かを選び、計算の版を記録します。
VWAPを下回る価格は、一時的な反落または下落の始まりを示している可能性があります。トレンド候補は、状況がまだ強いうちに記録し、その後、押し目を待ちましょう。VWAPは参考統計であり、当該銘柄を保有しているすべての投資家の取得原価や、保有ポジションの直接的な指標ではありません。
トレンド候補から回復確認まで
アンカーから少なくとも 10 バー経過後、提案候補 c には C[c]>VWAP[c]、VWAP[c]>VWAP[c−5]、C[c]>EMA50[c]、および RVOL_cum[c]≥1.2 が必要です。ここで、EMA50 は以前の日の通常のセッション バーをまたいで継続し、VWAP は各セッションをリセットします。A=ATR14[c−1]、b=max(2 ticks,0.10A)、および eps=max(2 ticks,0.15A) をフリーズします。
次の 5 本のバーで、最初の再テスト r を L[r]≤VWAP[r]+eps と C[r]≥VWAP[r]−eps でロックします。r で終わる 3 本のバーの平均 RVOL は ≤0.8 でなければなりません。確認前に VWAP−eps を下回って終値をつけると、候補はキャンセルされます。すべてのプルバック バーが VWAP より上に留まることを要求しないでください。そうすると、調査対象の回復が除外される可能性があります。
r の後の 3 本のバーの間、H[r]+b と VWAP[t] の両方を上回る最初の終値がシグナルを発します。r からシグナルまでの最小安値から b を引いた値より下でストップし、後ほど実行可能な価格で買います。すべての長さ、EMA の選択と閾値が提案されています。ボリュームの失敗は、より魅力的な別の r を許可するのではなく、その候補を拒否します。
計算準備にはアンカー後の10本だけでなく、必要な指標のうち最長の履歴が必要です。EMA50、ATR、または同じ時間帯のRVOL履歴がなければ、候補はinsufficient_dataとします。EMAをセッション間で継続するのは明示的な選択です。日次リセットに変えるなら、別の準備期間と新しい版が必要です。
after_candidate_close(c):
if not full_EMA_ATR_RVOL_history: reject_insufficient_data(); return
candidate = freeze(ATR_reference,buffers,anchor_id,session_id,
cutoff=session_end-5_minutes)
if received_close_time(c)>=candidate.cutoff: expire(); return
r = None
for u in c+1..c+5:
if changed_anchor_or_session(candidate,u) or received_close_time(u)>=candidate.cutoff:
expire(); return
if C[u]<VWAP[u]-eps: cancel(); return
if L[u]<=VWAP[u]+eps and C[u]>=VWAP[u]-eps:
r=u; break
if r is None: expire_no_retest(); return
if missing_rvol(r-2,r) or mean(RVOL_bar[r-2:r+1])>0.8:
reject_candidate(); return
for t in r+1..r+3:
if changed_anchor_or_session(candidate,t) or received_close_time(t)>=candidate.cutoff:
expire(); return
if C[t]<VWAP[t]-eps: cancel(); return
if C[t]>H[r]+b and C[t]>VWAP[t]:
stop=min(L[r:t+1])-b
consume_candidate_then_order_on_next_quote_if_before_cutoff()
return
expire_no_confirmation()
# Session-close and anchor-reset events cancel pending candidates immediately.
アンカーと出来高条件に未来情報を持ち込まない
ベースラインアンカーは通常取引開始時の値です。カタリストアンカーは既知の公開時刻が必要です。過去のスイングアンカーはスイングから計算できますが、確認後にのみ使用できます。損失後にアンカーを最も良さそうな安値に移動すると、計算と仮説の両方が変わります。
提案されている RVOL_cum は、累積セッションボリュームを、20 以前のセッションにおける同時刻の累積ボリュームの中央値で割ったものです。再テストの測定では、一日全体の回転率ではなく、同じ時間帯の個々の RVOL 値を使用します。分母が欠落またはゼロの場合は、通常のボリュームではなく、入手できない情報です。
SMB レビューでは、完了した 15 分ボリューム チェックと、それ以前のエントリ [1] 以降に使用された情報を区別します。09:38 の決定では、09:45 までのボリュームを使用できません。09:45 まで待つか、09:38 で使用可能なフィルタを定義します。高いアクティビティは、特に大きな価格の押し戻しなしに VWAP を価格に引き寄せる可能性もあるため、価格パスと移動参照の両方を記録します。
合成データによる回復とトレンド失敗例
候補生成時にC=102、VWAP=100.80、その五本前の値を100.40、EMA50=100.30、RVOL_cum=1.6とします。A=1、tick=0.01ならb=0.10、eps=0.15です。その後の再テストではVWAP101.00、安値100.95、高値101.25、終値101.05で、三本の平均RVOL0.65は条件を満たします。
二本後のバーでは、終値101.45が101.35と、その時点のVWAP101.08を上回ります。買い注文は101.50で約定します。rから確認までの最安値は100.90なので、ストップは100.80、リスクは0.70、2Rの目標は102.90です。VWAPは各バーで利用可能なデータから再計算しなければなりません。この例では、それが固定され続けるとは仮定していません。
エントリー後、新情報でトレンドが反転し、損切りが100.75で約定すると0.75の損失です。別のケースで、再テストの終値100.70がVWAP101.00−0.15を下回るなら、エントリー前に候補を取り消します。価格の下へ新しい平均を描き元の設定を保つためだけに、アンカーをその安値100.70へ移してはいけません。
エントリー・決済と追いかけ買いのコスト
シグナル確認後、注文を送信する前に観測された気配でリスクと残りの利幅を評価します。大きなギャップは事前のリスク上限を超える場合があります。未送信なら注文を見送れますが、すでに待機中の逆指値エントリー注文は、取消前の約定を取引記録から消してはいけません。この二つの約定方針を混同しないでください。
提案されたベースラインは、2Rをターゲットとし、構造的なトレード保護とセッション終了前の清算を使用します。20バーのタイムストップは別途テストできます。日中の損失がひっそりとスイングポジションに変わってはならず、オーバーナイトエクスポージャーには新しいギャップモデルと予算が必要です。
ベンチマークに対する相対的な強さも別のフィルターとして使用できます。同期されたデータを使用して、同じ開始時点からのリターンを比較します。これはRSIとは異なります。VWAPを一緒に取り戻す相関性の高い銘柄は、それぞれが独立した完全なリスク配分を受けるのではなく、ポートフォリオの制約を共有する必要があります。
VWAP を深く通過するヒゲは、終値ベースの再テスト形状を満たしつつ、広いストップ幅を生み出す可能性があります。実行ルールによって取引が拒否された場合でも、候補テーブルに保持してください。そうしないと、パターンの見かけ上の有効性が、文書化されていないストップ幅の選択と絡み合ってしまいます。
基本仕様では、短縮取引日も含め予定されたセッション終了の五分前を新規エントリーの締切とします。各候補はsession_idを保持し、VWAPを使う場合はanchor_idも保持します。締切到達、セッション変更、アンカーのリセットで待機イベントを終了します。シグナル後の気配も締切前に受信する必要があります。後続の足が届かなくてもセッションタイマーが待機状態を取り消すため、足数のカウントを翌朝へ持ち越せません。この締切は本記事の研究条件です。
通常のトレンド中の押し目にVWAPを加える効果はあるか
同じ価格トリガーによるスイングまたはEMAベースのプルバックと比較し、次にVWAPの位置、傾き、累積RVOL、およびドライアップを1つずつ追加します。組み合わせ全体を一度に追加すると、どの要素が役立ち、どの要素が単にサンプルを減少させるだけなのかが不明瞭になります。
時間帯、VWAPの傾き、トレンド/レンジの状況、エントリー前に判明していた触媒に基づいて結果をグループ化します。候補銘柄数、再テスト率、約定数、ネットR、MAE/MFE、および機会損失を報告します。有名なミーム株の勝者だけでなく、特定の時点における銘柄群を使用します。
プレフィックスリプレイでは、開発中のVWAPと正しいカレンダーが保持される必要があります。停止距離に対するコストをストレステストし、通常営業時間と延長営業時間のアンカーを個別にテストします。1つのCLOV成功例から、すべてのVWAPタッチの成功率を推定することはできません。
最後に、最初の接触から確認までの実際の遅延時間を比較してください。トレンドの継続が通常、選択したトリガーよりも前に発生する場合、失敗率を低く抑えることは、残りの報酬が少なくなるという代償を伴う可能性があります。このトレードオフは、理想的な接触価格の充足によって隠されるのではなく、結果に直接反映されるべきです。
よくある落とし穴
VWAP のすべてのタッチを購入
トレンドの状況と確認条件がなければ、異なる相場状態が混ざります。
結果に基づいてアンカーを選択する
結果を見てからアンカーを選ぶと、当時の判断では存在しなかった支持線を作れてしまいます。
未来の出来高を使用する
15-分条件では、8分目のエントリを選択できません。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
VWAPの上昇はサポートを保証するものでしょうか?
いいえ。これは完了した取引を要約したものであり、新しい取引の流れによって傾向は即座に変化する可能性があります。
アンカーはニュースリリースでも構いませんか?
はい、その時刻が既知で固定されている場合です。それはセッションVWAPと比較するための別のバリアントです。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- How to use VWAP to buy a Pullback in a Meme StockSMB Capital. 2021年六月29日のCLOV解説の原文書き起こしを読みました。戦略全体の口座明細はありません。 確認日: .
- Anchored VWAP explainedBrian Shannon / Alphatrends. アンカー、価格位置、方向の公開解説を読みました。有料書籍全体を読んだわけではありません。 確認日: .
- Volume Weighted Average PriceTradingView. 代表価格による計算とアンカー設定を読みました。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード