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

WaveTrend オシレーター ダイバージェンス 戦略

作者: リン・ハーンチャオチャン, 日付: 2024-05-28 17:43:54
タグ:WTVWAP

img

概要

この戦略は,波動トレンドオシレーター (WT) とボリューム重量平均価格 (VWAP) を組み合わせ,価格と指標との間の差異を特定することによって潜在的なトレンド逆転機会を把握する.この戦略は,ストップ損失レベルを決定するために平均真要レンジ (ATR) を使用し,アカウントリスクパーセントに基づいてポジションサイズを動的に調整する.戦略の主な強みはトレンドフォローする能力とリスク管理措置にあります.しかし,不安定な市場で損失を伴う可能性があります.最適化方向性には,追加のフィルターを追加し,エントリー&エクジットルールを改善することが含まれます.

戦略の原則

  1. WaveTrend オシレーター (WT) を計算する.現在の価格とチャネルと平均を比較してモメントオシレーターを生成する.
  2. ボリューム重量平均価格 (VWAP) を計算する: ボリューム重量移動平均価格を計算する.
  3. 価格とWT指標との間の差異を特定する.価格が新しい高値/低値に達し,指標がそうしない場合,潜在的なトレンド逆転が示される.
  4. 入場条件:上昇差が確認された場合,ロングポジションを開く.下落差が確認された場合,ポジションを閉じる.
  5. ストップ・ロース: 平均真の範囲 (ATR) をベースに動的ストップ・ロースレベルを設定する.
  6. ポジションサイズ: 口座リスクパーセントとストップロスの距離に基づいて,各取引のポジションサイズを動的に調整します.
  7. 背景色: 指標の過剰購入/過剰販売レベルに基づいて背景色を変更し,追加の視覚的なヒントを提供します.

利点を分析する

  1. トレンドフォロー:価格と指標の間の差異を特定することで,戦略は潜在的なトレンド逆転の機会を把握することができます.
  2. リスク管理: ATR ベースの動的ストップ・ロースとリスクパーセントに基づくポジションサイズの使用は,潜在的な損失を制御するのに役立ちます.
  3. ビジュアル・シグナル: 背景の色は,指標の過剰購入/過剰販売状態に基づいて変化し,トレーダーに追加のビジュアル・シグナルを提供します.
  4. 柔軟性: 戦略のパラメータ (例えばチャネル長さ,平均長さ,過買い/過売りレベル) は,異なる市場状況と取引スタイルに合わせて調整できます.

リスク分析

  1. 不安定な市場: 明確な動向がない市場環境では,戦略は連続した損失を伴う可能性があります.
  2. パラメータ最適化: 戦略のパフォーマンスは,パラメータの選択に大きく依存し,パラメータの設定が最適でない場合,平均以下の結果をもたらす可能性があります.
  3. 過剰取引: 頻繁に入力・アウトシグナルが発信されれば,高い取引コストがかかり,戦略の全体的なパフォーマンスに影響を与えます.

オプティマイゼーションの方向性

  1. トレンドフィルター: トレンド確認の追加指標 (例えば移動平均値) を導入し,潜在的な誤った信号をフィルタリングします.
  2. ダイナミックパラメータ: 低波動性ではより短いチャネルと平均長さ,高波動性ではより長いパラメータを使用して,市場の波動性に基づいて指標パラメータを調整する.
  3. 収益率: 収益性の高いポジションをよりうまく管理するために,リスク・リターン比または目標価格に基づいて動的な収益率を導入する.
  4. ロング/ショートフィルター: 市場の全体的なトレンド方向 (例えば,長期移動平均値) に基づいて,トレンド方向での取引のみを行うようにシグナルをフィルターする.

概要

WaveTrendオシレーターダイバージェンスの戦略は,潜在的トレンド逆転の機会を特定するためにWaveTrend指標とボリューム重量平均価格を組み合わせます.この戦略の強みはトレンドフォロー能力とリスク管理措置にありますが,不安定な市場でリスクに直面することがあります.戦略は追加のフィルター,ダイナミックパラメータ調整,および改善されたエントリー&エクジットルールを導入することによってさらに最適化できます.戦略を実施する前に徹底的なバックテストと前向きな分析は重要です.


/*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")


関連性

もっと