高度なリトレースメント取引トライアングルブレイクアウトとボリューム価格確認戦略

SMA RSI TSL EMA 三角形突破 交易量确认 动态止损 趋势跟踪 斐波那契
作成日: 2025-06-03 09:57:46 最終変更日: 2025-06-03 09:57:46
コピー: 0 クリック数: 314
2
フォロー
319
フォロワー

高度なリトレースメント取引トライアングルブレイクアウトとボリューム価格確認戦略 高度なリトレースメント取引トライアングルブレイクアウトとボリューム価格確認戦略

概要

高級撤回取引トライアングルブレイクと量値確認戦略は,技術的形態認識,取引量確認,動的リスク管理を組み合わせた量化取引方法である.この戦略は,1時間チャート最適化専用で,それぞれトライアングルブレイクと量値確認の原則に基づく2つの独立した入場設定を提供しています.戦略の核心思想は,高確率の突破の機会を捉え,ダイナミックにストップロスを追跡してリスクを効果的に管理することであり,特に利潤が特定の値に達すると,利益をロックするために自動的にストップロスを締め込む.この二重条件の入場機構は,戦略を異なる市場の状況下で柔軟に保つことができ,スマートストップロスはリスクと利益のバランスをとるのに役立ちます.

戦略原則

この戦略は2つの鍵となる入場設定と,精巧に設計された退出メカニズムに基づいています.

入場設定1 - ゴールデン・トライアングル突破

  • 近隣の高低点の軸を使って三角形状を検出する
  • 価格がトライアングルの頂点より高く,同時に50サイクルSMAより高く閉じる時,看板の突破を確認する
  • 閉店を突破する際に入場
  • この設定は,統合期間の後の初期動力の取引を捕捉するのに特に適しています.

入場設定2 - 価格と取引量確認

  • 平均回帰による取引量急増:
    • 価格が50SMAを下回った後,閉盤が再び上回り
    • “上日”を少なくとも 1 つ要求する (現在の閉店価格が前の閉店価格より高い)
    • 取引量は50サイクルSMAより高く,前4日の毎日より高くなければなりません.
  • 取引の確認日の終了時に入場
  • このパターンは,三角形の形状が目立たないときに特に有効ですが,強度が蓄積されます.

退出戦略 - ダイナミック・トラッキング・ストップ・ローズ

  • 初期ストップは,入場後に達成された最高価格の10%以下に設定されます.
  • 利潤が10%に達すると,ストップ・ロスは5%まで引き締まる.
  • このメカニズムは,トレーダーが利益を維持しながらトレンドを継続することを可能にします.

コード実装上では,戦略は簡略化された枢軸点を使用して三角形状を認識し,現在の価格とSMAを比較して価格動きを確認する.取引量確認については,戦略は取引量が移動平均と前回期の取引量より高いかどうかをチェックする.ダイナミック・トラッキング・ストップロスは,取引で達成された最高価格を継続的に更新し,対応するストップロスを計算することによって実現する.

戦略的優位性

  1. 二重入学制度: 2つの独立した入場設定を提供することで,戦略は異なる市場環境に適応し,有利な取引機会を捕捉する可能性を高めます. 市場が明らかな統合期にあるときに,設定1は突破口を捕捉することができます.

  2. リスク管理の統合: 組み込みのダイナミック・トラッキング・ストップ・ロズメカニズムが,市場の変動に自動的に適応し,資本を保護しながら,利益の成長を可能にします.特に,利益が既定の値に達したとき,自動的にストップ・ロスを締め付ける機能は,利益をロックし,利益を逃げるという矛盾を効果的にバランスします.

  3. フィルター偽突破:SMAフィルターと取引量確認を組み合わせることで,戦略は偽の突破のリスクを軽減する.価格は形状を突破するだけでなく,SMA上にとどまらなければなりません.設定2には,重要な取引量サポートが必要であり,これは信号の質を大幅に向上させます.

  4. 視覚支援: 戦略は,取引中の背景の色,リアルタイムの表板,様々な図の要素を含む豊富な視覚的な指示器を提供し,トレーダーが戦略の状態と信号を容易に監視できるようにします.

  5. フレキシブルな時間枠の最適化: 策略は1時間チャートに最適化されているが,そのパラメータは異なる時間枠に適合するように調整でき,策略の適用範囲を拡大する.

