3 倍移動平均モメンタム トレンド取引戦略

MA EMA SMA TP SL
作成日: 2025-02-10 14:37:15 最終変更日: 2025-02-10 14:37:15
コピー: 2 クリック数: 408
1
フォロー
1617
フォロワー

3 倍移動平均モメンタム トレンド取引戦略

概要

これは,オリバー・ヴァレズの取引方法論に基づいた三重平均線トレンド追跡戦略である.この戦略は,20周期,50周期,および200周期の移動平均の交差信号を使用して,市場トレンドと取引機会を識別する.200周期平均線は,主要なトレンドフィルターとして使用され,20周期および50周期平均線の交差は,特定の取引信号を生成するために使用されます.この戦略は,リスク管理機能を内蔵しています.

戦略原則

戦略の核心的な論理には,以下の3つの重要な側面があります.

  1. トレンド識別: 200周期平均線をトレンドの境界線として使用する. 200平均線上にある時,上昇傾向とみなされ, 200平均線以下にある時,下降傾向とみなされる.
  2. トレードシグナル:上昇傾向では,20周期平均線が50周期平均線を上方に渡るときに多信号を触発する.下降傾向では,20周期平均線が50周期平均線を下方に渡るときに空信号を触発する.
  3. リスクコントロール:戦略は,2%のストップと4%のストップをデフォルトで設定し,反転クロスシグナルが発生したときに自動的にポジションをクリアする.

戦略的優位性

  1. 多重確認メカニズム: 三つの均一線の組み合わせにより,より信頼性の高い取引シグナルを提供します.
  2. トレンドフィルター:200の均等なトレンドフィルタ機能は,偽突破のリスクを効果的に低減する.
  3. 柔軟性:SMAとEMAの間の切り替えをサポートし,異なる市場の特徴に応じてパラメータを調整できます.
  4. リスク管理の改善: 資産の安全を守るための内蔵の止損防止システム
  5. 視覚効果:背景の色を直感的に変化させることでトレンドの状態を表示する.

戦略リスク

  1. 遅滞性:移動平均は本質的に遅滞の指標であり,入場や出場のタイミングをわずかに遅らせることがある.
  2. 振動市場には適用されない:横盤整理段階では,頻繁に均線交差が偽信号を生じることがあります.
  3. 固定ストップリスク: 固定パーセンテージストップを使用することは,すべての市場環境に適していない可能性があります.
  4. パラメータの感度:異なる均線周期設定は,著しく異なる結果を生成する可能性があります.

戦略最適化の方向性

  1. 交差量分析の導入:交差量確認指標を追加して,信号の信頼性を高めることができる.
  2. ダイナミックストップレード設定:ATRまたは波動率指標を使用してストップレード位置を動的に調整することを検討する.
  3. トレンド強度フィルターを追加する: 弱気なトレンド環境をフィルタリングする,ADXなどのトレンド強度指標を導入することができます.
  4. 入場タイミングの最適化: 価格形状とサポートレジスタンス位置を組み合わせて,入場精度を向上させる.
  5. タイムフィルターを追加:取引時間ウィンドウを設定して,波動性の高い時間を回避できます.

要約する

これは,構造が整った,論理がはっきりしたトレンド追跡戦略である. 三重均等線の協調的な配合により,トレンド識別の正確性が保証され,明確な取引信号が提供される. 戦略のリスク管理機構は比較的完備しているが,まだ最適化の余地がある. 交易者は,実用化する前に十分なフィードバックをテストし,特定の取引品種の特性に応じてパラメータ設定を調整することをお勧めする.

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

//@version=5
strategy("Oliver Valez Triple MA Strategy", overlay=true, margin_long=100, margin_short=100)

// Inputs
ma20_length = input.int(20, "20-period MA Length", minval=1)
ma50_length = input.int(50, "50-period MA Length", minval=1)
ma200_length = input.int(200, "200-period MA Length", minval=1)
use_ema = input.bool(false, "Use EMA Instead of SMA")
sl_percent = input.float(2.0, "Stop Loss %", minval=0.0)
tp_percent = input.float(4.0, "Take Profit %", minval=0.0)

// Calculate MAs
ma20 = use_ema ? ta.ema(close, ma20_length) : ta.sma(close, ma20_length)
ma50 = use_ema ? ta.ema(close, ma50_length) : ta.sma(close, ma50_length)
ma200 = use_ema ? ta.ema(close, ma200_length) : ta.sma(close, ma200_length)

// Plot MAs
plot(ma20, "MA 20", color=color.new(color.blue, 0), linewidth=2)
plot(ma50, "MA 50", color=color.new(color.orange, 0), linewidth=2)
plot(ma200, "MA 200", color=color.new(color.red, 0), linewidth=2)

// Trend Filter
bullish_trend = close > ma200
bearish_trend = close < ma200

// Entry Conditions
long_condition = ta.crossover(ma20, ma50) and bullish_trend
short_condition = ta.crossunder(ma20, ma50) and bearish_trend

// Exit Conditions
exit_long = ta.crossunder(ma20, ma50)
exit_short = ta.crossover(ma20, ma50)

// Risk Management
stop_loss = strategy.position_avg_price * (1 - sl_percent/100)
take_profit = strategy.position_avg_price * (1 + tp_percent/100)

// Execute Trades
if (long_condition)
    strategy.entry("Long", strategy.long)
    strategy.exit("XL", "Long", stop=stop_loss, limit=take_profit)

if (short_condition)
    strategy.entry("Short", strategy.short)
    strategy.exit("XS", "Short", stop=stop_loss, limit=take_profit)

// Close trades on opposite signals
if (exit_long)
    strategy.close("Long")

if (exit_short)
    strategy.close("Short")

// Plot Signals
plotshape(long_condition, "Buy", shape.labelup, location.belowbar, color=color.green, text="BUY", textcolor=color.white)
plotshape(short_condition, "Sell", shape.labeldown, location.abovebar, color=color.red, text="SELL", textcolor=color.white)

// Background Color for Trend
bgcolor(bullish_trend ? color.new(color.green, 90) : bearish_trend ? color.new(color.red, 90) : na)