Strategi perdagangan kuantitatif pola candlestick pembalikan tren kerangka waktu ganda

MA
Tanggal Pembuatan: 2025-01-10 15:47:53 Akhirnya memodifikasi: 2025-01-10 15:47:53
menyalin: 1 Jumlah klik: 385
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif pola candlestick pembalikan tren kerangka waktu ganda

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan dua pola kandil klasik: garis palu dan manusia gantung. Strategi ini bekerja dengan mengidentifikasi pola pembalikan di pasar untuk memprediksi titik balik potensial dalam aksi harga. Sistem ini menggabungkan beberapa indikator teknis untuk mengonfirmasi validitas sinyal, termasuk hubungan proporsional antara badan garis K dan bayangan, arah tren, dan faktor-faktor lainnya, untuk mencapai penangkapan titik pembalikan pasar yang akurat.

Prinsip Strategi

Logika inti dari strategi ini adalah mengidentifikasi dua pola kandil utama dengan cara terprogram:

  1. Palu: muncul dalam tren menurun, menunjukkan kemungkinan pembalikan ke atas. Hal ini ditandai dengan benda nyata yang kecil, bayangan bawah yang panjang (setidaknya dua kali panjang benda nyata) dan bayangan atas yang sangat pendek atau tidak ada.
  2. Hanging Man: Muncul dalam tren naik, menunjukkan kemungkinan pembalikan dan penurunan. Ciri morfologinya mirip dengan garis palu, tetapi posisi kemunculan dan maknanya berlawanan.

Strategi ini mengukur pola-pola ini dengan menetapkan parameter yang ketat, termasuk:

  • Pengganda panjang badan kandil minimum
  • Rasio bayangan bawah terhadap tinggi kandil
  • Periode penahanan

Keunggulan Strategis

  1. Identifikasi sistematis: Mengidentifikasi sinyal pembalikan pasar secara akurat melalui metode terprogram, menghindari subjektivitas penilaian manusia.
  2. Risiko dapat dikendalikan: Periode kepemilikan yang jelas ditetapkan untuk menghindari risiko yang disebabkan oleh kepemilikan yang berlebihan.
  3. Visualisasi Sinyal: Menampilkan sinyal perdagangan secara intuitif pada grafik untuk memudahkan analisis dan pengoptimalan.
  4. Parameter yang fleksibel: Parameter dapat disesuaikan menurut kondisi pasar yang berbeda untuk meningkatkan kemampuan beradaptasi strategi.

Risiko Strategis

  1. Risiko breakout palsu: Pola pembalikan dapat menghasilkan sinyal palsu dan perlu dikonfirmasi dalam kombinasi dengan indikator teknis lainnya.
  2. Risiko waktu: Periode kepemilikan yang tetap mungkin tidak sepenuhnya menangkap potensi penuh pergerakan harga.
  3. Ketergantungan lingkungan pasar: Terlalu banyak sinyal palsu yang dapat dihasilkan dalam pasar yang bergejolak.

Arah optimasi strategi

  1. Memperkenalkan filter tren: Indikator seperti rata-rata pergerakan dapat ditambahkan untuk menyaring tren dan meningkatkan kualitas sinyal.
  2. Periode penyimpanan dinamis: sesuaikan waktu penyimpanan secara dinamis menurut volatilitas pasar.
  3. Konfirmasi multi-periode: Memperkenalkan mekanisme konfirmasi tren untuk kerangka waktu yang lebih tinggi.
  4. Optimalisasi stop loss: Tambahkan mekanisme stop loss dinamis untuk meningkatkan kemampuan pengendalian risiko.

Meringkaskan

Strategi ini mewujudkan penerapan sistematis teori analisis teknis klasik melalui metode kuantitatif dan memiliki nilai praktis yang kuat. Dengan mengoptimalkan parameter dan meningkatkan mekanisme pengendalian risiko, strategi tersebut dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar. Desain modular dari strategi ini juga menyediakan landasan yang baik untuk pengoptimalan selanjutnya.

Kode Sumber Strategi
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Hammer and Hanging Man Strategy", overlay=true)

// Input parameters
length = input.int(5, title="Minimum Candle Body Length (Multiplier)", minval=1)
shadowRatio = input.float(1, title="Lower Shadow to Candle Height Ratio", minval=1.0)
holdPeriods = input.int(26, title="Hold Periods (Bars)", minval=1)  // Holding period in bars

// Function to calculate the absolute value
absValue(x) =>
    x >= 0 ? x : -x

// Function to check if it is a Hammer
isHammer() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close > open

// Function to check if it is a Hanging Man
isHangingMan() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close < open

// Detect the candles
hammer = isHammer()
hangingMan = isHangingMan()

// Trading logic: Long on Hammer, Short on Hanging Man
if hammer
    strategy.entry("Long", strategy.long)  // Long entry on Hammer

if hangingMan
    strategy.entry("Short", strategy.short)  // Short entry on Hanging Man

// Exit after X bars
if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Long")

if strategy.position_size < 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Short")

// Visualization of signals
plotshape(hammer, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(hangingMan, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging Man")