Henti rugi penjejakan dinamik satu pertiga strategi dagangan kuantitatif K-line

TRINITY ATR
Tarikh penciptaan: 2025-02-18 13:57:33 Akhirnya diubah suai: 2025-02-18 13:57:33
Salin: 0 Bilangan klik: 345
1
fokus pada
1617
Pengikut

Henti rugi penjejakan dinamik satu pertiga strategi dagangan kuantitatif K-line

Gambaran keseluruhan

Ini adalah strategi perdagangan kuantitatif yang menggabungkan kaedah analisis K-line Bill Williams 13 dan fungsi hentian pelacakan dinamik. Strategi ini menghasilkan isyarat polygon yang jelas dengan menganalisis ciri struktur K-line semasa dan sebelumnya, dan menggunakan mekanisme hentian pelacakan yang boleh dikonfigurasi untuk melindungi kedudukan, mewujudkan masuk / keluar yang tepat dan pengurusan risiko.

Prinsip Strategi

Logik utama strategi ini adalah berdasarkan beberapa bahagian utama:

  1. K-baris tiga kali ganda: Bahagikan julat setiap K-baris ((harga tertinggi - harga terendah) kepada tiga kali ganda untuk mendapatkan nilai sempadan kawasan atas dan kawasan bawah.
  2. K-Line Form Classification: K-Line dikategorikan kepada pelbagai jenis berdasarkan kedudukan harga bukaan dan harga tutup di sub-zon ketiga. Sebagai contoh, apabila harga bukaan berada di kawasan bawah dan harga tutup di kawasan atas, ia dianggap sebagai bentuk yang kuat.
  3. Peraturan penjanaan isyarat: Menentukan isyarat dagangan yang berkesan dengan menganalisis bentuk garis K semasa dan garis K terdahulu secara gabungan. Sebagai contoh, apabila dua garis K berturut-turut menunjukkan ciri-ciri kuat, isyarat berganda akan dicetuskan.
  4. Tracking Stop Loss Dinamik: Dalam tempoh masa yang ditetapkan, menggunakan harga terendah N-root K-line sebelumnya (polyhead) atau harga tertinggi (blankhead) sebagai titik berhenti bergerak.

Kelebihan Strategik

  1. Kejelasan logik: Strategi menggunakan kaedah analisis struktur K-line yang intuitif, dan peraturan perdagangan jelas dan mudah difahami.
  2. Pengurusan risiko yang sempurna: Dengan mekanisme hentian kerugian yang dinamik, risiko penarikan balik dapat dikawal dengan berkesan sambil mengekalkan ruang keuntungan yang mencukupi.
  3. Adaptif: Strategi boleh disesuaikan dengan parameter tracking stop loss mengikut keadaan pasaran yang berbeza dan mempunyai kemampuan adaptasi yang baik.
  4. Tingkat automasi yang tinggi: Automasi sepenuhnya dicapai dari penjanaan isyarat hingga pengurusan kedudukan, mengurangkan campur tangan manusia.

Risiko Strategik

  1. Risiko pasaran goyah: Dalam keadaan goyah di pasaran, mungkin terdapat banyak isyarat pecah palsu yang menyebabkan perdagangan berlebihan.
  2. Risiko melompat tinggi: Apabila melompat tinggi, penghentian pengesanan mungkin tidak diaktifkan dalam masa yang tepat, menyebabkan kerugian yang lebih besar daripada yang dijangkakan.
  3. Sensitiviti parameter: Pilihan parameter yang mengesan hentian mempunyai kesan besar terhadap prestasi strategi, penyetempatan parameter yang tidak betul boleh menyebabkan keluar terlalu awal atau perlindungan yang kurang.

Arah pengoptimuman strategi

  1. Menambah penapis keadaan pasaran: Indikator trend atau indikator turun naik boleh diperkenalkan untuk menyesuaikan parameter strategi secara dinamik dalam keadaan pasaran yang berbeza.
  2. Mekanisme penangguhan yang dioptimumkan: Anda boleh mempertimbangkan untuk menetapkan jarak penangguhan yang lebih fleksibel dengan menggunakan ATR untuk meningkatkan kesesuaian penangguhan.
  3. Memperkenalkan pengurusan kedudukan: saiz kedudukan boleh disesuaikan mengikut kekuatan isyarat dan dinamik turun naik pasaran, untuk kawalan risiko yang lebih halus.
  4. Tambah pengoptimuman keluar: Anda boleh menambah sasaran keuntungan atau penunjuk teknikal untuk membantu penilaian, mengoptimumkan masa keluar.

ringkaskan

Ini adalah strategi perdagangan kuantitatif yang lengkap dan logik yang jelas, yang mempunyai kepraktisan yang baik dengan menggabungkan penggunaan kaedah analisis teknikal klasik dan teknologi pengurusan risiko moden. Reka bentuk strategi mempertimbangkan sepenuhnya keperluan perdagangan dalam talian, termasuk komponen penting seperti penjanaan isyarat, pengurusan pegangan dan kawalan risiko. Dengan pengoptimuman dan penyempurnaan lanjut, strategi ini dijangka dapat mencapai prestasi yang lebih baik dalam perdagangan sebenar.

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