Pelacakan dinamis stop loss sepertiga strategi perdagangan kuantitatif garis K

TRINITY ATR
Tanggal Pembuatan: 2025-02-18 13:57:33 Akhirnya memodifikasi: 2025-02-18 13:57:33
menyalin: 0 Jumlah klik: 345
1
fokus pada
1617
Pengikut

Pelacakan dinamis stop loss sepertiga strategi perdagangan kuantitatif garis K

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang menggabungkan metode analisis K-line Bill Williams 13 dan fungsi stop loss pelacakan dinamis. Strategi ini menghasilkan sinyal polygon yang jelas dengan menganalisis karakteristik struktural dari K-line saat ini dan sebelumnya, dan menggunakan mekanisme stop loss pelacakan yang dapat dikonfigurasi untuk melindungi posisi, yang memungkinkan masuk / keluar yang tepat dan manajemen risiko.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada beberapa bagian penting:

  1. K-baris terigual perhitungan: membagi setiap garis K dalam rentang ((harga tertinggi - harga terendah) menjadi tiga bagian, untuk mendapatkan nilai batas daerah atas dan daerah bawah.
  2. K-line bentuk klasifikasi: K-line dibagi menjadi beberapa jenis sesuai dengan posisi harga buka dan harga tutup di sub-daerah ketiga. Misalnya, ketika harga buka di daerah bawah dan harga tutup di daerah atas, dianggap sebagai bentuk yang kuat di atas.
  3. Aturan Generasi Sinyal: Mengidentifikasi sinyal perdagangan yang efektif dengan menganalisis kombinasi bentuk K-line saat ini dan K-line sebelumnya. Misalnya, ketika dua K-line berturut-turut menunjukkan ciri-ciri kuat, memicu melakukan sinyal ganda.
  4. Tracking Stop Loss Dinamis: Menggunakan harga terendah (multihead) atau harga tertinggi (blankhead) dari garis N-root K sebelumnya sebagai titik stop bergerak dalam periode waktu yang ditentukan.

Keunggulan Strategis

  1. Kejelasan logis: Strategi menggunakan metode analisis struktur K-line yang intuitif, aturan perdagangan jelas dan mudah dipahami.
  2. Pengelolaan risiko yang baik: Mengendalikan risiko penarikan secara efektif dengan mekanisme stop loss dengan pelacakan yang dinamis, dengan tetap mempertahankan ruang keuntungan yang cukup.
  3. Adaptif: Strategi dapat menyesuaikan parameter tracking stop loss sesuai dengan kondisi pasar yang berbeda dan memiliki kemampuan beradaptasi yang baik.
  4. Tingkat otomatisasi yang tinggi: otomatisasi penuh dari sinyal yang dihasilkan hingga manajemen posisi, mengurangi intervensi manusia.

Risiko Strategis

  1. Risiko pasar yang bergoyang: Dalam situasi yang bergoyang, mungkin akan terjadi sinyal-sinyal penembusan palsu yang sering terjadi, yang menyebabkan overtrading.
  2. Risiko terjun bebas: Pada saat terjun bebas yang besar, tracking stop loss mungkin tidak dapat dipicu pada waktu yang tepat, menyebabkan kerugian yang lebih besar dari yang diharapkan.
  3. Sensitivitas parameter: Pilihan parameter yang melacak stop loss memiliki dampak besar pada kinerja strategi, pengaturan parameter yang tidak tepat dapat menyebabkan keluar prematur atau kurangnya perlindungan.

Arah optimasi strategi

  1. Menambahkan filter kondisi pasar: Indikator tren atau indikator volatilitas dapat diperkenalkan untuk menyesuaikan parameter strategi secara dinamis dalam kondisi pasar yang berbeda.
  2. Optimalkan mekanisme stop loss: Anda dapat mempertimbangkan untuk mengatur jarak stop loss yang lebih fleksibel dalam kombinasi dengan indikator ATR untuk meningkatkan adaptasi stop loss.
  3. Pengelolaan Posisi: Posisi dapat disesuaikan sesuai dengan intensitas sinyal dan dinamika volatilitas pasar, sehingga memungkinkan kontrol risiko yang lebih halus.
  4. Menambahkan optimasi pertandingan: Anda dapat menambahkan target keuntungan atau indikator teknis untuk membantu penilaian, mengoptimalkan waktu pertandingan.

Meringkaskan

Ini adalah strategi perdagangan kuantitatif yang terstruktur, logis, dan jelas, yang memiliki kepraktisan yang lebih baik dengan menggunakan kombinasi metode analisis teknis klasik dan teknologi manajemen risiko modern. Strategi ini dirancang dengan mempertimbangkan kebutuhan perdagangan real-time, termasuk elemen-elemen penting seperti pembuatan sinyal, manajemen kepemilikan, dan kontrol risiko. Dengan pengoptimalan dan perbaikan lebih lanjut, strategi ini diharapkan untuk berkinerja lebih baik dalam perdagangan nyata.

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

//@version=5
strategy("TrinityBar with Trailing Stop", overlay=true, initial_capital=100000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=250)

//─────────────────────────────────────────────────────────────
// 1. BAR THIRDS CALCULATIONS
//─────────────────────────────────────────────────────────────
cur_range      = high - low
cur_lowerThird = low + cur_range / 3
cur_upperThird = high - cur_range / 3

prev_range      = high[1] - low[1]
prev_lowerThird = low[1] + prev_range / 3
prev_upperThird = high[1] - prev_range / 3

//─────────────────────────────────────────────────────────────
// 2. DEFINE BULLISH & BEARISH BAR TYPES (CURRENT & PREVIOUS)
//─────────────────────────────────────────────────────────────
// Current bar types
is_1_3 = (open <= cur_lowerThird) and (close >= cur_upperThird)
is_3_3 = (open >= cur_upperThird) and (close >= cur_upperThird)
is_2_3 = (open > cur_lowerThird) and (open < cur_upperThird) and (close >= cur_upperThird)

is_3_1 = (open >= cur_upperThird) and (close <= cur_lowerThird)
is_1_1 = (open <= cur_lowerThird) and (close <= cur_lowerThird)
is_2_1 = (open > cur_lowerThird) and (open < cur_upperThird) and (close <= cur_lowerThird)

// Previous bar types
prev_is_1_3 = (open[1] <= prev_lowerThird) and (close[1] >= prev_upperThird)
prev_is_3_3 = (open[1] >= prev_upperThird) and (close[1] >= prev_upperThird)
prev_is_2_3 = (open[1] > prev_lowerThird) and (open[1] < prev_upperThird) and (close[1] >= prev_upperThird)

prev_is_3_1 = (open[1] >= prev_upperThird) and (close[1] <= prev_lowerThird)
prev_is_1_1 = (open[1] <= prev_lowerThird) and (close[1] <= prev_lowerThird)
prev_is_2_1 = (open[1] > prev_lowerThird) and (open[1] < prev_upperThird) and (close[1] <= prev_lowerThird)

//─────────────────────────────────────────────────────────────
// 3. VALID SIGNAL CONDITIONS
//─────────────────────────────────────────────────────────────
validBuy  = (prev_is_2_3 or prev_is_3_3 or prev_is_1_3) and (is_1_3 or is_3_3)
validSell = (prev_is_2_1 or prev_is_1_1 or prev_is_3_1) and (is_1_1 or is_3_1)

//─────────────────────────────────────────────────────────────
// 4. PLOT SIGNAL TRIANGLES
//─────────────────────────────────────────────────────────────
plotshape(validBuy, title="Valid Buy", style=shape.triangleup, location=location.belowbar, 
     color=color.green, size=size.small, text="B")
plotshape(validSell, title="Valid Sell", style=shape.triangledown, location=location.abovebar, 
     color=color.red, size=size.small, text="S")

//─────────────────────────────────────────────────────────────
// 5. MARKET ORDER EXECUTION BASED ON SIGNALS
//─────────────────────────────────────────────────────────────
if validBuy
    // Close any short positions.
    strategy.close("Short", comment="")
    // If not already long, enter a market long.
    if strategy.position_size <= 0
        strategy.entry("Long", strategy.long, comment="")
        
if validSell
    // Close any long positions.
    strategy.close("Long", comment="")
    // If not already short, enter a market short.
    if strategy.position_size >= 0
        strategy.entry("Short", strategy.short, comment="")

//─────────────────────────────────────────────────────────────
// 6. TRAILING STOP LOSS FUNCTION
//─────────────────────────────────────────────────────────────
// Inputs for trailing stop settings:
trailBars = input.int(title="Trailing Stop Bars Back", defval=1, minval=1)
trailTF   = input.timeframe(title="Trailing Stop Timeframe", defval="")  // "" = current timeframe

// For long positions, use the low from 'trailBars' bars back on the specified timeframe.
// For short positions, use the high from 'trailBars' bars back.
trailStopLong  = request.security(syminfo.tickerid, trailTF, low[trailBars])
trailStopShort = request.security(syminfo.tickerid, trailTF, high[trailBars])

// Apply trailing stops if a position is open.
if strategy.position_size > 0
    strategy.exit("Trailing Stop Long", from_entry="Long", stop=trailStopLong)
if strategy.position_size < 0
    strategy.exit("Trailing Stop Short", from_entry="Short", stop=trailStopShort)