Strategi Stop Trailing Adaptif


Tanggal Pembuatan: 2023-10-08 15:06:28 Akhirnya memodifikasi: 2023-10-08 15:06:28
menyalin: 0 Jumlah klik: 771
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini terutama mewujudkan mekanisme stop-loss adaptif yang dapat secara otomatis menyesuaikan posisi stop-loss sesuai dengan fluktuasi harga untuk mencapai efek stop-loss yang lebih baik. Strategi ini menggunakan indikator ATR untuk menghitung jangkauan stop-loss yang masuk akal, dan dalam kombinasi dengan EMA rata-rata menghasilkan sinyal perdagangan, membuka posisi lebih longgar saat menerobos EMA rata-rata, sambil menggunakan algoritma stop-loss adaptif untuk melacak posisi stop-loss.

Prinsip Strategi

  1. Hitung indikator ATR dengan menetapkan nilai ATR dikali parameter a sebagai rentang stop loss nLoss.
  2. Hitung EMA rata-rata.
  3. Ketika harga naik melewati EMA rata-rata, lakukan lebih banyak, dan ketika turun melewati EMA rata-rata, lakukan lebih sedikit.
  4. TrailingStop secara otomatis menyesuaikan stop loss xATRTrailingStop menggunakan algoritma stop loss adaptif, dengan aturan sebagai berikut:
    • Ketika harga melampaui batas stop loss ke atas, batas stop loss disesuaikan dengan harga minus batas stop loss nLoss.
    • Ketika harga turun ke bawah melewati titik stop loss, titik stop loss disesuaikan dengan harga ditambah dengan batas stop loss nLoss.
    • Stop loss tidak berubah dalam kasus lainnya.
  5. Ketika harga memicu Stop Loss, maka Stop Loss akan terjadi.

Analisis Keunggulan

  1. Mekanisme stop loss yang dapat disesuaikan secara otomatis dapat menyesuaikan stop loss secara otomatis sesuai dengan tingkat fluktuasi pasar, sehingga dapat mengontrol risiko secara efektif.
  2. Perhitungan jangkauan stop loss yang masuk akal dengan indikator ATR untuk menghindari stop loss yang terlalu besar atau terlalu kecil.
  3. Menggunakan EMA untuk menghasilkan sinyal perdagangan, Anda dapat mengurangi transaksi yang tidak perlu dan memfilter kebisingan pasar.
  4. Strategi yang sederhana dan jelas, kode yang mudah dipahami, mudah diperiksa dan dioptimalkan.
  5. Parameter input dapat disesuaikan dengan kondisi pasar yang berbeda.

Risiko dan perbaikan

  1. EMA rata-rata menghasilkan sinyal perdagangan yang mungkin terlambat, menyebabkan terlambat masuk. Anda dapat mempertimbangkan untuk menggunakan indikator lain untuk membantu menilai masuk lebih awal.
  2. Tidak ada waktu yang pasti untuk memegang posisi, tidak ada kendali atas ukuran stop loss tunggal. Anda dapat mengatur target keuntungan atau waktu maksimum untuk menahan posisi untuk menghindari kerugian besar.
  3. Dalam pasar tren besar, stop loss mungkin terlalu sering dipicu. Anda dapat mempertimbangkan untuk menyesuaikan parameter sesuai dengan kondisi tren atau menambahkan kondisi filter.
  4. Parameter harus disesuaikan sesuai dengan karakteristik varietas yang berbeda, seperti siklus ATR, stop loss multiplier, dan lain-lain.

Arah optimasi

  1. Anda dapat mempertimbangkan untuk menambahkan indikator penilaian tren, melakukan layanan pada arah tren, dan menghindari perdagangan berlawanan arah.
  2. Stop loss multiplier dapat disesuaikan sesuai dengan ukuran fluktuasi, dan dalam fluktuasi besar, area stop loss dapat dilepaskan secara tepat.
  3. Anda dapat mengatur waktu maksimum untuk memegang posisi, dan Anda dapat secara aktif menghentikan kerugian setelah waktu tertentu.
  4. Anda dapat menambahkan strategi stop loss bergerak, yang meningkatkan stop loss Anda ke arah yang lebih tinggi seiring pergerakan harga.
  5. Parameter siklus ATR dapat disesuaikan sesuai dengan karakteristik saham.

Meringkaskan

Strategi ini secara keseluruhan ide yang jelas dan mudah dimengerti, menggunakan indikator ATR untuk mengatur area yang disesuaikan untuk menghentikan kerugian, dan bekerja sama dengan EMA untuk menghasilkan sinyal perdagangan, dapat secara efektif mengendalikan kerugian. Namun, strategi itu sendiri relatif pasif, ruang optimasi yang lebih besar, dapat dipertimbangkan untuk memasukkan penilaian tren, sesuai dengan kondisi pasar menyesuaikan parameter dan metode lain-lain untuk membuat strategi lebih proaktif. Secara keseluruhan, strategi ini sebagai strategi penghentian kerugian adalah ide dan template yang lebih baik, tetapi perlu untuk melakukan penyesuaian dan pengoptimalan sesuai dengan karakteristik produk yang berbeda, tidak dapat dipindahkan menggunakan perangkat keras.

Kode Sumber Strategi
/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 

// Inputs
a = input(1,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


xATR  = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy  = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

barcolor(barbuy  ? color.green : na)
barcolor(barsell ? color.red   : na)

strategy.entry("long",   true, when = buy  and time_cond)
strategy.entry("short", false, when = sell and time_cond)