WaveTrendインジケーターに基づくトレンドフォロー戦略

EMA SMA HLCC3 ESA
作成日: 2024-04-28 13:56:27 最終変更日: 2024-04-28 13:56:27
コピー: 1 クリック数: 1517
1
フォロー
1617
フォロワー

WaveTrendインジケーターに基づくトレンドフォロー戦略

概要

WaveTrend Cross LazyBear戦略は,WaveTrend指標に基づいた取引戦略である.この戦略は,2つの異なる周期のWaveTrend指標ラインを使用し,より速い周期のWaveTrend指標ラインがより遅い周期のWaveTrend指標ラインを横断すると買入シグナルを生成し,より速い周期のWaveTrend指標ラインがより遅い周期のWaveTrend指標ラインを横断すると売出シグナルを生成する.この戦略は,市場状態を判断するのに役立つために,オーバーバイとオーバーセール領域も設定している.

戦略原則

この戦略の核心は,次のステップで計算されるWaveTrend指標である.

  1. 典型的な価格 ((AP) を計算し,それは最高価格,最低価格,および閉店価格の平均値に等しい.
  2. APの指数移動平均 ((ESA) を計算し,周期はn1。
  3. APとESAの差値の絶対値の指数移動平均dを計算し,周期はn1。
  4. 計算する指標CIは, ((AP-ESA) / (0.015 * d) 〜に等しい.
  5. CIの指数移動平均TCIを計算し,周期はn2で,WaveTrend指標が得られる。

この戦略は,2つの異なる周期 ((デフォルト10と21) のWaveTrend指標ラインを使用し,それぞれWT1とWT2と記されている.WT1の上を通過するとWT2が買い信号を生じ,WT1下を通過するとWT2が売り信号を生じます.さらに,この戦略は,4つの補助判断レベルも設定しています. 超買いレベル1,超買いレベル2,超売りレベル1および超売りレベル2,市場状態を補助判断するために.

戦略的優位性

  1. WaveTrendは,市場動向を捉えるために,動力と波動率の特徴を組み合わせています.
  2. 双周期のWaveTrend指標は,いくつかのノイズ信号を効果的にフィルターします.
  3. 超買超売のレベルを設定することで,市場波動が大きいときに戦略が頻繁に取引することをある程度防ぐことができます.
  4. 戦略の論理は明確で,理解し,実行しやすい.

戦略リスク

  1. この戦略は,震動の多い都市で,偽信号を多く発生させる可能性がある.
  2. パラメータの選択は,戦略のパフォーマンスに大きく影響し,異なるパラメータは,戦略のパフォーマンスに大きな違いをもたらす可能性があります.
  3. 戦略はリスク管理を考慮していないので,極端な状況では大きな撤退が起こりうる.

戦略最適化の方向性

  1. 長期平均線の方向など,トレンドフィルタリング条件を加えることを考慮して,波動的な市場における偽信号を減らすことができます.
  2. 超買超売のレベルを最適化して,異なる市場状況により動的に適応できるようにする.
  3. 単一取引のリスクを制御するために,止損と停止のメカニズムを追加できます.
  4. パラメータ最適化により最適なパラメータの組み合わせを検索できます.

要約する

WaveTrend Cross LazyBear策略は,WaveTrend指標に基づくトレンド追跡策略で,二重周期の指標設計と超買い超売りレベルの補助判断により,トレンドをキャプチャする一方で,ある程度のリスク管理も兼ねている.しかしながら,この策略は,振動的な市場で偽信号が多く現れ,厳格なリスク管理の手段が欠如しているため,実用的なアプリケーションでは,さらなる最適化と改善が必要である.

ストラテジーソースコード
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © burakaydingr

//@version=5
strategy("WaveTrend with Crosses [LazyBear]", shorttitle="WT_CROSS_LB", overlay=true)

// Kullanıcı girişleri
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-60, title="Over Sold Level 1")
osLevel2 = input(-53, title="Over Sold Level 2")

// Temel hesaplamalar
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)

// WaveTrend göstergeleri
wt1 = tci
wt2 = ta.sma(wt1, 4)

// Al ve Sat Sinyalleri
buySignal = ta.crossover(wt1, wt2)
sellSignal = ta.crossunder(wt1, wt2)

// Alım ve Satım pozisyonları
if (buySignal)
    if (strategy.position_size <= 0) // Eğer şu anda açık bir satış pozisyonu varsa, onu kapat
        strategy.close("Sell")
    strategy.entry("Buy", strategy.long, comment="Buy Signal: Price crossed above WT2")

if (sellSignal)
    if (strategy.position_size >= 0) // Eğer şu anda açık bir alım pozisyonu varsa, onu kapat
        strategy.close("Buy")
    strategy.entry("Sell", strategy.short, comment="Sell Signal: Price crossed below WT2")

// Renkler ve diğer görseller
plot(0, color=color.new(color.gray, 0), title="Zero Level")
plot(obLevel1, color=color.new(color.red, 0), title="Overbought Level 1")
plot(osLevel1, color=color.new(color.green, 0), title="Oversold Level 1")
plot(obLevel2, color=color.new(color.purple, 0), title="Overbought Level 2")
plot(osLevel2, color=color.new(color.orange, 0), title="Oversold Level 2")

plot(wt1, color=color.new(color.red, 0), title="WT1")
plot(wt2, color=color.new(color.blue, 0), title="WT2")
plot(wt1-wt2, color=color.new(color.purple, 80), style=plot.style_area, title="WT1-WT2 Area")

// İşaretler
plotshape(buySignal, location=location.absolute, color=color.new(color.yellow, 0), style=shape.circle, size=size.small, title="Buy Signal")
plotshape(sellSignal, location=location.absolute, color=color.new(color.red, 0), style=shape.circle, size=size.small, title="Sell Signal")