ボラティリティトレンドオシレーターダイバージェンス戦略、

WT VWAP
作成日: 2024-05-28 17:43:54 最終変更日: 2024-05-28 17:43:54
コピー: 0 クリック数: 721
1
フォロー
1617
フォロワー

ボラティリティトレンドオシレーターダイバージェンス戦略、

概要

この戦略は,WaveTrendの振動指数 ((WT) と取引量重み平均価格 ((VWAP) を組み合わせて,価格と指標の偏差を識別して潜在的なトレンド反転の機会を捉えます.この戦略は,ATR ((Average True Range) を使用して,ストップポジションを決定し,アカウントのリスクパーセントに応じてポジションを動的に調整します.この戦略の主な優点は,トレンドを追跡する能力とリスク管理策にあります.しかし,振動的な市場で損失を伴う可能性があります.

戦略原則

  1. WaveTrend振動指数 ((WT) を計算する:現在の価格とチャネルと平均値の差を比較して,動力の振動指数を生成する.
  2. 取引量加重平均価格 ((VWAP) を計算する:取引量を使用して移動平均価格を計算する.
  3. 価格とWT指数の離散を識別する:価格が高/低を新たに創り,指数が高/低を新たに創り出せなかった場合,トレンドの逆転が起こり得ることを示している.
  4. 入場条件:看板が逆転していると認識すると,多額のポジションを開く.看板が逆転していると認識すると,平仓する.
  5. 止損:ATR ((Average True Range) に基づいて動的止損位置を設定する.
  6. ポジション規模: 口座リスクのパーセントとストップダストの距離に応じて動的に調整される取引毎のポジション規模.
  7. 背景の色:指標の超買い/超売りレベルに応じて背景の色を変更して,追加の視覚的ヒントを提供する.

優位分析

  1. トレンド追跡:価格と指標の偏差を特定することで,潜在的トレンド転換の機会を捉える.
  2. リスク管理:ATRベースのダイナミック・ストップ・ロスを使用し,リスクのパーセントに応じてポジションのサイズを調整することで,潜在的損失を制御するのに役立ちます.
  3. ビジュアルヒント:背景の色は,指標のオーバーバイ/オーバーセール状態に応じて変化し,トレーダーに追加のビジュアル信号を提供します.
  4. 柔軟性:この戦略のパラメータ (チャネル長さ,平均長さ,オーバーバイ/オーバーセール等) は,異なる市場条件や取引スタイルに応じて調整できます.

リスク分析

  1. 揺動市場: 明確なトレンドがない市場条件下では,この戦略は連続して損失を被る可能性があります.
  2. パラメータ最適化:この戦略のパフォーマンスは,パラメータの選択に大きく依存し,パラメータの不適切な設定は,次等最適化結果につながる可能性があります.
  3. 過剰取引: 頻繁に出入りするシグナルにより,取引コストが高くなり,戦略の全体的なパフォーマンスに影響する可能性があります.

最適化の方向

  1. トレンドフィルタリング: 偏差が発生すると,潜在的な偽信号をフィルタリングするために,追加のトレンド確認指標 (移動平均など) を導入する.
  2. ダイナミックパラメータ:市場の波動性に応じて指標パラメータを調整し,波動が低いときにより短いチャネルと平均長さを使用し,波動が大きいときにより長いパラメータを使用する.
  3. ストップス: リスク・リターン比率またはターゲット価格に基づくダイナミックストップレベルを導入し,既得利益のポジションをより良く管理する.
  4. 多空のフィルター:市場の全体的なトレンド方向 (例えば,長期移動平均) に基づいて,トレンド信号をフィルターし,トレンド方向のみで取引する.

要約する

WaveTrend Oscillator Divergence Strategyは,波動的なトレンド指標と取引量重み平均価格を組み合わせて,潜在的トレンド反転の機会を識別する.この戦略の優点は,トレンド追跡能力とリスク管理策にあるが,波動的な市場ではリスクにさらされる可能性がある.追加のフィルタリング条件,動的パラメータ調整,改善された出場ルールを導入することにより,この戦略のパフォーマンスをさらに最適化することができる.

ストラテジーソースコード
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("PipShiesty Swagger", overlay=true)

// WaveTrend Oscillator (WT)
n1 = input.int(10, "Channel Length")
n2 = input.int(21, "Average Length")
obLevel1 = input.float(60.0, "Overbought Level 1")
obLevel2 = input.float(53.0, "Overbought Level 2")
osLevel1 = input.float(-60.0, "Oversold Level 1")
osLevel2 = input.float(-53.0, "Oversold Level 2")

ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

// VWAP
vwap = ta.vwma(close, n1)

// Signal Line
wt1 = tci
wt2 = ta.sma(wt1, 4)

// Bullish and Bearish Divergences
bullishDivergence = (ta.lowest(close, 5) > ta.lowest(close[1], 5)) and (wt1 < wt1[1]) and (close > close[1])
bearishDivergence = (ta.highest(close, 5) < ta.highest(close[1], 5)) and (wt1 > wt1[1]) and (close < close[1])

// Plot WaveTrend Oscillator
plot(wt1, title="WT1", color=color.blue)
plot(wt2, title="WT2", color=color.red)

// Plot Divergences
plotshape(series=bullishDivergence, location=location.belowbar, color=color.green, style=shape.labelup, title="Bullish Divergence")
plotshape(series=bearishDivergence, location=location.abovebar, color=color.red, style=shape.labeldown, title="Bearish Divergence")

// Risk Management Parameters
riskPercentage = input.float(1, title="Risk Percentage per Trade", minval=0.1, step=0.1) / 100
stopLossATR = input.float(1.5, title="Stop Loss ATR Multiplier", minval=0.5, step=0.1)

// ATR Calculation
atr = ta.atr(14)

// Position Size Calculation
calculatePositionSize(stopLoss) =>
    riskAmount = strategy.equity * riskPercentage
    positionSize = riskAmount / stopLoss
    positionSize

// Entry and Exit Logic with Stop Loss
if bullishDivergence
    stopLoss = low - atr * stopLossATR
    positionSize = calculatePositionSize(close - stopLoss)
    strategy.entry("Buy", strategy.long, qty=positionSize)
    strategy.exit("Sell", from_entry="Buy", stop=stopLoss)

if bearishDivergence
    strategy.close("Buy")

// Plot VWAP
plot(vwap, title="VWAP", color=color.orange)

// Background color to indicate Overbought/Oversold conditions
bgcolor(wt1 > obLevel1 ? color.new(color.red, 90) : na, title="Overbought Level 1")
bgcolor(wt1 < osLevel1 ? color.new(color.green, 90) : na, title="Oversold Level 1")
bgcolor(wt1 > obLevel2 ? color.new(color.red, 70) : na, title="Overbought Level 2")
bgcolor(wt1 < osLevel2 ? color.new(color.green, 70) : na, title="Oversold Level 2")