Strategi Dagangan Jejak Pecahan Dinamik: Model Pecahan Harga Berbilang Tempoh Berdasarkan Kemeruapan

BREAKOUT ATR SL TP VOL momentum RSI
Tarikh penciptaan: 2025-02-20 17:02:22 Akhirnya diubah suai: 2025-02-27 17:27:27
Salin: 1 Bilangan klik: 421
2
fokus pada
319
Pengikut

Strategi Dagangan Jejak Pecahan Dinamik: Model Pecahan Harga Berbilang Tempoh Berdasarkan Kemeruapan Strategi Dagangan Jejak Pecahan Dinamik: Model Pecahan Harga Berbilang Tempoh Berdasarkan Kemeruapan

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan yang berdasarkan kepada penembusan harga dan pengesanan hentian secara dinamik. Ia melakukan perdagangan dengan memantau harga tertinggi dan terendah dalam tempoh N kitaran lalu, apabila harga menembusi tahap-tahap penting ini. Strategi ini menggunakan mekanisme hentian pintar, yang mengaktifkan hentian pengesanan hanya setelah mencapai keuntungan 1%, yang membolehkan keuntungan berkembang sepenuhnya.

Prinsip Strategi

Logik teras strategi merangkumi bahagian penting berikut:

  1. Isyarat masuk: Dengan mengira harga tertinggi dan terendah dalam tempoh N kitaran lalu, isyarat perdagangan dicetuskan apabila harga semasa menembusi tahap ini. Masuk dengan banyak kepala memerlukan peratusan tertentu harga untuk menembusi tahap tertinggi sebelum ini, dan kepala kosong memerlukan penembusan tahap rendah sebelum ini.
  2. Pengurusan dagangan: melaksanakan tempoh sejuk 1 jam untuk mengelakkan dagangan yang kerap semasa turun naik yang teruk.
  3. Kawalan risiko: Menggunakan hentian pelacakan dinamik, yang diaktifkan hanya selepas keuntungan 1%, dapat melindungi keuntungan dengan lebih baik.
  4. Optimasi parameter: parameter utama seperti kitaran semak semula, penembusan had, peratusan hentian dan sebagainya boleh disesuaikan dengan keadaan pasaran yang berbeza.

Kelebihan Strategik

  1. Pengurusan risiko dinamik: Dengan mengesan mekanisme berhenti kerugian, strategi dapat meningkatkan keuntungan secara berterusan sambil melindungi keuntungan.
  2. Keupayaan untuk menyesuaikan diri: Strategi boleh menyesuaikan diri dengan keadaan pasaran yang berbeza, untuk mengoptimumkan prestasi dengan menyesuaikan parameter.
  3. Mekanisme penapisan: Menggunakan tempoh penyejukan perdagangan untuk mengelakkan perdagangan berlebihan dan meningkatkan kualiti transaksi.
  4. Sederhana dan berkesan: logik strategi jelas, mudah difahami dan dilaksanakan, sambil mengekalkan skalabilitas yang baik.

Risiko Strategik

  1. Risiko penembusan palsu: Pasaran mungkin mengalami penembusan palsu yang menyebabkan isyarat yang salah. Disarankan untuk meningkatkan pengesahan jumlah transaksi.
  2. Kesan slippage: Dalam tempoh turun naik yang tinggi, mungkin terdapat slippage yang lebih besar yang mempengaruhi prestasi strategi.
  3. Sensitiviti parameter: Prestasi strategi lebih sensitif kepada tetapan parameter dan memerlukan pengoptimuman yang berhati-hati.
  4. Kepercayaan kepada keadaan pasaran: mungkin kurang baik dalam keadaan turun naik yang rendah.

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk jumlah transaksi: meningkatkan kebolehpercayaan isyarat terobosan melalui pengesahan jumlah transaksi.
  2. Menambah penapis trend: Berdagang hanya dalam arah trend, digabungkan dengan indikator trend jangka panjang.
  3. Penyesuaian parameter dinamik: penyesuaian parameter penembusan dan penangguhan secara automatik mengikut turun naik pasaran.
  4. Multiple time period: menggabungkan isyarat dari pelbagai tempoh masa untuk meningkatkan ketepatan.

ringkaskan

Ini adalah strategi penjejakan trend yang direka dengan munasabah, yang digabungkan dengan penembusan harga dan hentian dinamik, yang dapat menangkap trend besar dan dapat mengawal risiko dengan berkesan. Strategi ini sangat disesuaikan, dan dapat disesuaikan dengan keadaan pasaran yang berbeza melalui pengoptimuman parameter.

Kod sumber strategi
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/

//@version=5
//TSLA has the buest results on the 5 min or 1 hour chart
//NQ 15 minute
strategy("!! 🔥 Breakout Strategy with Trailing Stop", overlay=true, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=100, 
         pyramiding=100)

// User inputs
var int lookbackBars = input.int(10, title="Lookback Bars", minval=1)
var float breakoutThresholdPct = input.float(0.05, title="Breakout Threshold Percentage", minval=0.0001, maxval=5, step=0.01)
var float stopLossPct = input.float(0.2, title="Stop Loss Percentage", minval=0.1) / 100
// Adjusted: No longer directly using takeProfitPct for a fixed take profit level
var float trailStartPct = input.float(0.5, title="Trail Start at Profit Percentage", minval=0.001) / 100

// Tracking the last entry time
var float lastEntryTime = na

// Calculate the highest high and lowest low over the last N bars excluding the current bar
float previousHigh = ta.highest(high[1], lookbackBars)
float previousLow = ta.lowest(low[1], lookbackBars)


// Entry condition adjusted to compare current price against the previous period's high/low
bool breakoutHigh = close > previousHigh * (1 + breakoutThresholdPct / 100) and (na(lastEntryTime) or (time - lastEntryTime) > 3600000 )
bool breakoutLow = close < previousLow * (1 - breakoutThresholdPct / 100) and (na(lastEntryTime) or (time - lastEntryTime) > 3600000 )

// Execute strategy based on the breakout condition
if (breakoutHigh)
    strategy.entry("Breakout Buy", strategy.long)
    lastEntryTime := time
else if (breakoutLow)
    strategy.entry("Breakout Sell", strategy.short)
    lastEntryTime := time

// Exiting the strategy with a trailing stop that starts after reaching 1% profit
// Adjusted: Implementing a dynamic trailing stop that activates after a 1% profit
if strategy.position_size > 0 
    strategy.exit("Trailing Stop Exit", "Breakout Buy", trail_points = close * trailStartPct, trail_offset = close * stopLossPct)
if strategy.position_size < 0 
    strategy.exit("Trailing Stop Exit", "Breakout Sell", trail_points = close * trailStartPct, trail_offset = close * stopLossPct)

// Visualization for debugging and analysis
plot(previousHigh, color=color.green, linewidth=2, title="Previous High")
plot(previousLow, color=color.red, linewidth=2, title="Previous Low")
// plotshape(series=breakoutHigh, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
// plotshape(series=breakoutLow, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")