VWAPブレイクアウト追跡戦略は,トレンド方向を特定するためにVWAP指標を使用するトレンドフォロー戦略である.最近の5バーの閉値に基づいてVWAP全体で価格ブレイクアウトを検出する. 3つの連続バーが同じ方向にVWAPブレイクアウトした場合,3番目のバーの最高/最低価格が記録される.価格が記録された最高/最低価格レベルを突破したとき,取引信号が生成される.
この戦略の主な利点は,超短期的なモメンタム取引のブレイクアウト機会に迅速に対応することです.しかし,ポジションの大きさが大きすぎるリスクもあります.これはポジションサイジングパラメータを調整することによって最適化できます.
この戦略で使用されるコア指標はVWAPである.VWAPはボリューム重量平均価格を表す.これはボリューム重量平均価格ラインである.それは市場の合意価格レベルを反映している.
この戦略は,最新の5バーとVWAP指標の閉値をリアルタイムで計算します.また,連続したVWAPブレイクの特定の種類をチェックするための一連の論理変数を定義します.
取引シグナルは,価格ブレイクによって作成された新しい最高/最低価格に基づいて生成されます.論理は:
価格ブレイクの方向性を特定し,ブレイクの結果となる新しい最高/最低価格を取引することです.
デフォルトのポジションサイズは,資本の100%に設定されています.これはすべての取引の完全なポジションを表します.この戦略の短期的性質を考えると,ポジションサイズはリスクを制御するために削減できます.
出口ルールはVWAPクロスアンダー/クロスオーバーである.VWAPは脱走損失を避けるために後続ストップ損失として機能する.
VWAPのブレークアウト追跡戦略の最大の利点は,短期的な価格動向とトレンドフォローの機会を把握するための迅速な対応である.主な利点は以下のとおりである.
この戦略は,高周波の短期取引に特に適しており,利益の迅速なロックを可能にします.それは原油や金などの不安定な楽器で最もうまく機能します.
この戦略には効率的な追跡能力があるものの,考慮すべきリスクは依然としてあります.
次の最適化は,これらのリスクを軽減するのに役立ちます.
超短期的な追跡戦略として,以下の分野からさらなる最適化が行うことができます.
多指標統合: 厳格なフィルタルルールを設定し,正確性を向上させるために他の波動性とモメント指標を組み合わせる
ダイナミック位置サイズ: 変動する市場状況に基づいてポジションサイズを動的に調整します. 変動が急増するときに減少し,強いトレンドの間に増加します.
調整式停止: ATRおよび他の価格アクション信号に基づく適応性トレーリングストップメカニズムに固定VWAPストップをアップグレードする.
リスク管理: リスク制御のために最大保有期間,日当たりの利益/損失制限,引き上げ制限など,より多くのリスク指標の制約を設定します.
機械学習: 過去の貿易データを収集し,機械学習モデルを採用し,より高い安定性のための最適な戦略パラメータを見つけます.
VWAPのブレイクアウト追跡戦略は,非常に実用的な高周波取引システムである.短期的なブレイクアウト機会に迅速に対応し,迅速なスカルピングのためにフルポジションを使用して価格を追跡する. VWAPの内蔵トレーリングストップはリスクを制限するのに役立ちます.
この戦略は,マルチインジケータフィルタリング,ダイナミックポジションサイズ化,適応停止,機械学習などのさらなる最適化により,より優れた効率と安定性を達成することができます.高周波トレーダーには大きな可能性があります.この戦略の継続的な強化は,実用的な適用性により強く推奨されています.
/*backtest start: 2023-12-12 00:00:00 end: 2023-12-19 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="VWAP Push", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true) //VWAP vwap = ta.vwap(close) plot(vwap, color=color.black, title="vwap") //Last 5 Closes closeBarPrevious5 = close[5] closeBarPrevious4 = close[4] closeBarPrevious3 = close[3] closeBarPrevious2 = close[2] closeBarPrevious1 = close[1] closeBarCurrent = close //is_1530 = (hour == 15) and (minute == 30) is_push_up = (closeBarCurrent > closeBarPrevious1) and (closeBarPrevious1 > closeBarPrevious2) and (closeBarPrevious2 > closeBarPrevious3) and (closeBarPrevious4 < vwap) and (closeBarPrevious3 > vwap) is_push_down = (closeBarCurrent < closeBarPrevious1) and (closeBarPrevious1 < closeBarPrevious2) and (closeBarPrevious2 < closeBarPrevious3) and (closeBarPrevious4 > vwap) and (closeBarPrevious3 < vwap) var float hi = na var float lo = na hi := is_push_up ? high : hi lo := is_push_down and (close < vwap) ? low : lo plot(hi, "High", color.green, 1, plot.style_circles) plot(lo, "Low", color.red, 1, plot.style_circles) // Conditions longCondition = ta.crossover(close,hi) exitLong = ta.crossunder(close,vwap) shortCondition = ta.crossunder(close,lo) and (close < vwap) exitShort = ta.crossover(close,vwap) // Entries Exits if (longCondition) strategy.entry("Long", strategy.long) if (exitLong) strategy.close("Long") if (shortCondition) strategy.entry("Sell", strategy.short) if (exitShort) strategy.close("Sell")