Sumber daya yang dimuat... Pemuatan...

Strategi perdagangan pengakuan pola candlestick gabungan multi-frame

Penulis:ChaoZhang, Tanggal: 2024-12-11 11:04:35
Tag:JSCCPTS

img

Gambaran umum

Strategi ini adalah sistem perdagangan otomatis yang didasarkan pada pengenalan pola lilin. Strategi ini mengintegrasikan sepuluh pola lilin klasik, termasuk lima pola bullish (Palu, Bullish Engulfing, Piercing Line, Morning Star, dan Tiga Tentara Putih) dan lima pola bearish (Hanging Man, Bearish Engulfing, Dark Cloud Cover, Evening Star, dan Three Black Crows).

Prinsip Strategi

Inti dari strategi ini terletak pada implementasi pemrograman pengakuan pola lilin yang tepat.

  1. Untuk pola candlestick tunggal (seperti Hammer, Hanging Man), penilaian terutama didasarkan pada rasio antara tubuh dan bayangan
  2. Untuk pola dua candlestick (seperti Engulfing, Piercing Line), penilaian dibuat dengan membandingkan posisi relatif candlesticks bersebelahan harga buka dan tutup
  3. Untuk pola tiga candlestick (seperti Tiga Prajurit Putih, Tiga Burung Gajah Hitam), beberapa kondisi mengenai arah tren dan hubungan posisi harus terpenuhi secara bersamaan Strategi ini memungkinkan pengguna untuk secara fleksibel mengaktifkan atau menonaktifkan pengenalan pola tertentu melalui pengaturan parameter.

Keuntungan Strategi

  1. Komprehensif: Mencakup sepuluh pola candlestick yang paling representatif, mampu menangkap berbagai jenis sinyal pembalikan pasar
  2. Fleksibilitas: Pengguna dapat bebas memilih kombinasi pola berdasarkan kondisi pasar dan gaya perdagangan pribadi
  3. Visualisasi: Sistem penandaan yang jelas memberikan tampilan yang intuitif dari lokasi pola dan jenis
  4. Otomatisasi: Proses penilaian yang terprogram sepenuhnya menghilangkan penilaian manusia yang subjektif dan emosional
  5. Praktis: Logika strategi yang jelas memudahkan kombinasi dengan indikator teknis atau sistem perdagangan lainnya

Risiko Strategi

  1. Risiko Lag: Konfirmasi pola membutuhkan menunggu penutupan lilin, yang berpotensi menyebabkan sedikit penundaan masuk
  2. Risiko Sinyal Palsu: Bergantung hanya pada pola candlestick dapat menghasilkan banyak sinyal palsu di pasar bergolak
  3. Ketergantungan pada Lingkungan Pasar: Strategi berkinerja lebih baik di pasar tren tetapi mungkin berkinerja buruk di pasar yang berbeda
  4. Risiko pengaturan parameter: Mengaktifkan terlalu banyak pengenalan pola dapat menyebabkan sinyal yang terlalu banyak yang mempengaruhi penilaian
  5. Risiko Pengendalian Stop Loss: Strategi tidak memiliki mekanisme stop loss yang komprehensif, yang membutuhkan langkah-langkah pengendalian risiko tambahan

Arah Optimasi Strategi

  1. Melakukan penyaringan tren: Gabungkan dengan rata-rata bergerak atau indikator tren untuk menyaring sinyal kontra-tren
  2. Tambahkan Konfirmasi Volume: Memvalidasi efektivitas pola melalui perubahan volume
  3. Meningkatkan Pengendalian Risiko: Tambahkan fungsionalitas pengaturan target stop-loss dan keuntungan yang dinamis
  4. Optimalkan Parameter Pola: Sesuaikan parameter pengenalan pola untuk pasar dan kerangka waktu yang berbeda
  5. Tambahkan Pola Berat: Atur sistem bobot sinyal yang berbeda berdasarkan keandalan pola

Ringkasan

Ini adalah strategi perdagangan pengenalan pola lilin yang dirancang dengan baik dan logis jelas. Ini menerapkan analisis teknis tradisional yang paling umum digunakan penilaian pola lilin melalui pemrograman, menyediakan pedagang dengan alat perdagangan yang obyektif dan sistematis. Meskipun memiliki beberapa keterbatasan yang melekat, melalui optimasi yang tepat dan kombinasi dengan alat teknis lainnya, strategi ini dapat memberikan sinyal referensi yang berharga untuk keputusan perdagangan. Desain modular strategi ini juga memberikan dasar yang baik untuk ekspansi fungsional dan optimasi kinerja berikutnya.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Author: Raymond Ngobeni
strategy('Candlestick Pattern Strategy [Ubaton]', 'Ubaton - Candlestick Pattern Strategy', overlay = true, max_labels_count = 500, max_lines_count = 500, max_boxes_count = 500)

