マルチ期間スーパートレンドEMAモメンタムフィルター戦略

ATR EMA DEMA RSI supertrend VOLUME SL TP
作成日: 2025-08-15 11:33:46 最終変更日: 2025-08-15 11:33:46
コピー: 0 クリック数: 286
2
フォロー
319
フォロワー

マルチ期間スーパートレンドEMAモメンタムフィルター戦略 マルチ期間スーパートレンドEMAモメンタムフィルター戦略

概要

この戦略は,超トレンド指数 (Supertrend) と多重量フィルターを組み合わせた高度なトレンド追跡システムで,強力なトレンドを捕捉するために設計されています.その核心は,ATR (平均リアルレンジ) を動的に調整した超トレンド指数を使用して,EMA (指数移動平均) とDEMA (二重指数移動平均) をトレンド確認ツールとして使用し,RSI (比較的弱い指数) と取引量フィルターを統合して,エントリーシグナル信頼性を高めています.この戦略はATRベースのストップ・ロス,ストップ,ストップ・ロスを追跡するメカニズムを内蔵し,異なる取引スタイルに合わせて複数のタイムサイクルのプリセットパラメータを提供します.特に注目すべきは,この戦略は,インテリジェントなエントリーロジックを持ち,上昇中にトレンドを調整する機会を捕捉し,連続的なトレンドを捕捉します.

戦略原則

