ダイナミックトラッキング波トレンド戦略

EMA SMA HLC MA
作成日: 2024-12-20 16:17:27 最終変更日: 2024-12-20 16:17:27
コピー: 3 クリック数: 413
1
フォロー
1617
フォロワー

ダイナミックトラッキング波トレンド戦略

概要

この戦略は,WaveTrend指標とトレンド追跡に基づいた定量取引システムである. WaveTrend指標と移動平均を組み合わせることで,完全な取引意思決定の枠組みを形成する. 戦略は,EMAとSMAを使用して,波浪のトレンド値と市場の全体的なトレンドを計算し,超買い超売り値を設定することにより,市場の転換点を識別し,トレンドフィルターと組み合わせて取引の正確性を向上させる.

戦略原則

戦略の核心は以下のステップを踏まえて実現する:

  1. まず,HLC平均値 (最高値,最低値,終値の平均値) を計算します.
  2. HLCの平均値をEMAで平滑処理すると,ESA線が得られる.
  3. HLC平均値とESA線との差を計算し,EMAを使用して平滑化
  4. 偏差に基づいてK値を計算し,2回EMAを平らめることで最終的なTCI線が得られる
  5. 長期トレンドラインをトレンドフィルターとしてSMAで計算する
  6. TCIラインが超買超売のレベルを突破し,トレンドの方向に合致すると,取引シグナルが生成されます.

戦略的優位性

  1. 信号の信頼性: 偽信号を効率的に低減するために,WaveTrend指標とトレンドフィルターを組み合わせる
  2. リスク管理が完ぺき: 明確な超買超売の値が設定され,時効的な止損を助ける
  3. 適応性:戦略のパラメータは,異なる市場条件に柔軟に調整できます
  4. 操作論理の明晰さ:入場・出場条件が明確で実行が容易である
  5. 総合分析:短期的な変動と長期的傾向を考慮し,取引の安定性を向上させる

戦略リスク

  1. トレンド反転のリスク:激しい波動の中,後退の可能性
  2. パラメータの感度: 異なるパラメータの組み合わせによって、まったく異なる結果が生じる可能性があります。
  3. 市場の適応性: 変動する市場では頻繁に取引が起こりうる
  4. 資金管理:市場の波動に対応するためにポジションを合理的に管理する
  5. テクノロジー依存:技術依存指数は基本的な要素を無視する

戦略最適化の方向性

  1. 波動性フィルターを追加:高波動性期間の取引の値調整
  2. 多周期分析の導入:異なる時間周期を組み合わせた信号の精度向上
  3. オプティマイゼーションパラメータの自己適応:市場の状況に応じて指標パラメータの動的調整
  4. ストップ・ストップ・損失の改善: ダイナミックなストップ・ストップ・損失の増強
  5. 交差量確認を追加:交差量分析を組み合わせて信号信頼性を向上させる

要約する

この戦略は,WaveTrend指標とトレンドフィルターを巧妙に組み合わせて,堅牢な取引システムを構築しています.戦略は,操作の簡素性を保ちながら,市場に関する全面的な分析を実現しています.一定のリスクがあるものの,合理的なリスク管理と継続的な最適化により,この戦略は,優れた実用価値と発展の可能性を持っています.

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
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/
// © mojomarv

//@version=6
strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000)

// Inputs for the WaveTrend indicator
inputLength = input.int(10, title="Channel Length", minval=1)
avgLength = input.int(21, title="Average Length", minval=1)
obLevel = input.float(45, title="Overbought Level")
osLevel = input.float(-45, title="Oversold Level")
showSignals = input.bool(true, title="Show Buy/Sell Signals")

// Trend filter input
maLength = input.int(500, title="Trend MA Length", minval=1)

// Calculate WaveTrend values
hlc_avg = (high + low + close) / 3  // Renamed from hlc3 to hlc_avg
esa = ta.ema(hlc_avg, inputLength)
d = ta.ema(math.abs(hlc_avg - esa), inputLength)
k = (hlc_avg - esa) / (0.015 * d)
ci = ta.ema(k, avgLength)
tci = ta.ema(ci, avgLength)

// Moving average for trend detection
trendMA = ta.sma(close, maLength)

// Determine trend
bullishTrend = close > trendMA
bearishTrend = close < trendMA

// Generate signals with trend filter
crossUp = ta.crossover(tci, osLevel)
crossDown = ta.crossunder(tci, obLevel)

// Plot WaveTrend
plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2)
hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot moving average for trend visualization
plot(trendMA, title="Trend MA", color=color.orange, linewidth=1)

// Plot buy and sell signals
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small)
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small)

// Alerts
alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)")
alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)")

// Strategy logic
if crossUp and bullishTrend
    strategy.entry("Long", strategy.long)

if crossDown
    strategy.close("Long")

if crossDown and bearishTrend
    strategy.entry("Short", strategy.short)

if crossUp
    strategy.close("Short")