資源の読み込みに... 荷物...

VWAPとスーパートレンドの買い/売戦略

作者: リン・ハーンチャオチャン開催日:2024年6月3日 10:45:14
タグ:VWAPATR

img

概要

この戦略は,VWAP (Volume Weighted Average Price) とスーパートレンド指標を組み合わせます.VWAPとの関係で価格の位置とスーパートレンド指標の方向を比較することで,購入・販売シグナルを決定します.価格がVWAPを超越し,スーパートレンドが正であるときに購入シグナルが生成され,価格がVWAPを超越し,スーパートレンドが負であるときに販売シグナルが生成されます.この戦略は,逆のシグナルが現れるまで前の信号の状態を記録することによって,重複信号を生成することも避けます.

戦略原則

  1. VWAP インディケーターを ta.vwap 関数で計算する.
  2. 超トレンド指標をta.supertrend関数を使用して計算し,調整可能なATR期間と倍数で計算する.
  3. 購入条件を決定する:現在の価格がVWAPより上を横切り,スーパートレンドの方向は正である.
  4. 販売条件を決定する:現在の価格はVWAPを下回り,スーパートレンドの方向はマイナスです.
  5. 前回の信号状態を記録し,同じ方向の連続信号を避ける.現在の信号が前の信号と異なる場合にのみ新しい取引信号が生成されます.

戦略 の 利点

  1. 市場動向と潜在的な転換点についてより包括的な評価を行うため,VWAPとスーパートレンド指標を組み合わせます.
  2. VWAP指標は,市場の真の動きをよりよく反映するボリュームを考慮します.
  3. スーパートレンド指標はトレンドフォローと振動フィルタリングの特徴があり,主要なトレンドを把握するのに役立ちます.
  4. 複製信号を避けるメカニズムは,取引頻度を削減し,取引コストを下げます.

戦略リスク

  1. 市場が不安定で 傾向が不明である時期では 戦略が誤った信号を 増やす可能性があります
  2. 戦略のパフォーマンスは,VWAPとスーパートレンドのパラメータの選択に依存します.異なる設定によって異なる結果が得られます.
  3. 戦略にはリスク管理とポジションサイズ化が含まれていない.これは,実際の応用においてリスク管理のための他の措置と組み合わせなければならない.

戦略の最適化方向

  1. トレンド確認メカニズムを導入し,移動平均値や他のトレンドインジケーターを用いて信号をさらにフィルタリングする.
  2. 過去のデータをバックテストして VWAP 長さ,ATR 期間,倍数の最適な組み合わせを見つけるためにパラメータ選択を最適化します.
  3. ストップ・ロストやテイク・プロフィートのようなリスク管理措置を導入し,個々の取引リスクを制御する.
  4. ポジションのサイズを最適化するために,固定分数やケリー基準などのマネーマネジメント戦略を組み込むことを検討します.

概要

VWAPとSupertrend Buy/Sell戦略は,2種類の異なる指標を組み合わせて,市場の動向と潜在的なターニングポイントを包括的に把握することを目的としている.戦略論理は明確で,実装し最適化することは簡単である.しかし,戦略のパフォーマンスがパラメータ選択に依存し,リスク管理対策がない.実用的なアプリケーションでは,異なる市場条件と取引要件に適応するためにさらなる最適化と精製が必要である.


/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="VWAP and Super Trend Buy/Sell Strategy", shorttitle="VWAPST", overlay=true)


//===== VWAP =====
showVWAP = input.bool(title="Show VWAP", defval=true, group="VWAP")
VWAPSource = input.source(title="VWAP Source", defval=hl2, group="VWAP")
VWAPrice = ta.vwap(VWAPSource)
plot(showVWAP ? VWAPrice : na, color=color.teal, title="VWAP", linewidth=2)


//===== Super Trend =====
showST = input.bool(true, "Show SuperTrend Indicator", group="Super Trend")
Period = input.int(title="ATR Period", defval=10, group="Super Trend")
Multiplier = input.float(title="ATR Multiplier", defval=2.0, group="Super Trend")


// Super Trend ATR
Up = hl2 - (Multiplier * ta.atr(Period))
Dn = hl2 + (Multiplier * ta.atr(Period))
var float TUp = na
var float TDown = na
TUp := na(TUp[1]) ? Up : close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := na(TDown[1]) ? Dn : close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
var int Trend = na
Trend := na(Trend[1]) ? 1 : close > TDown[1] ? 1 : close < TUp[1] ? -1 : Trend[1]


Tsl = Trend == 1 ? TUp : TDown
linecolor = Trend == 1 ? color.green : color.red
plot(showST ? Tsl : na, color=linecolor, style=plot.style_line, linewidth=2, title="SuperTrend")


// Buy/Sell Conditions
var bool previousBuysignal = false
var bool previousSellsignal = false


buysignal = not previousBuysignal and Trend == 1 and close > VWAPrice
sellsignal = not previousSellsignal and Trend == -1 and close < VWAPrice


// Ensure the signals are not repetitive
if (buysignal)
    previousBuysignal := true
    previousSellsignal := false
else if (sellsignal)
    previousBuysignal := false
    previousSellsignal := true


// Execute buy and sell orders
if (buysignal)
    strategy.entry("Buy", strategy.long)
if (sellsignal)
    strategy.entry("Sell", strategy.short)


// Plot Buy/Sell Labels
//plotshape(buysignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.normal)
//plotshape(sellsignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.normal)


関連性

もっと