UT Bot Indikator Berasaskan ATR Trailing Stop Strategi

Penulis:ChaoZhang, Tarikh: 2024-03-11 11:17:33
Tag:

img

Ringkasan

Strategi ini adalah berdasarkan kepada penunjuk UT Bot yang dibangunkan oleh QuantNomad dan menggabungkan idea kehilangan berhenti. Kod asal ditulis oleh @Yo_adriiiiaan dan diubah suai oleh @HPotter. Strategi ini akan digunakan bersama-sama dengan Konsep Wang Pintar LuxAlgo.

Prinsip Strategi

Prinsip-prinsip utama strategi ini adalah seperti berikut:

  1. Apabila harga penutupan lebih tinggi daripada purata bergerak mudah 50 tempoh, perdagangan panjang dimasukkan.
  2. Untuk kedudukan panjang, harga stop loss terakhir ditetapkan. Harga stop loss terakhir adalah 80% (1-20%) daripada harga penutupan semasa. Harga stop loss terakhir bergerak naik dengan harga yang meningkat tetapi tidak bergerak ke bawah, dengan itu melindungi keuntungan.
  3. Untuk kedudukan pendek, harga stop loss terakhir juga ditetapkan. Harga stop loss terakhir adalah 120% (1+20%) daripada harga penutupan semasa. Harga stop loss terakhir bergerak ke bawah dengan harga jatuh tetapi tidak bergerak ke atas.
  4. ATR (Rentang Benar Purata) digunakan sebagai rujukan untuk hentian pengangkatan. Kaedah pengiraan untuk harga hentian pengangkatan ATR adalah: apabila bergerak ke atas, ambil yang lebih besar daripada harga hentian pengangkatan ATR sebelumnya dan (harga penutupan semasa - ATR * Nilai Kunci); apabila bergerak ke bawah, ambil yang lebih kecil daripada harga hentian pengangkatan ATR sebelumnya dan (harga penutupan semasa + ATR * Nilai Kunci). Nilai Kunci adalah parameter yang ditetapkan pengguna yang digunakan untuk menyesuaikan kepekaan hentian pengangkatan.
  5. Berdasarkan terobosan harga hentian trailing ATR, arah kedudukan semasa ditentukan. Apabila harga memecahkan harga hentian trailing ATR, kedudukan panjang dipegang; apabila harga memecahkan di bawah harga hentian trailing ATR, kedudukan pendek dipegang; dalam kes lain, status kedudukan semasa tetap tidak berubah.

Analisis Kelebihan

  1. Tetapan trailing stop dapat melindungi keuntungan dengan berkesan, membolehkan strategi untuk memperoleh lebih banyak keuntungan di pasaran trend.
  2. Menetapkan stop loss secara berasingan untuk kedudukan panjang dan pendek boleh disesuaikan dengan keadaan pasaran yang berbeza.
  3. Menggunakan ATR sebagai rujukan untuk stop loss membolehkan penyesuaian dinamik kedudukan stop loss, menjadikannya lebih fleksibel dan berkesan.
  4. Parameter Key Value disediakan untuk pengoptimuman pengguna, yang boleh diselaraskan mengikut pelbagai jenis dan kitaran untuk meningkatkan kesesuaian.

Analisis Risiko

  1. Di pasaran yang bergelombang, sering berhenti boleh membawa kepada transaksi yang berlebihan, meningkatkan kos komisen dan mengurangkan pulangan.
  2. Kaedah penangguhan penangguhan peratusan tetap agak mudah dan mungkin tidak dapat mengatasi fluktuasi harga dengan baik dalam beberapa keadaan pasaran.
  3. Strategi ini hanya mempertimbangkan penangguhan yang beransur-ansur dan tidak menetapkan sasaran keuntungan yang beransur-ansur, yang mungkin kehilangan beberapa peluang keuntungan.
  4. Pilihan parameter mempunyai kesan yang ketara terhadap prestasi strategi, dan parameter yang tidak sesuai boleh membawa risiko pengambilan yang lebih besar.

Arah pengoptimuman

  1. Penunjuk atau keadaan lain, seperti jumlah dagangan dan turun naik, boleh dipertimbangkan untuk mengoptimumkan keadaan kemasukan dan meningkatkan kebolehpercayaan isyarat.
  2. Untuk kaedah pengiraan hentian, kaedah yang lebih kompleks dan berkesan boleh diterokai, seperti menggunakan kerugian hentian parabolik atau kerugian hentian peratusan dinamik.
  3. Mekanisme sasaran keuntungan yang tertinggal boleh ditambah, sebagai contoh, menetapkan sasaran keuntungan dinamik berdasarkan ATR atau peratusan untuk mengunci keuntungan dengan lebih baik.
  4. Pengoptimuman parameter boleh dilakukan untuk pelbagai jenis dan kitaran untuk mencari kombinasi parameter yang paling sesuai. Parameter juga boleh diselaraskan secara dinamik mengikut perubahan keadaan pasaran.

Ringkasan

Berdasarkan penunjuk UT Bot, strategi ini menggabungkan logik hentian, yang dapat melindungi keuntungan di pasaran trend. Pada masa yang sama, strategi menetapkan kerugian hentian secara berasingan untuk kedudukan panjang dan pendek, menjadikannya sangat mudah disesuaikan. Menggunakan ATR sebagai rujukan untuk hentian hentian membolehkan penyesuaian dinamik kedudukan hentian kerugian, meningkatkan fleksibiliti. Walau bagaimanapun, strategi ini mungkin menghadapi risiko kos transaksi yang tinggi kerana hentian yang kerap di pasaran yang bergolak, dan ia tidak mempunyai penetapan sasaran keuntungan hentian, yang mungkin kehilangan peluang keuntungan. Di samping itu, pilihan parameter mempunyai kesan yang signifikan terhadap prestasi strategi.

Pada masa akan datang, strategi boleh dipertingkatkan dengan mengoptimumkan keadaan kemasukan, meneroka kaedah berhenti yang lebih kompleks, menambah mekanisme sasaran keuntungan yang tertinggal, dan mengoptimumkan parameter untuk pelbagai jenis dan kitaran, untuk mendapatkan pulangan yang lebih stabil. Secara keseluruhan, idea strategi adalah mudah dan mudah difahami dan dilaksanakan, tetapi terdapat ruang untuk pengoptimuman lebih lanjut dan perlu terus meneroka dan memperbaiki.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")

Lebih lanjut