Strategi Trading Retracement Lanjutan Triangle Breakout dengan Konfirmasi Harga Volume

SMA RSI TSL EMA 三角形突破 交易量确认 动态止损 趋势跟踪 斐波那契
Tanggal Pembuatan: 2025-06-03 09:57:46 Akhirnya memodifikasi: 2025-06-03 09:57:46
menyalin: 0 Jumlah klik: 314
2
fokus pada
319
Pengikut

Strategi Trading Retracement Lanjutan Triangle Breakout dengan Konfirmasi Harga Volume Strategi Trading Retracement Lanjutan Triangle Breakout dengan Konfirmasi Harga Volume

Ringkasan

Strategi penarikan tinggi adalah strategi perdagangan kuantitatif yang menggabungkan identifikasi bentuk teknis, konfirmasi volume perdagangan, dan manajemen risiko dinamis. Strategi ini dirancang untuk optimasi grafik 1 jam dan menawarkan dua pengaturan entri independen, masing-masing berdasarkan prinsip penarikan segitiga dan konfirmasi harga. Gagasan inti dari strategi ini adalah untuk menangkap peluang terobosan dengan probabilitas tinggi, sementara secara efektif mengelola risiko dengan melacak stop loss secara dinamis, terutama ketika keuntungan mencapai ambang batas tertentu yang secara otomatis menutup kerugian untuk mengunci keuntungan.

Prinsip Strategi

Strategi ini didasarkan pada dua pengaturan masuk utama dan mekanisme keluar yang dirancang dengan baik:

Pengaturan masuk 1 - Golden Triangle Breakthrough

  • Menggunakan sumbu titik tertinggi dan terendah terdekat untuk mendeteksi bentuk segitiga
  • Ketika harga menutup di atas puncak segitiga dan pada saat yang sama di atas 50 siklus SMA, konfirmasi bullish breakout
  • Pada saat penutupan, tim berjuluk The Blues telah memasuki babak perempat final.
  • Pengaturan ini sangat cocok untuk menangkap momentum perdagangan awal setelah periode konsolidasi