戦略リスク

  1. 市場条件に依存するこの戦略は横軸から看板市場で最適で,強い下落傾向や高波動の市場では不良である可能性があります. 熊市環境では,偽の突破のリスクが増加し,連続的な損失を引き起こす可能性があります.

  2. スライドポイントと実行リスク:実際の取引では,特に流動性が低い市場では,入場と停止のポイントは,戦略の全体的なパフォーマンスを影響する滑り点を経験することがあります. このリスクを軽減するために,市場価格の代わりに制限価格のリストを使用することを検討することができます.

  3. パラメータ最適化の課題戦略は複数のパラメータ (SMA長さ,止損率など) に依存し,これらのパラメータは特定の市場と時間枠に応じて最適化する必要があります.不適切なパラメータ設定は,過適合または不良パフォーマンスを引き起こす可能性があります.

  4. 過剰取引のリスク:特定の市場条件下では,戦略が過剰な信号を生じ,過剰取引と取引コストを増加させる可能性があります. 追加のフィルターまたは冷却期間の導入は,このリスクを軽減するのに役立ちます.

  5. 減損最適化バランスダイナミックなストップ・メカニズムはこの戦略の優位性ですが,ストップ・レジの設定が過度に厳格であれば有利な取引を早期に終了させ,過度に幅広く設定すると利潤の反転につながる可能性があります. 特定の市場の波動性に応じてストップ・レジのパラメータを注意深く調整する必要があります.

