複数確認価格反転戦略:MACDクロスオーバーとエングルフィングパターンを組み合わせた取引システム

MACD EMA 吞没形态 交叉信号 价格反转 技术分析
作成日: 2025-06-09 14:21:00 最終変更日: 2025-06-09 14:21:00
コピー: 0 クリック数: 279
2
フォロー
319
フォロワー

複数確認価格反転戦略:MACDクロスオーバーとエングルフィングパターンを組み合わせた取引システム 複数確認価格反転戦略:MACDクロスオーバーとエングルフィングパターンを組み合わせた取引システム

概要

多重確認価格逆転策略は,グラフ形状分析と動向指標を組み合わせた量化取引システムで,市場における吸収形状の識別とMACD指標の交叉確認を組み合わせて潜在的市場逆転点を捕捉する.この策略の核心理念は,多重技術指標の確認を介して取引信号の信頼性を高め,偽の突破によるリスクを回避することです.具体的には,戦略は,最初に市場における吸収形状の出現を識別し,次に,想定されたウィンドウ期間の間に,それぞれMACD交叉信号を待っています.

戦略原則

この戦略は2つの核心的な技術分析の要素,つまり,吞食形態とMACD指標の交差を中心に動作する.

  1. 形状認識を吸収する

    • を飲み込む形態 ((Bullish Engulfing):現在のは陽線 ((閉盘価格が開盘価格より高),以前のは陰線 ((閉盘価格が開盘価格より低),そして現在のの実体が完全に”飲み込む”以前のの実体 ((現在の開盘価格が前回の閉盘価格より低,現在の閉盘価格が前回の開盘価格より高).
    • 転落して飲み込まれる形 ((Bearish Engulfing):現在のは陰線,前のは陽線であり,現在のは前のを完全に”飲み込んでいる”.
  2. MACDのクロス確認

    • MACD線とシグナル線は,標準の公式で計算されます. 急速EMA ((デフォルト12サイクル),遅いEMA ((デフォルト26サイクル) とシグナル線EMA ((デフォルト9サイクル) を使用します.
    • MACD交差:MACD線で信号線を穿越する.
    • MACD交差:MACD線下を通過する信号線.
  3. タイムウィンドウの論理

    • 戦略的使用barsSinceBullそしてbarsSinceBearこの変数は,過去1回から発生した柱状の数を追跡します.
    • MACD交差は,消化形態の出現後にのみ発生する.windowBars取引の信号は, (デフォルトの3) 柱内でのみ発信されます.
  4. 入学条件

    • ランキングlongCondition): の飲み込み形が現れた後のウィンドウ期間に,MACDラインで信号線を穿ぐ。
    • 裸で入場するshortCondition):下落の飲み込み形が現れた後のウィンドウ期間に,MACDは線下から信号線を貫く.
  5. 取引実行

    • 多頭条件が満たされると,戦略は多頭ポジションに入り,既存の空頭ポジションを平らにする.
    • 空頭条件が満たされると,戦略は空頭ポジションに入り,既存の多頭ポジションを平らにする.

戦略的優位性

  1. 複数の認証メカニズム:図形と技術指標を組み合わせることで,策略は偽信号の可能性を減らし,取引の正確性を高めます. 吞食形は価格行動の直接的な表れであり,MACDは動態指標の代表であり,両者の組み合わせにより,異なる角度から市場の逆転信号を確認できます.

  2. タイムウィンドウの柔軟性: ポリシーは,MACD交差が,吞食形状の後に発生しなければならない最大柱数 (,) をユーザーにカスタマイズすることを許可する.windowBarsこの柔軟性は,異なる市場や時間枠の特徴に戦略を適応させています.

  3. 明確な視覚的フィードバック: 戦略は,様々なシグナルをグラフにマークします ((看板/下落の吸収形,MACDの交差点,実際のエントリーポイント),これはトレーダーが戦略のパフォーマンスを直観的に理解し評価するのに役立ちます.

  4. 自動ポジション管理: 戦略は,逆のポジションの平仓を自動処理し,取引管理プロセスを簡素化し,人為的なエラーの可能性を減らす.

  5. パラメータの可変性:MACDパラメータ ((快線,慢線,信号線周期) は,異なる市場条件に応じて最適化され,戦略の適応性を強化する.

戦略リスク

  1. 遅滞のリスク:MACDは遅滞の指標として,迅速に変化する市場において反応が遅れており,入場ポイントが望ましくありません.さらに,2つの条件が同時に満たされるのを待つことは,入場ポイントをさらに遅らせ,潜在的に価格の変化の一部を逃す可能性があります.

  2. 横盤市場も不振だった.横断市場では,明確なトレンドがない場合,サグロップとMACDの交差は,頻繁に取引し,潜在的に損失を招く多くの偽信号を生成する可能性があります.

  3. リスクの抑制の欠如市場が逆転する際には下落のリスクが大きくなる可能性もある.

  4. 特定のパターンへの過度の依存戦略は,他の重要な市場情報や技術指標を無視して,吸収形状とMACD交差の組み合わせに大きく依存しています.

  5. パラメータ感度: 策略性能はMACDパラメータとウィンドウサイズ設定に非常に敏感であり,不適切なパラメータ選択は過度最適化と将来の不良パフォーマンスを引き起こす可能性があります.

最適化の方向

  1. トレンドフィルターを追加:SMA50 ((コードで注釈されている) といった他のトレンド指標を追加することで,取引方向が主要トレンドと一致していることを確認できます.例えば,価格がSMA50より高い場合にのみ多額の取引を行い,SMA50より低い場合に空きを取ります.これは逆転取引のリスクを大幅に軽減します.

  2. ストップ・ロズ・アンド・リターン・メカニズム: 戦略にストップ・ロズ・シートと利益目標,ATRに基づくストップ・ロズやサポート/レジスタンスポジションの利益目標などを追加して,リスクをより良く管理し,利益をロックする.

  3. 最適化パラメータの選択:MACDパラメータとウィンドウサイズをリターンして最適化し,特定の市場と時間枠に最適なパラメータの組み合わせを見つけます. 市場変動に応じてパラメータを自動的に調整する自己適応パラメータの方法を使用することを検討します.

  4. トランザクション量確認: 取引量分析を戦略に組み込み,反転信号が十分な取引量でサポートされていることを確認し,信号の信頼性を向上させる.

  5. 他の指標を統合する:RSI,ランダム指数,ブリン帯などの他の技術指標を追加することを検討し,より包括的な取引条件を作り,偽信号をさらに減らす.

  6. タイムフィルター取引時間フィルターを導入し,重要な経済データ発表や市場の変動が特に高い時期に取引を避ける.

  7. 入学タイミングを最適化: 入場条件の変更によって入場価格を改善し,滑り点を減らすことができるか調べる.

要約する

多重確認価格逆転戦略は,吞食形態とMACDの交差を組み合わせた定量取引システムで,複数の技術指標の確認によって市場の逆転点を捕捉することを目的としています.この戦略の主要な利点は,多重確認機構と明確なビジュアルフィードバックであり,これは偽信号を減らすのに役立ち,取引の正確性を向上させます.しかし,戦略には,遅滞性,横断市場での不良パフォーマンス,明確なリスク管理機構の欠如などの固有のリスクもあります.

戦略の安定性と収益性を高めるために,いくつかの重要な最適化を実施することを提案しています. 取引方向が主要なトレンドと一致していることを確認するためにトレンドフィルターを追加する. リスクを管理するために適切な止まりと利益の仕組みを実現する. 特定の市場条件に合わせてMACDパラメータとウィンドウサイズを最適化する.

この多層認証のアプローチは,潜在的な逆転の機会を捉えようとする一方,複数の認証を要求することでリスクを軽減するバランスの取れた取引戦略を表しています.技術分析に基づいて堅牢な取引システムを構築しようとする量化トレーダーにとって,これは堅固な出発点を提供します.

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

//@version=5
strategy("Darren - Engulfing + MACD Cross", overlay=true)

// 1. Inputs
// smaLength   = input.int(50, "SMA Length")
macdFast    = input.int(12, "MACD Fast Length")
macdSlow    = input.int(26, "MACD Slow Length")
macdSignal  = input.int(9,  "MACD Signal Length")
windowBars  = input.int(3,  "Max Bars Between Engulfing and MACD Cross")

// 2. Indicators
// sma50 = ta.sma(close, smaLength)
// plot(sma50, color=color.blue, title="SMA 50")

[macdLine, signalLine, _] = ta.macd(close, macdFast, macdSlow, macdSignal)
macdHist = macdLine - signalLine
plot(macdHist, title="MACD Histogram", style=plot.style_columns, color=(macdHist >= 0 ? color.green : color.red))

// 3. Detect Engulfing Patterns
bullEngulfing = (close[1] < open[1]) and (close > open) and (open < close[1]) and (close > open[1])
bearEngulfing = (close[1] > open[1]) and (close < open) and (open > close[1]) and (close < open[1])

// 4. MACD Crosses
macdCrossUp   = ta.crossover(macdLine, signalLine)
macdCrossDown = ta.crossunder(macdLine, signalLine)

// 5. Bars Since Last Engulfing
barsSinceBull = ta.barssince(bullEngulfing)
barsSinceBear = ta.barssince(bearEngulfing)

// 6. Entry Conditions
longCondition  = (barsSinceBull <= windowBars) and macdCrossUp //and (close > sma50)
shortCondition = (barsSinceBear <= windowBars) and macdCrossDown //and (close < sma50)

// 7. Plot Engulfing & MACD Crossover Markers
// Bullish engulfing on price chart
plotshape(bullEngulfing, title="Bull Engulf", style=shape.labelup, text="Bull", location=location.belowbar, color=color.green, size=size.small)
// Bearish engulfing on price chart
plotshape(bearEngulfing, title="Bear Engulf", style=shape.labeldown, text="Bear", location=location.abovebar, color=color.red, size=size.small)
// MACD cross‐up on price chart
plotshape(macdCrossUp, title="MACD Cross Up", style=shape.triangleup, text="Up", location=location.belowbar, color=color.lime, size=size.tiny)
// MACD cross‐down on price chart
plotshape(macdCrossDown, title="MACD Cross Down", style=shape.triangledown, text="Down", location=location.abovebar, color=color.orange, size=size.tiny)

// 8. Plot Entry Signals
plotshape(longCondition,  title="Long Entry",  style=shape.triangleup,   location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, title="Short Entry", style=shape.triangledown, location=location.abovebar, color=color.red,   size=size.small)

// 9. Entries & Exits
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.close("Short")

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.close("Long")