// User Inputs: Enable/Disable Patterns
// Bullish Patterns
enableHammer = input.bool(true, "Show Hammer")
enableBullEngulfing = input.bool(true, "Show Bullish Engulfing")
enablePiercingLine = input.bool(true, "Show Piercing Line")
enableMorningStar = input.bool(true, "Show Morning Star")
enableThreeWhiteSoldiers = input.bool(true, "Show Three White Soldiers")

// Bearish Patterns
enableHangingMan = input.bool(true, "Show Hanging Man")
enableBearEngulfing = input.bool(true, "Show Bearish Engulfing")
enableDarkCloudCover = input.bool(true, "Show Dark Cloud Cover")
enableEveningStar = input.bool(true, "Show Evening Star")
enableThreeBlackCrows = input.bool(true, "Show Three Black Crows")

// Helper Functions
isHammer() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize

isBullishEngulfing() =>
    close[1] < open[1] and close > open and open <= close[1] and close >= open[1]

isPiercingLine() =>
    close[1] < open[1] and close > close[1] + (open[1] - close[1]) * 0.5 and close < open[1]

isMorningStar() =>
    close[2] < open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close > open

isThreeWhiteSoldiers() =>
    close > open and close[1] > open[1] and close[2] > open[2] and open > close[1] and open[1] > close[2]

isHangingMan() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize and close < open

isBearishEngulfing() =>
    close[1] > open[1] and close < open and open >= close[1] and close <= open[1]

isDarkCloudCover() =>
    close[1] > open[1] and open > close[1] and close < open[1] and close < close[1] + (open[1] - close[1]) * 0.5

isEveningStar() =>
    close[2] > open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close < open

isThreeBlackCrows() =>
    close < open and close[1] < open[1] and close[2] < open[2] and open < close[1] and open[1] < close[2]

// Detect Patterns
// Bullish
hammerDetected = enableHammer and isHammer()
bullEngulfDetected = enableBullEngulfing and isBullishEngulfing()
piercingDetected = enablePiercingLine and isPiercingLine()
morningStarDetected = enableMorningStar and isMorningStar()
threeWhiteDetected = enableThreeWhiteSoldiers and isThreeWhiteSoldiers()

// Bearish
hangingManDetected = enableHangingMan and isHangingMan()
bearEngulfDetected = enableBearEngulfing and isBearishEngulfing()
darkCloudDetected = enableDarkCloudCover and isDarkCloudCover()
eveningStarDetected = enableEveningStar and isEveningStar()
threeBlackDetected = enableThreeBlackCrows and isThreeBlackCrows()

// Plot Bullish Patterns
plotshape(enableHammer and hammerDetected, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(enableBullEngulfing and bullEngulfDetected, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.labelup, text="Engulf")
plotshape(enablePiercingLine and piercingDetected, title="Piercing Line", location=location.belowbar, color=color.green, style=shape.labelup, text="Piercing")
plotshape(enableMorningStar and morningStarDetected, title="Morning Star", location=location.belowbar, color=color.green, style=shape.labelup, text="Morning")
plotshape(enableThreeWhiteSoldiers and threeWhiteDetected, title="Three White Soldiers", location=location.belowbar, color=color.green, style=shape.labelup, text="3 Soldiers")

// Plot Bearish Patterns
plotshape(enableHangingMan and hangingManDetected, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging")
plotshape(enableBearEngulfing and bearEngulfDetected, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulf")
plotshape(enableDarkCloudCover and darkCloudDetected, title="Dark Cloud Cover", location=location.abovebar, color=color.red, style=shape.labeldown, text="Dark Cloud")
plotshape(enableEveningStar and eveningStarDetected, title="Evening Star", location=location.abovebar, color=color.red, style=shape.labeldown, text="Evening")
plotshape(enableThreeBlackCrows and threeBlackDetected, title="Three Black Crows", location=location.abovebar, color=color.red, style=shape.labeldown, text="3 Crows")

// Strategy Execution
if hammerDetected or bullEngulfDetected or piercingDetected or morningStarDetected or threeWhiteDetected
    strategy.entry("Bullish Entry", strategy.long)

if hangingManDetected or bearEngulfDetected or darkCloudDetected or eveningStarDetected or threeBlackDetected
    strategy.entry("Bearish Entry", strategy.short)

Berkaitan

Lebih banyak