Strategi perdagangan tren kuantitatif multi-level berdasarkan terobosan level support dan resistance dan pengujian ulang

Pivot SR MA BREAKOUT RETEST Trend
Tanggal Pembuatan: 2025-02-20 16:00:35 Akhirnya memodifikasi: 2025-02-20 16:00:35
menyalin: 2 Jumlah klik: 377
2
fokus pada
319
Pengikut

Strategi perdagangan tren kuantitatif multi-level berdasarkan terobosan level support dan resistance dan pengujian ulang Strategi perdagangan tren kuantitatif multi-level berdasarkan terobosan level support dan resistance dan pengujian ulang

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang didasarkan pada penembusan dan retracement dari resistance support. Strategi ini melakukan perdagangan pada titik konfirmasi retracement setelah retracement. Strategi ini menggunakan posisi bar dinamis yang melihat ke kiri dan kanan pada titik kunci dan menggabungkan retracement toleransi untuk melewati retracement palsu, sehingga meningkatkan akurasi dan stabilitas perdagangan.

Prinsip Strategi

Strategi ini terdiri dari beberapa logika utama:

  1. Identifikasi titik pivot dukungan dan resistensi penting dengan melihat ke kiri dan ke belakang pada jumlah K yang ditentukan
  2. Variabel pengaturan status melacak terobosan dan pengembalian dari titik resistensi dukungan kandidat
  3. Pembaruan Resistensi Dukungan Kandidat Saat Titik Pivot Baru Terjadi
  4. Perdagangan dilakukan ketika harga menembus resistance level dukungan kandidat dan diukur kembali:
    • Jika harga turun dari level support dan naik kembali ke level support, maka Anda harus melakukan lebih banyak.
    • Bila harga melewati resistensi dan kembali ke resistensi, maka kosongkan posisi
  5. Menggunakan parameter toleransi untuk memfilter fluktuasi harga saat pengukuran ulang, meningkatkan kualitas sinyal

Keunggulan Strategis

  1. Teori analisis teknis klasik, logika yang jelas dan mudah dipahami
  2. Adaptif dengan identifikasi titik-titik penting secara dinamis
  3. Kombinasi penembusan dan pengembalian dua kali konfirmasi, mengurangi sinyal palsu
  4. Filter kebisingan dengan parameter toleransi untuk meningkatkan akurasi
  5. Struktur kode yang jelas, mudah dipertahankan dan diperluas
  6. Cocok untuk berbagai periode waktu dan varietas

Risiko Strategis

  1. Perdagangan yang sering terjadi di pasar yang bergejolak dapat menyebabkan kerugian.
  2. Sinyal palsu masih ada
  3. Optimasi parameter mungkin memiliki risiko overfitting
  4. Stop loss mungkin lebih besar jika pasar terlalu berfluktuasi
  5. Efek dari Biaya Transaksi

Arah optimasi strategi

  1. Menambahkan filter tren, hanya berdagang di arah tren utama
  2. Masukkan Mekanisme Konfirmasi Volume
  3. Optimalkan waktu masuk, pertimbangkan untuk menambahkan konfirmasi indikator teknis
  4. Perbaikan mekanisme penghentian kerusakan
  5. Menambahkan logika manajemen posisi
  6. Pertimbangkan untuk memasukkan analisis siklus waktu ganda

Meringkaskan

Strategi ini dibangun dengan teori resistensi dukungan klasik dan logika retrospeksi terobosan, dengan dasar teoritis yang baik. Efek perdagangan yang stabil dapat diperoleh melalui pengoptimalan parameter dan kontrol risiko. Struktur kode strategi jelas, mudah dipahami dan diperluas, dengan nilai praktis yang kuat.

Kode 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)