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

動的波動傾向追跡戦略

作者: リン・ハーンチャオチャン開催日:2024年12月20日 16:17:27
タグ:エイマSMAHLCマルチ

img

概要

この戦略は,WaveTrend指標とトレンドフォローをベースとした定量的な取引システムである.この戦略は,WaveTrend指標と移動平均を組み合わせて完全な取引決定枠組みを形成する.この戦略は,波動トレンド値と全体的な市場トレンドを計算するためにEMAとSMAを使用し,過剰購入および過剰販売の値を通じて市場のターニングポイントを特定し,トレンドフィルターを組み込み,取引の精度を向上させる.

戦略原則

戦略の核心は以下のステップで実施されます.

  1. HLC 平均価格を計算する (高値,低値,閉値の平均値)
  2. HLC平均をEMAを用いて平ら化し,ESA線を得ます.
  3. HLC平均とESA線間の偏差をEMAを使用して計算し,平らにする.
  4. 偏差に基づいてK値を計算し,最終的なTCI線を得るためにEMAで2回滑らか
  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")

関連性

もっと