戦略最適化の方向性

  1. トレンドフィルターに追加より広範なトレンド指標 (例えば,より長期の移動平均またはADX) を統合することで,有利な市場方向でのみ取引する戦略を助けることができます.例えば,長期のSMA (例えば,200サイクル) が上向きに傾いている場合にのみ,看板が入場することを許可する条件を追加することができます.

  2. 取引量確認の論理を最適化する:現在の取引量確認は,前4サイクルより取引量が高いことを要求しており,これは市場条件に応じて過度に厳格である場合も十分ではない場合もあります. 市場変動の動向に応じて調整される取引量値下げの自在な実現は,設定2の有効性を向上させることができます.

  3. タイムフィルターを統合する特定の取引時期は,他の時期よりもこの戦略に適しているかもしれません. タイムフィルターを追加して,不利な時期 (市場開店または閉店前の高波動期など) の取引を避けることで,全体的なパフォーマンスを向上させることができます.

  4. 利益の部分封鎖を実現:現在の退出戦略は二元的な ((所有全額または全額退出) である.分期退出システムを導入し,利益が増加するにつれて順位を徐々に縮小し,いくつかの上昇の可能性を保持しながら利益の一部をロックすることができます.

  5. 関連資産確認を追加する:特定の市場では,関連する資産の確認が信号の質を向上させることができる.例えば,株式取引では,部門または業界の強さが追加のフィルターとして機能し,外為では,関連する通貨ペアの行動が追加の確認を提供することができる.

  6. 市場変動調整を統合する市場変動 (ATRや歴史的変動率など) に基づき,ストップレベルを動的に調整することで,戦略を異なる市場条件により良く適応させることができます. 低変動の環境ではより緊密なストップを使用し,高変動の環境ではより広いストップを使用します.

要約する

高級撤回取引トライアングル突破と量価格確認戦略は,技術的形態認識,動量原理,および取引量分析を組み合わせた総合的な取引方法を提供します.この戦略は,二つの互補的な入場設定を提供することにより,異なる市場条件下で柔軟性を維持し,その動的トラッキングストップ・メカニズムは,最適化されたリスク管理を提供します.

戦略の主要な優位性は,その多面的な入場基準と統合されたリスク管理にあるため,一日の内から短期波段までのさまざまな取引スタイルに適しています.しかし,市場条件依存性とパラメータ最適化チャレンジは,注意が必要となる主要なリスクです.

トレンドフィルターを追加し,取引量確認の論理を最適化し,または波動性調整を実現することで,トレーダーは戦略のパフォーマンスをさらに強化することができます.最終的に,この戦略は,個人リスクの好みと市場の特徴に応じてカスタマイズできる堅固な枠組みを提供し,技術的に駆動された,リスク制御された取引方法を求めるトレーダーにとって価値あるツールになります.

ストラテジーソースコード
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00: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/
// © eemani123

//@version=5
strategy("Golden Triangle Strategy (1H, Setup 1 & 2)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
smaLength = input.int(34, title="SMA Length (1H Optimized)", minval=1)
volumeSmaLength = input.int(34, title="Volume SMA Length", minval=1)
trailingStopPct = input.float(6.0, title="Initial Trailing Stop Loss (%)", minval=0.1)
tightenPct = input.float(5.0, title="Tightened TSL (%)", minval=0.1)
profitTrigger = input.float(10.0, title="Tighten TSL After Profit (%)", minval=1)
maxLookback = input.int(10, title="Max Lookback Bars for Setup 2", minval=1)
pivotStrength = input.int(2, title="Pivot Strength (Shorter for 1H)", minval=1)

// === SMA Calculations ===
smaPrice = ta.sma(close, smaLength)
smaVolume = ta.sma(volume, volumeSmaLength)

// === Setup 1: Golden Triangle (simplified with pivots) ===
pivotHigh = ta.pivothigh(high, pivotStrength, pivotStrength)
pivotLow = ta.pivotlow(low, pivotStrength, pivotStrength)

var float triangleTop = na
var float triangleBottom = na

if not na(pivotHigh)
    triangleTop := pivotHigh
if not na(pivotLow)
    triangleBottom := pivotLow

triangleBreakout = ta.crossover(close, triangleTop) and close > smaPrice
enterSetup1 = triangleBreakout

// === Setup 2: Price & Volume Confirmation ===
priceBelowSMA = ta.barssince(close < smaPrice) <= maxLookback
priceConfirm = close > smaPrice and close > close[1]
volumeConfirm = volume > smaVolume and volume > volume[1] and volume > volume[2] and volume > volume[3] and volume > volume[4]
enterSetup2 = priceConfirm and priceBelowSMA and volumeConfirm

// === Entry & TSL Tracking ===
var bool inTradeSetup1 = false
var bool inTradeSetup2 = false
var float entryPrice1 = na
var float entryPrice2 = na
var float highestSinceEntry1 = na
var float highestSinceEntry2 = na
var float trailingStop1 = na
var float trailingStop2 = na

// === Entry Conditions ===
if enterSetup1 and not inTradeSetup1
    strategy.entry("Buy Setup 1", strategy.long)
    entryPrice1 := close
    highestSinceEntry1 := close
    inTradeSetup1 := true

if enterSetup2 and not inTradeSetup2
    strategy.entry("Buy Setup 2", strategy.long)
    entryPrice2 := close
    highestSinceEntry2 := close
    inTradeSetup2 := true

// === Update Trailing Stops with Tightening ===
if inTradeSetup1
    highestSinceEntry1 := math.max(highestSinceEntry1, high)
    profit1 = (highestSinceEntry1 - entryPrice1) / entryPrice1 * 100
    activePct1 = profit1 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop1 := highestSinceEntry1 * (1 - activePct1 / 100)

if inTradeSetup2
    highestSinceEntry2 := math.max(highestSinceEntry2, high)
    profit2 = (highestSinceEntry2 - entryPrice2) / entryPrice2 * 100
    activePct2 = profit2 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop2 := highestSinceEntry2 * (1 - activePct2 / 100)

// === Exit Conditions ===
if inTradeSetup1 and close < trailingStop1
    strategy.close("Buy Setup 1", comment="TSL Hit - Setup 1")
    inTradeSetup1 := false
    entryPrice1 := na
    highestSinceEntry1 := na
    trailingStop1 := na

if inTradeSetup2 and close < trailingStop2
    strategy.close("Buy Setup 2", comment="TSL Hit - Setup 2")
    inTradeSetup2 := false
    entryPrice2 := na
    highestSinceEntry2 := na
    trailingStop2 := na

// === Plotting ===
plot(smaPrice, color=color.orange, title="SMA")
//plot(triangleTop, title="Triangle Top", color=color.red, style=plot.style_linebr, linewidth=2)
//plot(triangleBottom, title="Triangle Bottom", color=color.green, style=plot.style_linebr, linewidth=2)
plot(inTradeSetup1 ? trailingStop1 : na, color=color.red, title="Trailing Stop - Setup 1", linewidth=2,style=plot.style_linebr)
plot(inTradeSetup2 ? trailingStop2 : na, color=color.blue, title="Trailing Stop - Setup 2", linewidth=2,style=plot.style_linebr)

plotshape(enterSetup1, title="Triangle Breakout Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(enterSetup2, title="Volume Confirmed Entry", location=location.belowbar, color=color.blue, style=shape.circle, size=size.small)

// === Alerts ===
alertcondition(enterSetup1, title="Setup 1 Buy", message="Golden Triangle Breakout (Setup 1) - BUY")
alertcondition(enterSetup2, title="Setup 2 Buy", message="Volume + Price Confirmation (Setup 2) - BUY")

// === Background highlight during trades ===
bgcolor(inTradeSetup1 or inTradeSetup2 ? color.new(color.green, 85) : na, title="In-Trade Highlight")


// === Weekly Fibonacci Pivot Levels (R3 / S3) ===
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyLow = request.security(syminfo.tickerid, "W", low)
weeklyClose = request.security(syminfo.tickerid, "W", close)

weeklyPivot = (weeklyHigh + weeklyLow + weeklyClose) / 3
weeklyRange = weeklyHigh - weeklyLow
fibR3 = weeklyPivot + 1.000 * weeklyRange
fibS3 = weeklyPivot - 1.000 * weeklyRange

// === Plot R3 and S3 ===
plot(fibR3, title="Weekly Fib R3", color=color.fuchsia, linewidth=2, style=plot.style_circles)
plot(fibS3, title="Weekly Fib S3", color=color.teal, linewidth=2, style=plot.style_circles)
// === Weekly Fibonacci Pivot Levels (R3 / S3) ===