この戦略の核心となる原則は,多層のシグナル確認メカニズムに基づいて,包括的な取引意思決定の枠組みを構成しています.

  1. 超トレンドコア信号システム:ATRを動態トレンド帯として計算し,閉盘価格が下位突破時に買入シグナル ((上転),上位突破時に売出シグナル ((下転) を発生させる.ATRの周期と倍数は,異なる市場環境の変動性に対応するために調整できる.

  2. 動力確認フィルター価格が短期EMA (デフォルト21サイクル) と長期DEMA (デフォルト200サイクル) の上にあることを要求し,取引方向が主要トレンドと一致することを確保し,逆行取引を避ける.

  3. 信号の強さを確認する: RSI ((デフォルト要求>50) による価格動向の確認,およびそのEMA ((デフォルト20サイクル) 以上の取引量による市場参加の確認,入場信号の質の向上.

  4. スマート再入学システム: 確認された上昇傾向において,価格が逆戻りした後にEMAに再開され,その他の条件が満たされた場合,戦略は再び入場し,トレンドの継続中の機会を有効に捕捉する.

  5. リスク管理システム

    • 入場価格より1ATR (デフォルト) 未満のストップ・損失設定
    • ストップセットは入場価格より3ATR (オプション)
    • 利益が1ATRを超えると,トラッキング・ストップ・メカニズムを起動し,利益の一部をロックします.
  6. 多周期パラメータのプリセット

    • “Auto-1H/4H”:ATR周期10,倍数3,短期振動取引に適している
    • “Auto-1D”:ATRサイクル14,倍数3,日線トレンド追跡に適した
    • “Auto-1W”:ATR周期20×4,長期トレンドを捉えるのに適している

戦略的優位性

この戦略は詳細に分析され,以下の顕著な利点があります.

  1. 適応力がある超トレンド指数はATRの動的調整に基づいており,市場の変動の変化に自動的に適応し,異なる市場環境で有効性を維持します.

  2. マルチレベル確認 偽信号の減少: EMA,DEMA,RSI,および取引量の複数の検証により,偽信号のリスクを大幅に軽減し,取引の質を向上させる.

  3. スマートな再入場は継続的な行動を捉える: 革新的な再入場論理により,上昇傾向の逆転後に再入場が可能になり,トレンドの変動を有効に利用し,資金利用の効率性を向上させる.

  4. 完全なリスク管理システムATRベースの内蔵の停止,停止,および追跡停止メカニズムは,単一取引の損失を制限するだけでなく,既得利益を保護し,撤回リスクを低減します.

  5. 複数の周期を設定し,操作を簡素化: 異なるタイムフレームに対する既定のパラメータにより,戦略を複数の取引サイクルで容易に実行し,異なるトレーダーの時間好みに適合させる.

  6. 視力補助直観の明晰さ:色で満たされた上昇と下降のトレンドを区別し,明確な買入シグナルのマーク付きで,市場の状態を目にするようにし,取引決定を容易にします.

  7. 実験結果から確認: 日経周期で約60%の勝率と4以上の利益因子を示し,特に傾向が顕著な市場環境に適している.

戦略リスク

この戦略は包括的に設計されていますが, 潜在的リスクは以下の通りです.

  1. 市場が揺れ動いた: 明確なトレンドがない整合市場では,しばしばストップを触発し,連続した小損失の蓄積につながる可能性があります. 解決策は,市場の構造が不明確であるときに取引を一時停止するか,信号の感度を下げるためにATRの倍数を増やすことです.

  2. フィルタリング条件が欠けている可能性: 複数のフィルタリング条件は信号の質を向上させるが,初期トレンドの機会を逃す可能性がある.トレーダーは,個人リスクの好みに応じてフィルタリング条件の厳格さを調整することを考慮することができます.

  3. パラメータ感度:ATR周期と倍数設定は,戦略のパフォーマンスに顕著な影響を与える.異なる市場環境は,異なるパラメータを必要とする可能性があります.反射で特定の市場のパラメータ設定を最適化することをお勧めします.

  4. リスクの撤回: 評価によると,全ポジションを使用すると大きな引き下げが発生する可能性がある (高100%+). 資金管理を厳格に実施し,取引毎のリスクは1-2%以内で制御しなければならない.

  5. 歴史的データに限界がある戦略は,主に特定の市場と時間帯で反省され,過適合のリスクがある可能性があります.実用化する前に,より広範な市場と時間帯のテストを行うべきです.

  6. 極端な市場条件のテストの欠如: 戦略は,市場の大幅な変動や流動性の危機などの極端な状況でのテストを受けていない可能性があり,このような状況でのパフォーマンスは不明である.

最適化の方向

この戦略は,コードの深度分析により,以下の方向に最適化できます.

  1. 適応パラメータの調整:市場変動の動向に基づいてATR倍数と周期を調整するメカニズムを開発し,市場状態の変化に戦略を自動的に適応させることができる.例えば,変動が増加したときにATR倍数を上げ,変動が減少したときにATR倍数を減らす.

  2. 統合市場状態分類市場状態認識モジュール (ブリン帯域,ADXなど) を導入し,市場がトレンド状態か震動状態かに応じて戦略パラメータを自動的に調整するか,取引を一時停止する.

  3. 多周期分析フレームワーク: 多周期分析機能を追加し,より高いタイムフレームのトレンドが現在のタイムフレームと一致して取引を行うことを要求し,トレンド判断の正確性を向上させる.

  4. 再入学ロジックを最適化:再入学条件の精細化,フィボナッチ回報レベルまたは重要な支柱位置の確認を追加し,再入学ポイントの精度を向上させることを考慮する.

  5. 資金管理の最適化: ダイナミックなポジション管理を実現し,市場の変動,口座の純額および連続的な損益状態に基づいてポジションサイズを自動的に調整し,資金曲線のパフォーマンスを最適化します.

  6. 市場感情指標を追加:VIX指数 (波動率指数) や取引量変化率などの市場情緒指標を統合し,市場のパニックや過剰な楽観性があるときに戦略行動を調整する.

  7. 機械学習の最適化: 機械学習アルゴリズムを使用してパラメータ選択と入場タイミングを最適化し,過去データ訓練モデルを使用して最適な取引パラメータパッチを予測する.

要約する

多周期超トレンドEMA動量フィルタリング戦略は,超トレンド指標と多重動量フィルタを組み合わせて,全面的な取引意思決定の枠組みを確立する,設計されたトレンド追跡システムである.その核心的な優点は,自己適応性の強さ,偽信号を減らす複数の層の確認,継続的な行動を捕捉するスマート再入場,および完全なリスク管理システムである.この戦略は,傾向が顕著な市場環境に特に適しており,日線周期で良好な反射表を示している.

しかし,この戦略は,波動的な市場では,不十分なパフォーマンスを発揮し,パラメータの感受性および潜在的な撤回のリスクがあります. 戦略の安定性をさらに高めるために,自主的なパラメータの調整,市場状態の分類を統合する,多周期分析の枠組みを構築する,再入場論理を最適化する,資金管理方法を改善する,市場情緒指標を増やし,機械学習技術を適用する.

最終的には,この戦略は,トレンドを追跡する取引のための厳格な技術指標と優れたリスク管理の枠組みを提供します.しかし,使用する際には,常にリスク管理の重要性を心に留めて,取引ごとにリスクを許容範囲に制限し,個人取引スタイルと市場環境に応じて戦略のパラメータを適切に調整してください.

ストラテジーソースコード
/*backtest
start: 2024-08-15 00:00:00
end: 2025-08-13 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Supertrend EMA Strategy _V29", overlay=true, format=format.price, precision=2, initial_capital=1000)
// Inputs
tf_preset = input.string("Manual", title="Timeframe Preset", options=["Manual", "Auto-1H/4H", "Auto-1D", "Auto-1W"])
atr_period = input.int(10, title="ATR Period")
src = hl2
atr_multiplier = input.float(3.0, title="ATR Multiplier", step=0.1)
change_atr = input.bool(true, title="Change ATR Calculation Method?")
show_signals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
ema_length = input.int(21, title="EMA Length")
dema_length = input.int(200, title="DEMA Length")
tp_multiplier = input.float(3.0, title="Take Profit Multiplier (ATR, 0=off)", step=0.5)

allow_long = input.bool(true, title="Allow Long Trades")
allow_short = input.bool(false, title="Allow Short Trades")
sl_multiplier = input.float(1.0, title="Stop Loss Multiplier (ATR, 0=off)", step=0.5)
use_vol_filter = input.bool(true, title="Use Volume Filter?")
vol_ema_length = input.int(20, title="Volume EMA Length", minval=1)
use_rsi_filter = input.bool(true, title="Use RSI Filter?")
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(50, title="RSI Buy Threshold")
// Auto-adjust
int atr_period_final = atr_period
float atr_mult_final = atr_multiplier
string preset_label = tf_preset
if tf_preset == "Auto-1H/4H"
    atr_period_final := 10
    atr_mult_final := 3.0
    preset_label := "1H/4H"
else if tf_preset == "Auto-1D"
    atr_period_final := 14
    atr_mult_final := 3.0
    preset_label := "Daily"
else if tf_preset == "Auto-1W"
    atr_period_final := 20
    atr_mult_final := 4.0
    preset_label := "Weekly"
// Show settings
if barstate.islast
    label.new(x=bar_index[barstate.isrealtime ? 0 : 50], y=high, text="Preset: " + preset_label + "\nATR: " + str.tostring(atr_period_final) + "\nMult: " + str.tostring(atr_mult_final), color=color.white, style=label.style_label_left, textcolor=color.black, size=size.small, yloc=yloc.abovebar)
// Calculations
atr2 = ta.sma(ta.tr, atr_period_final)
atr = change_atr ? ta.atr(atr_period_final) : atr2
up = src - (atr_mult_final * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (atr_mult_final * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buy_signal = trend == 1 and trend[1] == -1
sell_signal = trend == -1 and trend[1] == 1
ema = ta.ema(close, ema_length)
ema1 = ta.ema(close, dema_length)
dema = 2 * ema1 - ta.ema(ema1, dema_length)
vol_ema = ta.ema(volume, vol_ema_length)
rsi = ta.rsi(close, rsi_length)
// Plots (global)
up_plot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
dn_plot = plot(trend == -1 ? dn : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
plot(dema, title="DEMA 200", color=color.blue, style=plot.style_linebr, linewidth=2)
plotshape(buy_signal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green)
plotshape(buy_signal and show_signals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
plotshape(sell_signal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red)
plotshape(sell_signal and show_signals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
m_plot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
long_fill_color = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.white) : color.white
short_fill_color = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.white) : color.white
fill(m_plot, up_plot, title="UpTrend Highlighter", color=long_fill_color)
fill(m_plot, dn_plot, title="DownTrend Highlighter", color=short_fill_color)
plot(ema, title="EMA", color=color.blue, linewidth=2)
// Strategy Logic with Re-Entry (in if for skip)

var float entry_price = na
vol_condition = not use_vol_filter or volume > vol_ema
rsi_condition = not use_rsi_filter or rsi > rsi_threshold
buy_cond_met = buy_signal and close > ema and close > dema and allow_long and vol_condition and rsi_condition
re_entry_cond = trend == 1 and strategy.position_size == 0 and close[1] < ema and close > ema and close > dema and vol_condition and rsi_condition
sell_cond_met = sell_signal and strategy.position_size > 0 and (close < dema or true)
if buy_cond_met or re_entry_cond
    strategy.entry("Long", strategy.long)
    entry_price := close
if sell_cond_met
    strategy.close("Long")
    entry_price := na
if sell_signal and close < ema and close < dema and allow_short and vol_condition
    strategy.entry("Short", strategy.short)
    entry_price := close
if buy_signal and strategy.position_size < 0
    strategy.close("Short")
    entry_price := na
// SL & TP with Trailing
if strategy.position_size != 0 and not na(entry_price)
    if sl_multiplier > 0
        sl_price = strategy.position_size > 0 ? entry_price - (sl_multiplier * atr) : entry_price + (sl_multiplier * atr)
        trail_condition = strategy.position_size > 0 ? (close - entry_price > atr) : (entry_price - close > atr)
        trail_sl = strategy.position_size > 0 ? up : dn
        final_sl = trail_condition ? trail_sl : sl_price
        strategy.exit("SL Exit", stop=final_sl)
    if tp_multiplier > 0
        tp_price = strategy.position_size > 0 ? entry_price + (tp_multiplier * atr) : entry_price - (tp_multiplier * atr)
        strategy.exit("TP Exit", limit=tp_price)
// Alerts
alertcondition(buy_signal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sell_signal, title="SuperTrend Sell", message="SuperTrend Sell!")
change_cond = trend != trend[1]
alertcondition(change_cond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")