Strategi dagangan arah aliran kuantitatif berbilang peringkat berdasarkan penembusan tahap sokongan dan rintangan dan ujian belakang

Pivot SR MA BREAKOUT RETEST Trend
Tarikh penciptaan: 2025-02-20 16:00:35 Akhirnya diubah suai: 2025-02-20 16:00:35
Salin: 2 Bilangan klik: 377
2
fokus pada
319
Pengikut

Strategi dagangan arah aliran kuantitatif berbilang peringkat berdasarkan penembusan tahap sokongan dan rintangan dan ujian belakang Strategi dagangan arah aliran kuantitatif berbilang peringkat berdasarkan penembusan tahap sokongan dan rintangan dan ujian belakang

Gambaran keseluruhan

Ini adalah strategi perdagangan kuantitatif berdasarkan penembusan dan penarikan semula tahap rintangan sokongan. Strategi ini melakukan perdagangan dengan mengenal pasti titik pengesahan penarikan semula harga yang penting dengan mengenal pasti tahap sokongan dan rintangan harga yang penting. Strategi ini menggunakan kedudukan bar dinamik yang melihat ke kiri dan kanan pada titik-titik penting, dan menggabungkan perbezaan kapasiti penarikan semula untuk menyaring penembusan palsu, untuk meningkatkan ketepatan dan kestabilan perdagangan.

Prinsip Strategi

Strategi ini terdiri daripada logik teras berikut:

  1. Mengenali titik pivot sokongan dan rintangan yang penting dengan melihat ke kiri dan ke belakang pada bilangan K yang ditentukan
  2. Variabel status yang ditetapkan untuk mengesan penembusan dan pengesanan semula tahap rintangan sokongan calon
  3. Kemas kini sokongan calon apabila titik pivot baru muncul
  4. Perdagangan apabila harga melepasi tahap rintangan sokongan calon dan diuji semula:
    • Lebih banyak apabila harga turun dari sokongan dan naik semula ke tahap sokongan
    • Harga melepasi rintangan dan melemah apabila jatuh ke sekitar rintangan
  5. Menggunakan parameter kapasitif untuk menyaring turun naik harga semasa pengesanan semula, meningkatkan kualiti isyarat

Kelebihan Strategik

  1. Menggunakan teori analisis teknikal klasik, logik yang jelas dan mudah difahami
  2. Beradaptasi dengan mengenal pasti titik-titik penting secara dinamik
  3. Pengesahan dua kali gabungan penembusan dan pengesanan semula untuk mengurangkan isyarat palsu
  4. Penapisan kebisingan dengan parameter toleransi untuk meningkatkan ketepatan
  5. Struktur kod jelas, mudah dijaga dan diperluaskan
  6. Sesuai untuk pelbagai tempoh masa dan varieti

Risiko Strategik

  1. Perdagangan yang kerap boleh menyebabkan kerugian dalam pasaran yang bergolak
  2. Sinyal palsu masih wujud
  3. Pengoptimuman parameter mungkin mempunyai risiko overfitting
  4. Stop loss yang besar boleh berlaku apabila pasaran terlalu bergolak
  5. Kesan kos urus niaga

Arah pengoptimuman strategi

  1. Menambah penapis trend, hanya berdagang ke arah trend utama
  2. Menyertai Mekanisme Pengesahan Kuantiti
  3. Optimumkan masa kemasukan, pertimbangkan untuk menambah pengesahan petunjuk teknikal
  4. Peningkatan mekanisme penghalang kerosakan
  5. Tambah logik pengurusan kedudukan
  6. Pertimbangkan untuk menggunakan analisis kitaran masa berbilang

ringkaskan

Strategi ini dibina dengan teori rintangan sokongan klasik dan logik penyesuaian terobosan, dengan asas teori yang baik. Kesan perdagangan yang stabil boleh dicapai melalui pengoptimuman parameter dan kawalan risiko.

Kod sumber strategi
/*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)