高度な移動平均とエングルフィングパターンの定量戦略を組み合わせた

SMA MA 结构突破 吞没形态 技术分析 趋势跟踪 量化交易
作成日: 2025-07-28 13:20:35 最終変更日: 2025-07-28 13:20:35
コピー: 0 クリック数: 230
2
フォロー
319
フォロワー

高度な移動平均とエングルフィングパターンの定量戦略を組み合わせた 高度な移動平均とエングルフィングパターンの定量戦略を組み合わせた

概要

高級平均線と浸食形状の量化戦略は,複数の技術指標を組み合わせた取引システムで,主に移動平均線,浸食形状の図モデル,価格構造の突破に基づいて取引信号を決定する.この戦略は,複数の要因の集結点を探し,取引の信頼性を高め,トレンドフォローの思路を採用し,確認された市場方向で入場機会を探す.核心論理は,66サイクルと85サイクルの単純な移動平均線によって全体的なトレンドの方向を判断し,浸食形状の図によって提供される短期逆転信号を組み合わせ,突破構造 ((突破期前の高点または低点) によってトレンドの持続性を確認し,総合的な取引意思決定システムを形成する.

戦略原則

この戦略の核心となる原則は,複数の技術指標の協調承認に基づいています.

  1. 双移動均線システム策略:66周期と85周期の単純な移動平均線 (SMA) を使用して,市場の全体的なトレンドの方向を決定する.価格が2つの平均線上にあるときは,看板の傾向とみなされ,価格が2つの平均線の下にあるときは,下向きの傾向とみなされる.

  2. 形状認識を吸収する

    • 呑み形を見る:現在の閉盘価格が開盘価格より高く (陽線),そして現在の閉盘価格が前のの閉盘価格より高く,同時に現在の開盘価格が前のの閉盘価格より低いか等しい.
    • 下降沈没形態:現在の閉盘価格が開盘価格より低い (陰線),そして現在の閉盘価格が前のの閉盘価格より低い,そして現在の開盘価格が前のの閉盘価格より高いまたは等しい.
  3. 価格構造の突破

    • 振動高点と低点を識別するために,前後2根のの高低点を使用します.
    • 価格が前期波動高を突破すると,看板構造が確認される
    • 価格が前期変動の低点から下がったとき,下落の構造を確認する
  4. 複数の認証メカニズム戦略は4つの条件のうち少なくとも2つを満たす必要があります.

    • 沈没確認
    • 価格構造の突破が確認された
    • 移動平均線に対する価格の位置
    • 予約されたフィボナッチ復号領域 ((はコードで占位符)
  5. 冷却期: 策略は方向的な冷却機構を実現し,取引信号を誘発した後に指定されたK線数の中で同じ方向の取引信号を繰り返し生成しないようにし,過度取引を避ける.

戦略的優位性

  1. 複数の認証メカニズム:少なくとも2つの技術指標を同時に満たす条件を要求して取引信号を生成する.これは偽信号の可能性を大幅に減らし,信号の信頼性を高めます.

  2. トレンドと逆転の組み合わせ: 移動平均線によって中長期のトレンドを捉え,同時に,短期的な逆転の機会を捕捉するために,吸収形状を利用し,トレンドと逆転戦略の有機的な組み合わせを実現する.

  3. 価格構造分析: 市場構造分析を組み込み,高点と低点の突破を識別してトレンドの持続性を確認する,これはより高度な技術分析方法である.

  4. 冷却装置: 冷却期機能が設計され,連続信号による過剰取引の問題を効果的に回避し,取引頻度を制御するのに役立ちます.

  5. パラメータの可変性戦略の重要なパラメータ (平均線周期,冷却期長さなど) は,異なる市場と時間枠に応じて調整することができ,良好な適応性を持っています.

  6. リスク・リターン・比率の最適化戦略テストによると,約30%の勝率にもかかわらず,利益取引は損失取引に比べて顕著な優位性を有しており”,利益を駆け出し,損失を制御する”という取引原則に適合している.

戦略リスク

  1. 偽の突破の危険性価格構造の突破は,偽の突破が発生する可能性があり,特に波動的な市場では,誤った取引シグナルを引き起こす可能性があります. 解決方法は,突破後の継続性を要求するなど,確認メカニズムを追加するか,または取引量分析を組み合わせることです.

  2. 平均線遅れ移動平均線は本質的に遅滞の指標であり,急速な変化の市場では価格変化をタイムリーに反映することができないため,入場信号の遅延を引き起こす.より敏感な指標であるEMAや平均線周期の調整を使用することを検討してこの問題を緩和することができます.

  3. 過剰取引のリスク策略の作者は,冷却装置があるにもかかわらず,この策略はより多くの信号を生成し,取引が頻度が高い可能性があると述べています. 厳格なフィルタリング条件を追加したり冷却期間を延長したりすることを推奨しています.

  4. 市場環境への依存:この戦略は,トレンドがはっきりした市場でうまく機能しますが,横横整理または高波動の市場で誤ったシグナルが多く発生する可能性があります. 市場環境識別機構を追加し,異なる市場状態で戦略パラメータを調整したり,取引を一時停止したりすることができます.

  5. リスクの抑制の欠如: コードに明確にストップ・ロズ戦略が設定されていないため,単一の損失が過大になる可能性があります.ATRベースのストップまたは固定パーセントのストップなどの厳格なストップメカニズムを導入することが推奨されています.

戦略最適化の方向性

  1. フィボナッチ回線区域の改善:現在のコードのフィボナッチ回報チェックは,位置符で ((forever return true) であり,真のフィボナッチ回報領域識別を実現し,エントリーポイントにより正確な価格レベルサポートを提供します.

  2. 音量を上げる確認取引量分析を戦略に組み込むことは,価格突破の有効性を確認し,偽突破のリスクを軽減するのに役立ちます.特に構造的な突破の際には,放出量との組み合わせは,突破の信頼性を向上させることができます.

  3. 動的調整パラメータ市場変動 (ATR指数など) に基づいて,平均線周期と冷却期の長さを動的に調整することで,戦略が異なる市場環境により適当に適応できます.

  4. ストップダストメカニズムを追加リスク管理に基づくストップ・ストップ戦略,例えばATRに基づくダイナミック・ストップ,または前期サポート・レジスタンス・ポイントをストップ・ストップ・ポイントとして使用する.

  5. 市場環境のフィルター: ADX指標を用いて市場がトレンド状態にあるかどうかを判断し,トレンド状態でない市場で取引を一時停止するか,戦略パラメータを調整するなど,市場環境認識モジュールを追加する.

  6. タイムフィルター取引時間フィルターを追加し,重要な経済データ発表や市場開閉などの波動性や流動性の低い時期を避ける.

  7. 信号の強度階層:条件を満たす数量と強度に基づいて,信号を階層化し,それに応じてポジションサイズを調整し,より精密なポジション管理を実現する.

要約する

高級平均線と吞食形態の定量化戦略は,複数の技術分析方法を組み合わせた総合的な取引システムであり,移動平均線,吞食形態と価格構造の突破の協同作用によって潜在的な取引機会を識別する.この戦略の主要な利点は,偽信号を効果的に減らすことができる複数の確認機構であり,取引の質を向上させるものである.同時に,戦略の冷却機構は,取引頻度を制御し,過剰取引を避けるのに役立ちます.

しかし,この戦略には,偽突破,平均線遅れ,市場環境依存などのリスクもあります.フィボナッチ回調領域の識別を完善し,取引量確認,動的調整パラメータの増加,より優れたリスク管理メカニズムの追加などの最適化措置を施することによって,戦略の性能がさらに向上する見込みがあります.

全体として,この戦略は理論上の基礎と実用的な可能性が良好で,特に複数の技術指標を使用して取引決定をする傾向のあるトレーダーに適しています.しかし,注意すべきことは,いかなる取引戦略も,実際の適用の前に十分な反省と検証を行い,個人のリスクの承受能力と市場環境に応じて適切に調整する必要があります.

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

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © IamKRfx

//@version=6
//@version=6
strategy("Refined MA + Engulfing (M5 + Confirmed Structure Break)", overlay=true, default_qty_type=strategy.fixed, default_qty_value=5)

// === INPUTS ===
ma1Len = input.int(66, title="MA1 Length")
ma2Len = input.int(85, title="MA2 Length")
cooldownBars = input.int(5, title="Directional Cooldown (bars)")

// === MOVING AVERAGES ===
ma1 = ta.sma(close, ma1Len)
ma2 = ta.sma(close, ma2Len)
plot(ma1, color=color.orange, title="MA 66")
plot(ma2, color=color.blue, title="MA 85")

aboveMAs = close > ma1 and close > ma2
belowMAs = close < ma1 and close < ma2

// === ENGULFING LOGIC ===
bullEngulf = close > open and close > close[1] and open <= close[1]
bearEngulf = close < open and close < close[1] and open >= close[1]

// === SWING HIGH/LOW DETECTION ===
pivotHigh = ta.pivothigh(high, 2, 2)
pivotLow  = ta.pivotlow(low, 2, 2)

var float lastSwingHigh = na
var float lastSwingLow = na
var string marketStructure = "none"  // can be "bullish", "bearish", or "none"
var bool structureConfirmed = false

// Track last swing points
if not na(pivotHigh)
    lastSwingHigh := pivotHigh
if not na(pivotLow)
    lastSwingLow := pivotLow

// Confirm structure breaks
bullBreakConfirmed = not na(lastSwingHigh) and close > lastSwingHigh
bearBreakConfirmed = not na(lastSwingLow) and close < lastSwingLow

if bullBreakConfirmed
    marketStructure := "bullish"
    structureConfirmed := true
if bearBreakConfirmed
    marketStructure := "bearish"
    structureConfirmed := true

bullishStructure = marketStructure == "bullish" and structureConfirmed
bearishStructure = marketStructure == "bearish" and structureConfirmed

// === PLACEHOLDER FOR FIB CONFLUENCE ===
inFibLong = true
inFibShort = true

// === CONFLUENCE CHECK (2 of 4) ===
longConfluence = 0
longConfluence += bullEngulf ? 1 : 0
longConfluence += bullishStructure ? 1 : 0
longConfluence += aboveMAs ? 1 : 0
longConfluence += inFibLong ? 1 : 0

shortConfluence = 0
shortConfluence += bearEngulf ? 1 : 0
shortConfluence += bearishStructure ? 1 : 0
shortConfluence += belowMAs ? 1 : 0
shortConfluence += inFibShort ? 1 : 0

longReady = longConfluence >= 2
shortReady = shortConfluence >= 2

// === COOLDOWN TRACKING ===
var int lastLongBar = na
var int lastShortBar = na
canLong = na(lastLongBar) or (bar_index - lastLongBar >= cooldownBars)
canShort = na(lastShortBar) or (bar_index - lastShortBar >= cooldownBars)

// === FINAL ENTRY CONDITIONS ===
longCondition = longReady and canLong and bullishStructure and aboveMAs
shortCondition = shortReady and canShort and bearishStructure and belowMAs

if (longCondition)
    strategy.entry("Long", strategy.long)
    lastLongBar := bar_index

if (shortCondition)
    strategy.entry("Short", strategy.short)
    lastShortBar := bar_index