指数移動平均クロスオーバーインパルストレンド分析取引戦略

EMA ICM
作成日: 2025-02-18 17:41:28 最終変更日: 2025-02-18 17:41:28
コピー: 1 クリック数: 375
1
フォロー
1617
フォロワー

指数移動平均クロスオーバーインパルストレンド分析取引戦略

概要

この戦略は,指数移動平均 ((EMA) とパルス修正モデル ((ICM) に基づくトレンド追跡取引システムである.これは,価格とEMAの交差とそれに続くパルス修正パルス形状を識別することによって,市場のトレンドの変化を捉え,特定の条件を満たしたときに取引を実行する.システムは,固定されたリスクと利益の比率を使用して,各取引のストップとストップを管理する.

戦略原則

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

  1. 10サイクルEMAをトレンド方向の基準として使用
  2. 価格とEMAが交差した後の3サイクル間のパルス修正パルス形状を探します.
  3. 条件は以下の通りです.
    • 価格の上昇にEMA
    • 最初のK線は,脈 (幅がデフォルト値より大きい)
    • 2番目のK線は下落修正 ((閉盘価格は開盤価格より低い)
    • 第3のK線は,脈動で前2のK線高点を突破する.
  4. 空頭入学条件は多頭入学条件とは対照的です.
  5. 固定リスク/リターン比率 ((デフォルトの3倍) を使用して自動でストップ・ロズとストップ・ストップの位置を設定する

戦略的優位性

  1. 技術指標と価格の形状を組み合わせて,より信頼性の高い取引シグナルを提供する
  2. パルス-修正-パルス形状によるトレンドの持続性
  3. 固定リスク/利益の比率でポジションを管理し,長期にわたる安定した利益をもたらす
  4. 入力論理は明確で,理解し,実行しやすい.
  5. 異なる取引品種と時間周期に適用できる

戦略リスク

  1. 不安定な市場では、誤ったブレイクアウトシグナルが頻繁に発生する可能性がある
  2. 固定リスク/リターン比率は,すべての市場状況に適さない可能性があります.
  3. EMAパラメータとパルス幅の値下げの選択は,戦略のパフォーマンスに影響します.
  4. 連続した激しい波動により,不合理なストップポジションが発生する可能性があります.
  5. 市場が急激に逆転すると,大きな撤退が起こりうる.

戦略最適化の方向性

  1. 波動率指標の動的調整パルス幅の値を導入する
  2. トレンド強度フィルタを増加させ,偽突破を減少させる
  3. 市場特有の動向に合わせて調整されたリスク/利益比率
  4. タイムフィルターを追加して,不都合なタイミングで取引を避ける
  5. 交差量指標を組み合わせて信号の信頼性を高める

要約する

この戦略は,EMAとパルス修正モデルを組み合わせて,論理的に明確なトレンド追跡システムを構築している.その優点は,信号が明確で,リスクは制御可能であるが,特定の市場の特徴に応じて最適化する必要がある.適切なフィルタリング条件と動的パラメータ調整メカニズムを追加することで,戦略の安定性と収益性をさらに向上させることができる.

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

//@version=5
strategy("EMA Cross Impulsive Strategy", overlay=true, margin_long=100, margin_short=100)

// Parameters
emaLength = input.int(10, title="EMA Length")
impulsiveBodyTicks = input.int(10, title="Minimum Impulsive Candle Body (Ticks)")
rMultiplier = input.int(3, title="Risk Reward Multiplier")

// Calculate EMA
ema10 = ta.ema(close, emaLength)

// Cross conditions
crossUp = ta.crossover(close, ema10)
crossDown = ta.crossunder(close, ema10)

// Impulsive and correction conditions
tickSize = syminfo.mintick
impulsiveBodyMin = impulsiveBodyTicks * tickSize

isImpulsiveBullish = (close > open) and (close - open >= impulsiveBodyMin)
isImpulsiveBearish = (close < open) and (open - close >= impulsiveBodyMin)
isCorrectionBearish = (close < open)
isCorrectionBullish = (close > open)

// Long setup tracking
var int barsSinceLongCross = 0
var bool impulsive1Long = false
var bool correctionLong = false
var bool impulsive2Long = false

if crossUp
    barsSinceLongCross := 0
    impulsive1Long := false
    correctionLong := false
    impulsive2Long := false
else
    barsSinceLongCross := barsSinceLongCross + 1

if barsSinceLongCross == 1
    impulsive1Long := isImpulsiveBullish

if barsSinceLongCross == 2
    correctionLong := isCorrectionBearish

if barsSinceLongCross == 3
    impulsive2Long := isImpulsiveBullish and (close > math.max(high[1], high[2]))

// Short setup tracking
var int barsSinceShortCross = 0
var bool impulsive1Short = false
var bool correctionShort = false
var bool impulsive2Short = false

if crossDown
    barsSinceShortCross := 0
    impulsive1Short := false
    correctionShort := false
    impulsive2Short := false
else
    barsSinceShortCross := barsSinceShortCross + 1

if barsSinceShortCross == 1
    impulsive1Short := isImpulsiveBearish

if barsSinceShortCross == 2
    correctionShort := isCorrectionBullish

if barsSinceShortCross == 3
    impulsive2Short := isImpulsiveBearish and (close < math.min(low[1], low[2]))

// Execute trades
if barsSinceLongCross == 3 and impulsive1Long and correctionLong and impulsive2Long
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop=low, profit=close + (close - low) * rMultiplier)

if barsSinceShortCross == 3 and impulsive1Short and correctionShort and impulsive2Short
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop=high, profit=close - (high - close) * rMultiplier)

// Plot EMA
plot(ema10, color=color.blue, title="10 EMA")