Strategi Mengikuti Tren Lanjutan dan Strategi Trailing Stop Adaptif

ATR SL TS
Tanggal Pembuatan: 2024-12-20 14:12:05 Akhirnya memodifikasi: 2024-12-20 14:12:05
menyalin: 1 Jumlah klik: 418
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Lanjutan dan Strategi Trailing Stop Adaptif

Ringkasan

Ini adalah strategi pelacakan tren yang didasarkan pada indikator Supertrend, yang menggabungkan mekanisme tracking stop adaptif. Strategi ini terutama mengidentifikasi arah tren pasar melalui indikator Supertrend, dan menggunakan tracking stop yang disesuaikan secara dinamis untuk mengelola risiko dan mengoptimalkan waktu keluar. Strategi ini mendukung beberapa cara stop, termasuk stop persentase, stop ATR, dan stop fixed point, yang dapat disesuaikan secara fleksibel sesuai dengan kondisi pasar yang berbeda.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:

  1. Menggunakan indikator Supertrend sebagai dasar utama untuk menilai tren, yang menggabungkan ATR (Average True Rate) untuk mengukur volatilitas pasar
  2. Sinyal masuk yang dipicu oleh perubahan arah Supertrend, mendukung perdagangan over, under atau two-way
  3. Mekanisme stop loss menggunakan stop loss tracking adaptif yang dapat secara otomatis menyesuaikan posisi stop loss sesuai dengan fluktuasi pasar
  4. Sistem manajemen perdagangan mencakup manajemen posisi (default account 15% posisi) dan mekanisme penyaringan waktu

Keunggulan Strategis

  1. Trending Capture: Menggunakan indikator Supertrend untuk mengidentifikasi tren utama dan mengurangi kesalahan penilaian
  2. Pengendalian risiko yang sempurna: Menggunakan mekanisme diversifikasi untuk mengurangi kerugian, mampu beradaptasi dengan kondisi pasar yang berbeda
  3. Fleksibilitas tinggi: Konfigurasi yang mendukung berbagai arah perdagangan dan cara stop loss
  4. Adaptif: Tracking stop loss secara otomatis menyesuaikan dengan fluktuasi pasar, meningkatkan kemampuan adaptasi strategi
  5. Sistem pelacakan lengkap: fitur penyaringan waktu internal untuk analisis kinerja historis

Risiko Strategis

  1. Risiko perubahan tren: sinyal palsu mungkin muncul di pasar yang sangat bergejolak
  2. Risiko slippage: Eksekusi trailing stop dapat dipengaruhi oleh likuiditas pasar
  3. Sensitivitas parameter: Faktor Supertrend dan pengaturan siklus ATR memiliki pengaruh besar terhadap kinerja strategi
  4. Ketergantungan pada kondisi pasar: Biaya yang meningkat karena kemungkinan transaksi yang sering terjadi di pasar yang bergejolak

Arah optimasi strategi

  1. Optimasi filter sinyal: Anda dapat menambahkan indikator teknis tambahan untuk memfilter sinyal palsu
  2. Optimisasi manajemen posisi: dapat menyesuaikan persentase kepemilikan posisi sesuai dengan dinamika volatilitas pasar
  3. Peningkatan mekanisme penghentian kerugian: Logika penghentian kerugian yang lebih kompleks dapat digabungkan dengan desain biaya rata-rata
  4. Optimalisasi waktu masuk: analisis struktur harga dapat ditambahkan untuk meningkatkan akurasi masuk
  5. Perbaikan sistem umpan balik: Anda dapat menambahkan lebih banyak metrik untuk menilai kinerja strategi

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang secara rasional dan dapat dikendalikan risiko. Dengan menggabungkan indikator Supertrend dan mekanisme stop loss yang fleksibel, strategi dapat mengontrol risiko secara efektif sambil mempertahankan profitabilitas yang tinggi. Strategi ini sangat dapat dikonfigurasi, cocok untuk digunakan dalam berbagai lingkungan pasar, tetapi perlu melalui optimasi parameter yang memadai dan pengujian ulang.

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

//@version=6
strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Inputs
atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings")
factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings")
tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings")
sl_type    = input.string("%", "SL Type", options=["%", "ATR", "Absolute"])
// Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes 

sl_perc    = input.float(4.0, "% SL", group="Stop Loss Einstellung")
atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung")
atr_mult   = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung")
sl_absol   = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung")

//-------------------------//
// BACKTESTING RANGE
fromDay   = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung")
fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung")
fromYear  = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung")
toDay     = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung")
toMonth   = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung")
toYear    = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung")

startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond  = time >= startDate and time <= finishDate

//-------------------------//
// Supertrend calculation
[_, direction] = ta.supertrend(factor, atrPeriod)

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * ta.atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
var pos         = 0
var float trailing_sl = 0.0

// Signals
long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 

// Calculate SL
trailing_sl := short_signal     ? high + sl_val : 
               long_signal      ? low  - sl_val : 
               nz(pos[1]) ==  1 ? math.max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

// Entry logic
if ta.change(direction) < 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Long"
        strategy.entry("Long", strategy.long, stop=trailing_sl)
    else
        strategy.close_all("Stop Short")

if ta.change(direction) > 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Short"
        strategy.entry("Short", strategy.short, stop=trailing_sl)
    else
        strategy.close_all("Stop Long")

// Exit logic: Trailing Stop and Supertrend
//if strategy.position_size > 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl)

//if strategy.position_size < 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl)

// Trailing Stop visualization
plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)
//plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")