Strategi Trading Trailing Stop Breakout Dinamis: Model Breakout Harga Multi-Periode Berdasarkan Volatilitas

BREAKOUT ATR SL TP VOL momentum RSI
Tanggal Pembuatan: 2025-02-20 17:02:22 Akhirnya memodifikasi: 2025-02-27 17:27:27
menyalin: 1 Jumlah klik: 421
2
fokus pada
319
Pengikut

Strategi Trading Trailing Stop Breakout Dinamis: Model Breakout Harga Multi-Periode Berdasarkan Volatilitas Strategi Trading Trailing Stop Breakout Dinamis: Model Breakout Harga Multi-Periode Berdasarkan Volatilitas

Ringkasan

Strategi ini adalah sistem perdagangan yang didasarkan pada harga terobosan dan tracking stop loss secara dinamis. Ini melakukan perdagangan dengan memantau harga tertinggi dan terendah selama N siklus terakhir dan melakukan perdagangan ketika harga menembus tingkat-tingkat penting ini. Strategi ini menggunakan mekanisme stop loss cerdas yang mengaktifkan tracking stop loss hanya setelah mencapai 1% keuntungan, sehingga keuntungan dapat berkembang sepenuhnya.

Prinsip Strategi

Logika inti dari strategi ini mencakup bagian-bagian utama berikut:

  1. Sinyal masuk: Dengan menghitung harga tertinggi dan terendah dari N siklus terakhir, sinyal perdagangan dipicu ketika harga saat ini menembus tingkat tersebut. Masuk multihead memerlukan persentase tertentu dari harga untuk menembus titik tertinggi sebelumnya, dan kosong untuk menembus titik terendah sebelumnya.
  2. Manajemen perdagangan: menerapkan periode pendinginan perdagangan 1 jam untuk menghindari perdagangan yang sering terjadi pada saat volatilitas tinggi.
  3. Pengendalian risiko: Menggunakan stop loss pelacakan dinamis, yang diaktifkan hanya setelah mendapatkan 1% dari keuntungan, dapat lebih melindungi keuntungan.
  4. Optimasi parameter: parameter utama seperti siklus review, breakthrough, dan stop loss dapat disesuaikan dengan kondisi pasar yang berbeda.

Keunggulan Strategis

  1. Manajemen risiko yang dinamis: Dengan melacak mekanisme stop loss, strategi dapat membuat keuntungan terus tumbuh sambil melindungi keuntungan.
  2. Fleksibilitas: Strategi dapat beradaptasi dengan kondisi pasar yang berbeda untuk mengoptimalkan kinerja dengan menyesuaikan parameter.
  3. Mekanisme penyaringan: Menggunakan periode pendinginan transaksi untuk menghindari overtrading dan meningkatkan kualitas transaksi.
  4. Sederhana dan efektif: Strategi logis jelas, mudah dipahami dan dilaksanakan, dengan skalabilitas yang baik.

Risiko Strategis

  1. Risiko terobosan palsu: Pasar dapat mengalami terobosan palsu yang menyebabkan sinyal yang salah. Disarankan untuk meningkatkan konfirmasi transaksi.
  2. Efek slippage: Pada periode fluktuasi tinggi, mungkin ada slippage yang lebih besar yang mempengaruhi kinerja strategi.
  3. Sensitivitas parameter: kinerja kebijakan sangat sensitif terhadap pengaturan parameter, yang memerlukan optimasi yang cermat.
  4. Ketergantungan pada kondisi pasar: mungkin tidak berkinerja baik dalam kondisi volatilitas rendah.

Arah optimasi strategi

  1. Memperkenalkan indikator volume transaksi: meningkatkan keandalan sinyal terobosan melalui konfirmasi volume transaksi.
  2. Menambahkan filter tren: Bergabung dengan indikator tren jangka panjang, hanya berdagang di arah tren.
  3. Penyesuaian parameter dinamis: penyesuaian parameter break-through dan stop loss secara otomatis sesuai dengan fluktuasi pasar.
  4. Multiple time period: mengintegrasikan sinyal dari beberapa periode waktu untuk meningkatkan akurasi.

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang dengan baik, yang dikombinasikan dengan terobosan harga dan stop loss dinamis, yang dapat menangkap tren besar dan mengendalikan risiko secara efektif. Strategi ini sangat dapat disesuaikan, dapat disesuaikan dengan lingkungan pasar yang berbeda melalui pengoptimalan parameter.

Kode 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")