Strategi Jejak Berhenti Adaptif


Tarikh penciptaan: 2023-10-08 15:06:28 Akhirnya diubah suai: 2023-10-08 15:06:28
Salin: 0 Bilangan klik: 771
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini terutamanya mewujudkan mekanisme penutupan yang beradaptasi, yang dapat menyesuaikan kedudukan penutupan secara automatik mengikut turun naik harga, untuk mencapai kesan penutupan yang lebih baik. Strategi menggunakan indikator ATR untuk mengira julat penutupan yang munasabah, dan digabungkan dengan EMA rata-rata untuk menghasilkan isyarat perdagangan, melakukan penutupan tambahan apabila membuka kedudukan apabila memecahkan EMA rata-rata, dan pada masa yang sama menggunakan algoritma penutupan yang beradaptasi untuk mengesan kedudukan penutupan.

Prinsip Strategi

  1. Hitung penunjuk ATR dengan menetapkan nilai ATR kali parameter a sebagai julat stop loss nLoss.
  2. Hitung EMA rata-rata.
  3. Apabila harga naik melalui EMA rata-rata, buat lebih banyak, dan apabila turun melalui EMA rata-rata, buat kosong.
  4. Menggunakan algoritma berhenti beradaptasi untuk menyesuaikan berhenti xATRTrailingStop secara automatik, peraturan adalah seperti berikut:
    • Apabila harga melepasi paras penangguhan ke atas, penangguhan akan disesuaikan dengan harga tolak batas penangguhan nLoss.
    • Apabila harga turun ke bawah, ia akan membetulkan kedudukan stop loss kepada harga ditambah dengan nLoss.
    • Dalam kes lain, stop loss kekal sama.
  5. Apabila harga mencetuskan titik henti rugi, maka ia akan berhenti.

Analisis kelebihan

  1. Mekanisme Henti Kerosakan yang boleh disesuaikan secara automatik dapat menyesuaikan amplitudo Henti Kerosakan mengikut tahap turun naik pasaran, dan mengawal risiko dengan berkesan.
  2. Hentikan terlampau besar atau terlampau kecil dengan mengira jangkauan kerugian yang munasabah dengan menggunakan ATR.
  3. Menggunakan EMA untuk menghasilkan isyarat dagangan, anda boleh mengurangkan transaksi yang tidak perlu dan menapis bunyi pasaran.
  4. Strategi mudah dan jelas, kod mudah difahami, mudah diperiksa dan dioptimumkan.
  5. Parameter input boleh disesuaikan dengan keadaan pasaran yang berbeza.

Risiko dan penambahbaikan

  1. EMA rata-rata menghasilkan isyarat perdagangan yang mungkin terlewat, menyebabkan kemasukan terlambat. Anda boleh mempertimbangkan untuk menggunakan petunjuk lain untuk membantu membuat keputusan awal.
  2. Tempoh memegang jawatan tidak pasti, tidak dapat mengawal saiz stop loss tunggal. Anda boleh menetapkan keuntungan sasaran atau tempoh memegang jawatan maksimum untuk mengelakkan kerugian yang terlalu besar.
  3. Dalam pasaran yang sangat trend, hentian mungkin terlalu kerap dicetuskan. Anda boleh mempertimbangkan untuk menyesuaikan parameter mengikut keadaan trend atau menambah syarat penapis.
  4. Parameter harus diselaraskan mengikut ciri-ciri pelbagai jenis, seperti kitaran ATR, penggandaan hentian, dan lain-lain, tanpa menggunakan nilai lalai secara membabi buta.

Arah pengoptimuman

  1. Anda boleh pertimbangkan untuk memasukkan indikator trend, membuat pesanan mengikut arah trend, dan mengelakkan perdagangan berlawanan arah.
  2. Anda boleh menyesuaikan penggandaan stop loss mengikut saiz turun naik, dengan meluaskan julat stop loss yang sesuai dalam turun naik yang besar.
  3. Anda boleh menetapkan tempoh maksimum untuk memegang kedudukan dan berhenti aktif selepas tempoh tertentu.
  4. Anda boleh menambah strategi stop loss bergerak untuk menaikkan stop loss anda mengikut pergerakan harga.
  5. Parameter kitaran ATR boleh disesuaikan mengikut ciri-ciri saham.

ringkaskan

Strategi ini keseluruhan idea yang jelas dan mudah difahami, menggunakan ATR indikator menetapkan ruang untuk menyesuaikan diri untuk menghentikan kerugian, dan bekerjasama dengan EMA untuk menghasilkan isyarat perdagangan, yang boleh mengawal kerugian dengan berkesan. Tetapi strategi itu sendiri adalah lebih pasif, ruang pengoptimuman yang lebih besar, boleh mempertimbangkan untuk memasukkan penilaian trend, mengikut keadaan pasaran menyesuaikan parameter dan lain-lain kaedah untuk membuat strategi lebih proaktif. Secara keseluruhan, strategi ini sebagai strategi penghentian rugi adalah idea dan templat yang lebih baik, tetapi perlu menyesuaikan pengoptimuman mengikut ciri-ciri produk yang berbeza, tidak boleh digunakan untuk penggunaan perkakasan.

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