マルチタイムゾーンMACDクロスオーバー持続戦略とEMAトレンドフィルターの組み合わせ

MACD EMA
作成日: 2025-02-21 10:11:34 最終変更日: 2025-02-27 17:17:57
コピー: 1 クリック数: 366
2
フォロー
319
フォロワー

マルチタイムゾーンMACDクロスオーバー持続戦略とEMAトレンドフィルターの組み合わせ マルチタイムゾーンMACDクロスオーバー持続戦略とEMAトレンドフィルターの組み合わせ

概要

この戦略は,MACD指数と移動平均をベースにした多時区取引システムである.これは,1分と3分の2つの時間周期のMACD指数を組み合わせ,同時に200周期EMAをトレンドフィルターとして使用し,市場トレンドの持続性を捉えることで取引を行う.この戦略には,ストップ・ロズ設定とベースに移動するダイナミック調整機能を含むリスク管理機構が含まれている.

戦略原則

戦略の中核となるロジックは、次の主要な要素に基づいています。

  1. 1分と3分の2つの時間周期のMACD指標を使用して,トレンドの持続性を確認する
  2. 200周期EMAを主要トレンドの判断基準として使用
  3. 価格と均線位置の関係で取引信号をフィルターする
  4. 取引の時間フィルターに基づいて取引する

特定の取引シグナル生成のルールは以下の通りです.

  • マルチヘッド信号:MACD線はゼロ線より上であり,信号線を上向きに通過し,3分間のMACDがトレンドを確認し,価格はEMA200以上
  • 空頭シグナル:MACDラインはゼロラインより下にあり,シグナルラインを下向きに通過し,同時に3分MACDがトレンドを確認し,価格はEMA200以下

戦略的優位性

  1. 複数のタイムサイクルが確認されることで取引の正確性が向上します.
  2. トレンドフィルターと組み合わせると 偽信号が減ります
  3. リスク管理の仕組みが整っています
  4. タイムフィルターを使用すると,非アクティブの取引を回避できます.
  5. ダイナミックな本金ポイント調整により,既得利益が保護されました.
  6. 戦略の論理が明確で,調整と最適化が容易です.

戦略リスク

  1. 変動が激しい市場では滑落のリスクがある
  2. 多重認証により,一部の取引機会を逃す可能性があります.
  3. 固定ストップポイントは,特定の市場環境では柔軟性がない可能性があります.
  4. 取引コストが戦略のリターンに与える影響を考慮する必要がある
  5. 市場が激しく波動する中で,大きな引き下げに直面する可能性がある.

リスク管理の提案:

  • 市場変動に応じて調整するストップ・ディスタンス
  • 収益性を確保するために利益目標を増やすことを検討する
  • 重要な経済データ発表の間,取引を停止する.
  • 定期的な評価と戦略パラメータの調整

戦略最適化の方向性

  1. 動的に調整する MACD パラメータ:
  • 市場変動に適応する
  • 適応移動平均を使うことを検討する
  1. タイムフィルターを改善する
  • 取引の細分化
  • 取引時間を最適化するための取引量分析の組み合わせ
  1. 最適化されたストップロスメカニズム:
  • ダイナミック・ストップを導入
  • ATR 設定による止損距離
  1. ツイッターでは,
  • 追加された技術指標の確認
  • 価格行動分析の導入を検討する

要約する

この戦略は,多周期MACD指標とEMAトレンドフィルターを組み合わせることで,比較的完ぺきな取引システムを構築している.その優点は,複数の確認機構とリスク管理の整合性にあるが,同時に,異なる市場環境における適応性の問題にも注意する必要がある.提案された最適化方向によって,戦略は,その安定性を維持しながら,さらに収益能力を向上させる見込みがある.

ストラテジーソースコード
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-15 02:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("NQ MACD Continuation Backtest", overlay=true)

// MACD Settings
fastLength = 12
slowLength = 26
signalLength = 9

// 1-minute MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// 3-minute MACD for trend filter
[htfMacd, htfSignal, _] = request.security(syminfo.tickerid, "3", ta.macd(close, fastLength, slowLength, signalLength), lookahead=barmerge.lookahead_on)

// 200 EMA
ema200 = ta.ema(close, 200)

// Time Filters
inSession = (hour(time, "America/New_York") >= 9 and (hour(time, "America/New_York") > 9 or minute(time, "America/New_York") >= 45)) and (hour(time, "America/New_York") < 22 or (hour(time, "America/New_York") == 22 and minute(time, "America/New_York") == 30))
notRestricted = (hour(time, "America/New_York") >= 6 and hour(time, "America/New_York") < 22)

// Track Previous MACD Crosses
var bool bullishCrossed = false
var bool bearishCrossed = false
if (ta.crossover(macdLine, signalLine) and macdLine > 0)
    bullishCrossed := true
if (ta.crossunder(macdLine, signalLine) and macdLine < 0)
    bearishCrossed := true

// Define Continuation Signals with EMA and 3-Min MACD Filter
bullishContinuation = (ta.crossover(macdLine, signalLine) and macdLine > 0 and signalLine > 0 and htfMacd > htfSignal and bullishCrossed and close > ema200)
bearishContinuation = (ta.crossunder(macdLine, signalLine) and macdLine < 0 and signalLine < 0 and htfMacd < htfSignal and bearishCrossed and close < ema200)

// Entry Conditions with SL and 10 Contracts
if (bullishContinuation and inSession and notRestricted)
    strategy.entry("Long", strategy.long, qty=10, stop=close - 7 * syminfo.mintick)
if (bearishContinuation and inSession and notRestricted)
    strategy.entry("Short", strategy.short, qty=10, stop=close + 7 * syminfo.mintick)

// Break-Even Adjustment
if (strategy.position_size > 0 and close >= strategy.position_avg_price + 5 * syminfo.mintick)
    strategy.exit("BreakEvenLong", from_entry="Long", stop=strategy.position_avg_price)
if (strategy.position_size < 0 and close <= strategy.position_avg_price - 5 * syminfo.mintick)
    strategy.exit("BreakEvenShort", from_entry="Short", stop=strategy.position_avg_price)

// Display Indicators on Chart
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
plot(ema200, color=color.red, title="200 EMA")