サポートとレジスタンスレベルのブレイクスルーとバックテストに基づくマルチレベルの定量的トレンド取引戦略

Pivot SR MA BREAKOUT RETEST Trend
作成日: 2025-02-20 16:00:35 最終変更日: 2025-02-20 16:00:35
コピー: 2 クリック数: 377
2
フォロー
319
フォロワー

サポートとレジスタンスレベルのブレイクスルーとバックテストに基づくマルチレベルの定量的トレンド取引戦略 サポートとレジスタンスレベルのブレイクスルーとバックテストに基づくマルチレベルの定量的トレンド取引戦略

概要

これは,レジスタンスブレイクとレジスタンスブレイクを支える量的な取引戦略である. 戦略は,重要な価格のサポートとレジスタンスビレイクを識別して,価格のブレークスルーの後のレジスタンス確認ポイントで取引を行う. この戦略は,左右のバー数数ダイナミックポジショニングのキーポイントを左右に回転させ,レジスタンスビレイクを回転容量の差と組み合わせて過渡する偽のブレークスを採用し,取引の正確性と安定性を向上させる.

戦略原則

戦略は主に以下のコアロギーを含んでいます.

  1. 指定された数のK線を左右に回して,キーサポートとレジスタンスピボットポイントを識別する
  2. 状態変数を設定して,候補の支柱の抵抗位の突破と反測を追跡する
  3. 新しいピボットポイントの出現に伴い,候補者サポートのレジスタンス位置を更新する
  4. 価格が候補サポートのレジスタンスレベルを突破し,反測したときに取引する:
    • 価格がサポートから下がって,サポートの近くまで上昇すると,さらに多く行う.
    • 価格がレジスタンスから抜け,レジスタンス近くに戻ると空白
  5. 容量差パラメータを使用して,反測時の価格変動をフィルタリングし,信号の質を向上させる

戦略的優位性

  1. クラシックな技術分析の理論と 論理的な理解力
  2. ダイナミックなキーポイント認識で適応力
  3. 突破と反復の二重確認と組み合わせた偽信号の減少
  4. 容量差パラメータによるノイズフィルタリングにより,精度が向上する
  5. コード構造が明確で,維持と拡張が容易です.
  6. 複数の時間帯と品種に適用

戦略リスク

  1. 市場が揺れ動いていると,頻繁に取引が損失を招く可能性があります.
  2. 突破した偽信号は残っている.
  3. パラメータの最適化には過剰適合のリスクがある可能性がある
  4. 市場が波動しすぎると,最大限のストップが起こりうる.
  5. 取引コストへの影響

戦略最適化の方向性

  1. トレンドフィルターを追加し,主要トレンドのみで取引する
  2. 取引量確認メカニズムへの参加
  3. 入学時間を最適化し,技術指標の確認を追加する
  4. 防水装置の改良
  5. ポジション管理ロジックを追加
  6. 複数のタイムサイクル分析を考慮する

要約する

この戦略は,古典的なサポートレジスタンス理論と突破反測論理によって構築され,優れた理論的基盤を有している.パラメータの最適化とリスク管理によって安定した取引効果を得ることができる.戦略のコード構造は明確で,理解しやすく拡張し,強力な実用的な価値を有している.市場状況と個人のリスク好みを組み合わせた適切なパラメータ調整が実況取引で推奨されている.

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

//@version=5
strategy("SR Breakout & Retest Strategy (4hr)", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ===== USER INPUTS =====
leftBars    = input.int(3, "Left Pivot Bars", minval=1)
rightBars   = input.int(3, "Right Pivot Bars", minval=1)
tolerance   = input.float(0.005, "Retest Tolerance (Fraction)", step=0.001)

// ===== PIVOT CALCULATION =====
pLow  = ta.pivotlow(low, leftBars, rightBars)
pHigh = ta.pivothigh(high, leftBars, rightBars)

// ===== STATE VARIABLES FOR CANDIDATE LEVELS =====
var float candidateSupport  = na
var bool  supportBroken     = false
var bool  supportRetested   = false

var float candidateResistance = na
var bool  resistanceBroken    = false
var bool  resistanceRetested  = false

// ===== UPDATE CANDIDATE LEVELS =====
if not na(pLow)
    candidateSupport := pLow
    supportBroken    := false
    supportRetested  := false

if not na(pHigh)
    candidateResistance := pHigh
    resistanceBroken    := false
    resistanceRetested  := false

// ===== CHECK FOR BREAKOUT & RETEST =====
// -- Support: Price breaks below candidate support and then retests it --
if not na(candidateSupport)
    if not supportBroken and low < candidateSupport
        supportBroken := true

    if supportBroken and not supportRetested and close >= candidateSupport and math.abs(low - candidateSupport) <= candidateSupport * tolerance
        supportRetested := true
        label.new(bar_index, candidateSupport, "Support Retest", 
                  style=label.style_label_up, color=color.green, textcolor=color.white, size=size.tiny)
        // Example trading logic: Enter a long position on support retest
        strategy.entry("Long_Support", strategy.long)

// -- Resistance: Price breaks above candidate resistance and then retests it --
if not na(candidateResistance)
    if not resistanceBroken and high > candidateResistance
        resistanceBroken := true

    if resistanceBroken and not resistanceRetested and close <= candidateResistance and math.abs(high - candidateResistance) <= candidateResistance * tolerance
        resistanceRetested := true
        label.new(bar_index, candidateResistance, "Resistance Retest", 
                  style=label.style_label_down, color=color.red, textcolor=color.white, size=size.tiny)
        // Example trading logic: Enter a short position on resistance retest
        strategy.entry("Short_Resistance", strategy.short)

// ===== PLOTTING =====
plot(pLow, title="Pivot Low (Support)", style=plot.style_circles, color=color.green, linewidth=2)
plot(pHigh, title="Pivot High (Resistance)", style=plot.style_circles, color=color.red, linewidth=2)