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

ADX トレンド強度フィルタリングシステムによるダイナミック・EMA・クロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2025-01-06 11:44:03
タグ:エイマADXSLTS

img

概要

この戦略は,指数移動平均 (EMA) と平均方向指数 (ADX) を組み合わせたトレンドフォローする取引システムである. EMA50と価格クロスオーバーを通じて取引方向を決定し,トレンド強度をフィルターするためにADXを使用し,連続した収益性の高いキャンドルに基づく動的ストップロスの方法を採用する.このアプローチにより,主要な市場トレンドとトレンドが弱まるときにタイムリーアウトの両方を把握することができます.

戦略の原則

基本論理は次の主要な要素に基づいています

  1. 傾向指数として50期間のEMA (EMA50) を使用する.
  2. ADX指標 (デフォルトパラメータ20) を使って市場傾向強さをフィルターする.
  3. 入国条件:
    • ロング: EMA50やADXの値を超えて閉じる.
    • ショート: 価格がEMA50を下回り,ADXが上値に閉じる
  4. ストップ・ロスのメカニズム:
    • 連続して儲かるキャンドルを数える
    • 連続して4つの収益性の高いキャンドルの後に動的トレーリングストップを活性化します.
    • ストップ・ロスのレベルは,新しい高値/低値に動的に調整されます.

戦略 の 利点

  1. 二重傾向の確認
  • EMAのクロスオーバーは,トレンドの方向性を示しています.
  • ADXフィルタリングはトレンド強さを保証し,偽ブレイクを減らす
  1. インテリジェントなストップ・ロスト設計
  • 市場変動に基づく動的ストップ
  • トレイリングストップは,連続した利益後にのみ有効にします.
  1. 高度 な 適応 力
  • 高度に調整可能なパラメータ
  • 複数の取引手段に適用される
  1. 総合的なリスク管理
  • トレンドの弱さで自動退出
  • ダイナミックストップは,既存の利益を守ります

戦略リスク

  1. トレンド逆転リスク
  • 急激な逆転で大きな引き下げに直面する可能性があります
  • 逆転確認メカニズムを追加することを推奨する
  1. パラメータ感度
  • EMAとADXパラメータの選択によって影響を受ける戦略の業績
  • バックテストによるパラメータ最適化を推奨する
  1. 市場環境による依存
  • 異なる市場で頻繁に取引できる
  • 横向市場フィルターを追加することを推奨します
  1. ストップ・ロスの実行リスク
  • 大幅なギャップはストップ・ロスの実行偏差を引き起こす可能性があります.
  • ハードストップ損失保護の導入を検討する

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

  1. 入国メカニズムの強化
  • 音量確認信号を追加する
  • 価格パターン分析を組み込む
  1. ストップ・ロスのメカニズムの改善
  • 動的ストップ損失調整のためのATRを統合する
  • 時間に基づくストップ・ロスのメカニズムを追加
  1. 市場環境への適応
  • 市場変動フィルターを追加する
  • 異なる市場サイクルのためのパラメータの調整
  1. 信号確認強化
  • 追加的な技術指標を統合する
  • 基本的なフィルタリング条件を追加する

概要

これは,EMAとADXの利点を組み合わせることで,リスクを制御しながら,効果的にトレンドを把握する,よく設計されたトレンドフォロー戦略である.ダイナミックストップロスのメカニズムは特に革新的で,利益保護とトレンドキャプチャを効果的にバランスする.最適化余地がある一方で,全体的な枠組みは完全で論理的に健全であり,ライブトレーディングで検証に値する戦略システムとなっています.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Simple EMA 50 Strategy with ADX Filter", overlay=true)

// Input parameters
emaLength = input.int(50, title="EMA Length")
adxThreshold = input.float(20, title="ADX Threshold", minval=0)

// Calculate EMA and ADX
ema50 = ta.ema(close, emaLength)
adxSmoothing = input.int(20, title="ADX Smoothing")
[diPlus, diMinus, adx] = ta.dmi(20, adxSmoothing)

// Conditions for long and short entries
adxCondition = adx > adxThreshold
longCondition = adxCondition and close > ema50  // Check if candle closes above EMA
shortCondition = adxCondition and close < ema50  // Check if candle closes below EMA

// Exit conditions based on 4 consecutive profitable candles
var float longSL = na
var float shortSL = na
var longCandleCounter = 0
var shortCandleCounter = 0

// Increment counters if positions are open and profitable
if (strategy.position_size > 0 and close > strategy.position_avg_price)
    longCandleCounter += 1
    if (longCandleCounter >= 4)
        longSL := na(longSL) ? close : math.max(longSL, close)  // Update SL dynamically
else
    longCandleCounter := 0
    longSL := na

if (strategy.position_size < 0 and close < strategy.position_avg_price)
    shortCandleCounter += 1
    if (shortCandleCounter >= 4)
        shortSL := na(shortSL) ? close : math.min(shortSL, close)  // Update SL dynamically
else
    shortCandleCounter := 0
    shortSL := na

// Exit based on trailing SL
if (strategy.position_size > 0 and not na(longSL) and close < longSL)
    strategy.close("Buy", comment="Candle-based SL")

if (strategy.position_size < 0 and not na(shortSL) and close > shortSL)
    strategy.close("Sell", comment="Candle-based SL")

// Entry logic: Check every candle for new positions
if (longCondition)
    strategy.entry("Buy", strategy.long)
if (shortCondition)
    strategy.entry("Sell", strategy.short)

// Plot EMA and ADX for reference
plot(ema50, color=color.blue, title="EMA 50")
plot(adx, color=color.orange, title="ADX", style=plot.style_stepline, linewidth=1)
plot(longSL, color=color.green, title="Long SL", style=plot.style_cross, linewidth=1)
plot(shortSL, color=color.red, title="Short SL", style=plot.style_cross, linewidth=1)

// Plot signals
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")


関連性

もっと