グランビルとMACDの複数のシグナル確認に基づくトレンドフォロー取引戦略

EMA MACD GC(Golden Cross) SL(Stop Loss) TP(Take Profit)
作成日: 2025-02-20 11:38:15 最終変更日: 2025-02-27 17:46:54
コピー: 2 クリック数: 323
2
フォロー
319
フォロワー

グランビルとMACDの複数のシグナル確認に基づくトレンドフォロー取引戦略 グランビルとMACDの複数のシグナル確認に基づくトレンドフォロー取引戦略

概要

この策略は,グランヴィルトレンド逆転理論とMACD指標の複数のシグナルを組み合わせた取引確認システムである.策略の核心思想は,価格と均線の関係によって潜在的トレンド逆転を判断し,MACD指標の複数のシグナル検証を使用して取引の信頼性を確保することである.この方法は,トレンドの起点を効果的に識別するだけでなく,複数の確認メカニズムによって偽信号のリスクを低減する.

戦略原則

戦略の実行プロセスは4つの重要なステップに分かれています.

  1. グランヴィル反転シグナル確認: 価格がEMA平均線の下から上方へ突破するかどうかを監視する.これはトレンド反転の可能性を示唆する.
  2. MACD初金叉確認:Granville反転シグナルが出た後,MACD指標の金叉が出るのを待つ,これはトレンド転換の2度目の確認である.
  3. MACD突破確認: MACD線が初めて金叉を突破した時の高値を確認し,上昇勢力が継続的に強化されていることを示します.
  4. MACD二回転: MACDが突破した後に再転位し,再び信号線を横切るのを待つ.これは最終的な入場信号である.

止損設定は,反転K線幅に基づく動的調整方法を採用し,止損を反転K線幅の低点に設定し,止損を反転K線幅の1.618倍に設定する.これはフィボナッチ拡張原理に従っている.

戦略的優位性

  1. 多重確認メカニズム: 価格行動,トレンド指標,動態指標を組み合わせることで,偽信号のリスクを大幅に低減する.
  2. ダイナミックなリスク管理:市場の実際の波動に基づいてストップ・ストロスを設定し,リスク管理をより適応的にする.
  3. トレンド継続性検証:MACDの複数の信号の確認により,継続性トレンドの捉え方の精度が向上した.
  4. 適応性:戦略のパラメータは,異なる市場条件と時間周期に応じて最適化調整を行うことができます.

戦略リスク

  1. 信号遅延:複数の確認メカニズムは,入場時間の相対的な遅延を引き起こし,潜在的収益の一部に影響を与える可能性があります.
  2. 区間市場:横盤整理市場では,頻繁に偽突破が起こり,連続したストップ損失を引き起こす可能性がある.
  3. 市場情緒が激しく波動する時には,純粋に技術的な分析は効果的でないかもしれない.
  4. パラメータの敏感性: 戦略の有効性を維持するために,異なる市場環境でパラメータを頻繁に調整する必要がある可能性があります.

戦略最適化の方向性

  1. 市場環境分類:変動率指標を導入し,異なる市場環境で異なるパラメータ配置を使用する.
  2. 入場タイム最適化:MACDの二度目の回転時に取引量確認を増加させ,信号信頼性を向上させることが考えられる.
  3. ストップ・ストップ・ロスの動態調整:市場の変動率の動態に応じてストップ・ストップ・ロスの倍数調整することができる.
  4. 市場情緒因子を増やす:市場情緒指標と組み合わせて,極端な情緒の時期に戦略の急進性を調整する.

要約する

この戦略は,古典的な技術分析理論と近代的な量化取引方法を組み合わせて,比較的完全な取引システムを構築している.複数の信号確認機構は,取引の信頼性を向上させ,ダイナミックなリスク管理方法も,戦略を良好な適応性にする.一定の遅れの問題があるにもかかわらず,継続的な最適化とパラメータの調整により,戦略は,依然として優れた実用価値と発展の可能性を持っています.

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

//@version=5
strategy("Granville + MACD Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ■ Parameter Settings
emaPeriod = input.int(20, "EMA Period for Granville", minval=1)
fastLen   = input.int(12, "MACD Fast Period", minval=1)
slowLen   = input.int(26, "MACD Slow Period", minval=1)
signalLen = input.int(9,  "MACD Signal Period", minval=1)

// ■ Calculate EMA (for Granville reversal detection)
ema_val = ta.ema(close, emaPeriod)

// ■ Granville Reversal Detection (e.g., price crosses above EMA from below)
granvilleReversal = ta.crossover(close, ema_val)

// ■ Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLen, slowLen, signalLen)

// ■ State management variables (to manage state transitions)
var bool   granvilleDone   = false    // Reversal bar confirmed flag
var float  granvilleLow    = na       // Low of the reversal bar (used for SL)
var float  granvilleRange  = na       // Range of the reversal bar (used for TP calculation)
var bool   macdGC_done     = false    // First MACD Golden Cross confirmed
var int    goldenCrossBar  = na       // Bar index of the first MACD Golden Cross
var float  initialMacdHigh = na       // MACD value at the Golden Cross (used for break detection)
var bool   breakoutDone    = false    // MACD line breaks the initial Golden Cross MACD value

// ■ (1) Granville Reversal Detection
if granvilleReversal
    granvilleDone  := true
    granvilleLow   := low             // Low of the reversal bar (SL)
    granvilleRange := high - low      // Range of the reversal bar (used for TP calculation)
    // Reset MACD-related states
    macdGC_done     := false
    breakoutDone    := false
    initialMacdHigh := na
    goldenCrossBar  := na

// ■ (2) MACD Golden Cross (first signal) detection
if granvilleDone and (not macdGC_done) and ta.crossover(macdLine, signalLine)
    macdGC_done    := true
    goldenCrossBar := bar_index
    initialMacdHigh:= macdLine

// ■ (3) Check if MACD line breaks the initial MACD value at the Golden Cross
if macdGC_done and (not breakoutDone) and (macdLine > initialMacdHigh)
    breakoutDone := true

// ■ (4) When MACD retests and crosses above the signal line again, it's the entry timing
// ※ Check for a crossover after the first Golden Cross bar
entryCondition = granvilleDone and macdGC_done and breakoutDone and (bar_index > goldenCrossBar) and ta.crossover(macdLine, signalLine)

// ■ TP and SL settings at entry
if entryCondition
    entryPrice = close
    tpPrice = entryPrice + granvilleRange * 1.618
    slPrice = granvilleLow
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=slPrice, limit=tpPrice)
    // Reset states after entry (for the next entry)
    granvilleDone   := false
    macdGC_done     := false
    breakoutDone    := false
    initialMacdHigh := na
    goldenCrossBar  := na

// ■ Plotting (for reference)
// Display the EMA on the price chart (with fixed title)
plot(ema_val, color=color.orange, title="EMA (20)")

// Plot MACD and Signal in a separate window (with fixed titles)
plot(macdLine, color=color.blue, title="MACD")
plot(signalLine, color=color.red, title="Signal")