Pengaturan Masuk 2 - Konfirmasi Harga dan Volume

  • Volume transaksi yang melonjak berdasarkan regresi nilai rata-rata:
    • Harga pertama kali turun di bawah 50 SMA, lalu ditutup kembali ke atasnya
    • Dibutuhkan setidaknya satu “hari penutupan” ((harga penutupan saat ini lebih tinggi dari harga penutupan sebelumnya)
    • Volume perdagangan harus lebih tinggi dari SMA 50 siklus dan lebih tinggi dari 4 hari sebelumnya
  • Masuk pada hari penutupan konfirmasi perdagangan
  • Terutama efektif ketika pola segitiga tidak jelas tetapi kuat

Strategi Keluar - Tracking Stop Loss Dinamis

  • Stop loss awal ditetapkan sebagai 10% di bawah harga tertinggi yang dicapai setelah masuk
  • Ketika keuntungan mencapai 10%, tracking stop loss diperketat menjadi 5%.
  • Mekanisme ini memungkinkan pedagang untuk terus memegang tren sambil tetap menguntungkan.

Pada implementasi kode, strategi menggunakan pengidentifikasian bentuk segitiga pivot yang disederhanakan dan mengkonfirmasi pergerakan harga dengan membandingkan harga saat ini dengan SMA. Untuk konfirmasi volume transaksi, strategi memeriksa apakah volume transaksi lebih tinggi dari rata-rata bergerak dan volume transaksi beberapa siklus sebelumnya.

Keunggulan Strategis

  1. Sistem Penerimaan GandaDengan menyediakan dua setelan entri yang terpisah, strategi dapat beradaptasi dengan lingkungan pasar yang berbeda, meningkatkan kemungkinan untuk menangkap peluang perdagangan yang menguntungkan. Setelan 1 dapat menangkap terobosan ketika pasar berada dalam periode konsolidasi yang jelas; Setelan 2 dapat berfungsi ketika pola pasar tidak begitu jelas tetapi ada tanda-tanda akumulasi yang kuat.

  2. Integrasi Manajemen RisikoFitur: Mengikuti dinamika, mekanisme stop loss yang dibangun secara otomatis beradaptasi dengan fluktuasi pasar, memungkinkan pertumbuhan keuntungan sambil melindungi modal. Fungsi pengetatan stop loss otomatis, terutama ketika keuntungan mencapai ambang batas yang ditetapkan, secara efektif menyeimbangkan kontradiksi antara mengunci keuntungan dan membiarkan keuntungan berjalan.

  3. Penembusan palsuDengan menggabungkan penyaringan SMA dan konfirmasi volume transaksi, strategi mengurangi risiko false breakout. Harga harus tidak hanya menembus pola, tetapi juga harus tetap di atas SMA. Untuk pengaturan 2 juga membutuhkan dukungan volume transaksi yang signifikan, yang meningkatkan kualitas sinyal secara signifikan.

  4. Bantuan visualStrategi menawarkan banyak indikator visual, termasuk latar belakang warna selama perdagangan, dashboard real-time, dan berbagai elemen grafik, yang memungkinkan pedagang untuk dengan mudah memantau status dan sinyal strategi.

  5. Optimalisasi kerangka waktu yang fleksibel: Meskipun strategi dioptimalkan untuk grafik 1 jam, parameternya dapat disesuaikan untuk menyesuaikan dengan kerangka waktu yang berbeda, meningkatkan ruang lingkup strategi.

Risiko Strategis

  1. Ketergantungan pada kondisi pasarStrategi ini bekerja paling baik di pasar horizontal ke bullish, dan mungkin tidak bekerja dengan baik di pasar yang mengalami penurunan yang kuat atau volatilitas tinggi. Dalam lingkungan pasar bearish, risiko peningkatan false breakout dapat menyebabkan kerugian berturut-turut.

  2. Titik Slip dan Risiko EksekusiDalam perdagangan yang sebenarnya, terutama di pasar yang kurang likuid, titik masuk dan berhenti mungkin mengalami titik slippage yang mempengaruhi kinerja strategi secara keseluruhan. Untuk mengurangi risiko ini, pertimbangkan untuk menggunakan daftar harga batas daripada daftar harga pasar.

  3. Tantangan pengoptimalan parameterStrategi bergantung pada beberapa parameter (panjang SMA, persentase stop loss, dan lain-lain) yang perlu dioptimalkan sesuai dengan pasar dan kerangka waktu tertentu. Pengaturan parameter yang tidak tepat dapat menyebabkan overfitting atau kinerja yang buruk.

  4. Risiko Terlalu Banyak BerdagangDalam kondisi pasar tertentu, strategi dapat menghasilkan terlalu banyak sinyal, yang menyebabkan overtrading dan peningkatan biaya transaksi. Menerapkan filter tambahan atau periode pendinginan dapat membantu mengurangi risiko ini.

  5. Stop Loss Optimisasi KeseimbanganMeskipun mekanisme stop loss dinamis adalah keunggulan dari strategi ini, pengaturan stop loss yang terlalu ketat dapat menyebabkan penarikan awal dari perdagangan yang menguntungkan, dan pengaturan yang terlalu lebar dapat menyebabkan pembalikan keuntungan. Parameter stop loss perlu disesuaikan dengan volatilitas pasar tertentu.

Arah optimasi strategi

  1. Menambahkan filter trenTerintegrasi indikator tren yang lebih luas (seperti Moving Average atau ADX yang lebih panjang) dapat membantu strategi untuk hanya berdagang di arah pasar yang menguntungkan. Misalnya, kondisi dapat ditambahkan yang hanya memungkinkan bullish untuk masuk jika SMA jangka panjang (seperti siklus 200) cenderung ke atas.

  2. Mengoptimalkan volume konfirmasi transaksi: Permintaan konfirmasi volume transaksi saat ini lebih tinggi dari 4 siklus sebelumnya, yang mungkin terlalu ketat atau tidak cukup ketat, tergantung pada kondisi pasar. Mampu mencapai penurunan volume transaksi yang dapat disesuaikan, sesuai dengan dinamika volatilitas pasar, dapat meningkatkan efektivitas Setup 2.

  3. Integrasi filter waktuBeberapa waktu perdagangan mungkin lebih cocok untuk strategi ini daripada yang lain. Menambahkan filter waktu untuk menghindari perdagangan pada waktu yang tidak menguntungkan (seperti periode fluktuasi tinggi sebelum pasar terbuka atau ditutup) dapat meningkatkan kinerja secara keseluruhan.

  4. Membuat sebagian dari keuntungan terkunciStrategi keluar saat ini adalah biner: “memegang semua atau keluar semua”. Dengan menerapkan sistem keluar batch, Anda dapat mengunci sebagian dari keuntungan sambil mempertahankan beberapa potensi naik.

  5. Menambahkan konfirmasi aset terkaitDalam beberapa pasar, konfirmasi dari aset terkait dapat meningkatkan kualitas sinyal. Misalnya, dalam perdagangan saham, kekuatan sektor atau industri dapat berfungsi sebagai filter tambahan. Dalam forex, perilaku pasangan mata uang terkait dapat memberikan konfirmasi tambahan.

  6. Mengintegrasikan volatilitas pasar: Mengatur level stop loss secara dinamis berdasarkan volatilitas pasar (seperti ATR atau volatilitas historis) dapat membuat strategi lebih sesuai dengan kondisi pasar yang berbeda. Gunakan stop loss yang lebih ketat dalam lingkungan yang kurang volatil, dan stop loss yang lebih luas dalam lingkungan yang tinggi.

Meringkaskan

Strategi Triangle Breakout dan Quantity Confirmation untuk Retracement Advanced menawarkan metode perdagangan yang komprehensif, yang menggabungkan pengenalan bentuk teknis, prinsip dinamika, dan analisis volume. Dengan menyediakan dua setelan entri yang saling melengkapi, strategi ini tetap fleksibel dalam berbagai kondisi pasar, sementara mekanisme stop loss yang dinamis memberikan manajemen risiko yang dioptimalkan.

Keuntungan utama dari strategi ini adalah standar masuknya yang beragam dan manajemen risiko yang terintegrasi, membuatnya cocok untuk berbagai gaya perdagangan mulai dari intraday hingga jangka pendek. Namun, ketergantungan pada kondisi pasar dan tantangan pengoptimalan parameter adalah risiko utama yang perlu diperhatikan.

Dengan menambahkan filter tren, mengoptimalkan logika konfirmasi volume perdagangan, atau memungkinkan penyesuaian volatilitas, pedagang dapat meningkatkan kinerja strategi lebih lanjut. Akhirnya, strategi ini memberikan kerangka kerja yang solid yang dapat disesuaikan dengan preferensi risiko pribadi dan karakteristik pasar, menjadikannya alat yang berharga bagi pedagang yang mencari metode perdagangan yang didorong oleh teknologi dan dikendalikan oleh risiko.

Kode Sumber Strategi
/*backtest
start: 2024-06-03 00:00:00
end: 2025-06-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © eemani123

//@version=5
strategy("Golden Triangle Strategy (1H, Setup 1 & 2)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Inputs ===
smaLength = input.int(34, title="SMA Length (1H Optimized)", minval=1)
volumeSmaLength = input.int(34, title="Volume SMA Length", minval=1)
trailingStopPct = input.float(6.0, title="Initial Trailing Stop Loss (%)", minval=0.1)
tightenPct = input.float(5.0, title="Tightened TSL (%)", minval=0.1)
profitTrigger = input.float(10.0, title="Tighten TSL After Profit (%)", minval=1)
maxLookback = input.int(10, title="Max Lookback Bars for Setup 2", minval=1)
pivotStrength = input.int(2, title="Pivot Strength (Shorter for 1H)", minval=1)

// === SMA Calculations ===
smaPrice = ta.sma(close, smaLength)
smaVolume = ta.sma(volume, volumeSmaLength)

// === Setup 1: Golden Triangle (simplified with pivots) ===
pivotHigh = ta.pivothigh(high, pivotStrength, pivotStrength)
pivotLow = ta.pivotlow(low, pivotStrength, pivotStrength)

var float triangleTop = na
var float triangleBottom = na

if not na(pivotHigh)
    triangleTop := pivotHigh
if not na(pivotLow)
    triangleBottom := pivotLow

triangleBreakout = ta.crossover(close, triangleTop) and close > smaPrice
enterSetup1 = triangleBreakout

// === Setup 2: Price & Volume Confirmation ===
priceBelowSMA = ta.barssince(close < smaPrice) <= maxLookback
priceConfirm = close > smaPrice and close > close[1]
volumeConfirm = volume > smaVolume and volume > volume[1] and volume > volume[2] and volume > volume[3] and volume > volume[4]
enterSetup2 = priceConfirm and priceBelowSMA and volumeConfirm

// === Entry & TSL Tracking ===
var bool inTradeSetup1 = false
var bool inTradeSetup2 = false
var float entryPrice1 = na
var float entryPrice2 = na
var float highestSinceEntry1 = na
var float highestSinceEntry2 = na
var float trailingStop1 = na
var float trailingStop2 = na

// === Entry Conditions ===
if enterSetup1 and not inTradeSetup1
    strategy.entry("Buy Setup 1", strategy.long)
    entryPrice1 := close
    highestSinceEntry1 := close
    inTradeSetup1 := true

if enterSetup2 and not inTradeSetup2
    strategy.entry("Buy Setup 2", strategy.long)
    entryPrice2 := close
    highestSinceEntry2 := close
    inTradeSetup2 := true

// === Update Trailing Stops with Tightening ===
if inTradeSetup1
    highestSinceEntry1 := math.max(highestSinceEntry1, high)
    profit1 = (highestSinceEntry1 - entryPrice1) / entryPrice1 * 100
    activePct1 = profit1 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop1 := highestSinceEntry1 * (1 - activePct1 / 100)

if inTradeSetup2
    highestSinceEntry2 := math.max(highestSinceEntry2, high)
    profit2 = (highestSinceEntry2 - entryPrice2) / entryPrice2 * 100
    activePct2 = profit2 >= profitTrigger ? tightenPct : trailingStopPct
    trailingStop2 := highestSinceEntry2 * (1 - activePct2 / 100)

// === Exit Conditions ===
if inTradeSetup1 and close < trailingStop1
    strategy.close("Buy Setup 1", comment="TSL Hit - Setup 1")
    inTradeSetup1 := false
    entryPrice1 := na
    highestSinceEntry1 := na
    trailingStop1 := na

if inTradeSetup2 and close < trailingStop2
    strategy.close("Buy Setup 2", comment="TSL Hit - Setup 2")
    inTradeSetup2 := false
    entryPrice2 := na
    highestSinceEntry2 := na
    trailingStop2 := na

// === Plotting ===
plot(smaPrice, color=color.orange, title="SMA")
//plot(triangleTop, title="Triangle Top", color=color.red, style=plot.style_linebr, linewidth=2)
//plot(triangleBottom, title="Triangle Bottom", color=color.green, style=plot.style_linebr, linewidth=2)
plot(inTradeSetup1 ? trailingStop1 : na, color=color.red, title="Trailing Stop - Setup 1", linewidth=2,style=plot.style_linebr)
plot(inTradeSetup2 ? trailingStop2 : na, color=color.blue, title="Trailing Stop - Setup 2", linewidth=2,style=plot.style_linebr)

plotshape(enterSetup1, title="Triangle Breakout Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(enterSetup2, title="Volume Confirmed Entry", location=location.belowbar, color=color.blue, style=shape.circle, size=size.small)

// === Alerts ===
alertcondition(enterSetup1, title="Setup 1 Buy", message="Golden Triangle Breakout (Setup 1) - BUY")
alertcondition(enterSetup2, title="Setup 2 Buy", message="Volume + Price Confirmation (Setup 2) - BUY")

// === Background highlight during trades ===
bgcolor(inTradeSetup1 or inTradeSetup2 ? color.new(color.green, 85) : na, title="In-Trade Highlight")


// === Weekly Fibonacci Pivot Levels (R3 / S3) ===
weeklyHigh = request.security(syminfo.tickerid, "W", high)
weeklyLow = request.security(syminfo.tickerid, "W", low)
weeklyClose = request.security(syminfo.tickerid, "W", close)

weeklyPivot = (weeklyHigh + weeklyLow + weeklyClose) / 3
weeklyRange = weeklyHigh - weeklyLow
fibR3 = weeklyPivot + 1.000 * weeklyRange
fibS3 = weeklyPivot - 1.000 * weeklyRange

// === Plot R3 and S3 ===
plot(fibR3, title="Weekly Fib R3", color=color.fuchsia, linewidth=2, style=plot.style_circles)
plot(fibS3, title="Weekly Fib S3", color=color.teal, linewidth=2, style=plot.style_circles)
// === Weekly Fibonacci Pivot Levels (R3 / S3) ===