Strategi stop loss bergerak ATR berdasarkan penunjuk UT Bot


Tarikh penciptaan: 2024-03-11 11:17:33 Akhirnya diubah suai: 2024-03-11 11:17:33
Salin: 0 Bilangan klik: 2014
1
fokus pada
1617
Pengikut

Strategi stop loss bergerak ATR berdasarkan penunjuk UT Bot

Gambaran keseluruhan

Strategi ini adalah berdasarkan kepada penunjuk UT Bot yang dibangunkan oleh QuantNomad, yang digabungkan dengan pemikiran berhenti bergerak. Kod asal ditulis oleh @Yo_adriiiiaan, @HPotter telah diubah suai. Strategi ini akan digunakan dengan konsep wang pintar LuxAlgo.

Prinsip Strategi

Prinsip-prinsip utama strategi ini ialah:

  1. Berdagang lebih banyak apabila harga penutupan lebih tinggi daripada purata bergerak mudah 50 tempoh.
  2. Untuk kedudukan berbilang kepala, tetapkan harga henti bergerak. Harga henti bergerak adalah 80% daripada harga penutupan semasa. Harga henti bergerak akan bergerak ke atas apabila harga naik, tetapi tidak bergerak ke bawah, dan dengan itu berfungsi untuk melindungi keuntungan.
  3. Untuk kedudukan kosong, tetapkan harga hentian bergerak. Harga hentian bergerak adalah 120% daripada harga penutupan semasa. Harga hentian bergerak akan turun apabila harga turun, tetapi tidak akan naik.
  4. Menggunakan ATR ((Average True Range) sebagai asas rujukan untuk berhenti bergerak. Cara untuk mengira harga berhenti bergerak ATR adalah: Apabila bergerak ke atas, ambil harga berhenti bergerak ATR sebelumnya dan harga tutup semasa - ATR*Nilai Utama (Key Value) yang lebih besar; apabila bergerak ke bawah, ambil ATR sebelum harga hentian bergerak dan ((harga tutup semasa + ATR)*Key Value) yang lebih kecil daripada kedua-duanya. Di mana Key Value adalah parameter yang ditetapkan oleh pengguna untuk menyesuaikan sensitiviti kehilangan bergerak.
  5. Berdasarkan kepada penembusan harga ATR bergerak berhenti, menilai arah memegang kedudukan semasa. Apabila harga melangkaui harga penembusan ATR bergerak berhenti, memegang kedudukan bertopeng; Apabila harga melangkaui harga penembusan ATR bergerak berhenti, memegang kedudukan kosong; Dalam kes lain, mengekalkan kedudukan semasa.

Analisis kelebihan

  1. Tetapan stop loss bergerak dapat melindungi keuntungan dengan baik, membolehkan strategi memperoleh lebih banyak keuntungan dalam keadaan trend.
  2. Tetapan stop loss untuk kedudukan berbilang dan kosong, dapat menyesuaikan diri dengan keadaan yang berbeza.
  3. Dengan menggunakan ATR sebagai asas rujukan untuk menghentikan kerugian, anda boleh menyesuaikan kedudukan berhenti secara dinamik, lebih fleksibel dan berkesan.
  4. Parameter Nilai Utama disediakan untuk pengoptimuman pengguna, yang boleh disesuaikan mengikut varieti dan kitaran yang berbeza, untuk meningkatkan adaptasi.

Analisis risiko

  1. Dalam keadaan yang tidak menentu, gangguan yang kerap boleh menyebabkan terlalu banyak transaksi, meningkatkan kos bayaran dan mengurangkan keuntungan.
  2. Penutupan bergerak dengan peratusan tetap agak mudah dan mungkin tidak dapat menangani turun naik harga dengan baik dalam beberapa keadaan.
  3. Strategi hanya mengambil kira stop loss bergerak, dan tanpa menetapkan stop loss bergerak, anda mungkin kehilangan beberapa peluang keuntungan.
  4. Pilihan parameter mempunyai kesan yang lebih besar terhadap prestasi strategi, parameter yang tidak betul mungkin membawa risiko penarikan balik yang lebih besar.

Arah pengoptimuman

  1. Anda boleh mempertimbangkan untuk mengoptimumkan keadaan masuk dengan menggabungkan indikator atau syarat lain, seperti jumlah transaksi, kadar turun naik, dan sebagainya, untuk meningkatkan kebolehpercayaan isyarat.
  2. Untuk kaedah pengiraan kehilangan bergerak, cara yang lebih kompleks dan berkesan boleh diterokai, seperti menggunakan paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras
  3. Mekanisme berhenti bergerak boleh dimasukkan, seperti menetapkan berhenti dinamik berdasarkan ATR atau peratusan, untuk mengunci keuntungan dengan lebih baik.
  4. Untuk pelbagai jenis dan kitaran, anda boleh mengoptimumkan parameter untuk mencari kombinasi parameter yang paling sesuai. Anda juga boleh menyesuaikan parameter secara dinamik mengikut perubahan keadaan pasaran.

ringkaskan

Strategi ini, berdasarkan petunjuk UT Bot, menambah logik hentian bergerak, yang dapat melindungi keuntungan dalam keadaan trend. Pada masa yang sama, strategi ini menetapkan hentian secara berasingan untuk kedudukan multihead dan kosong, dan sangat beradaptasi. Menggunakan ATR sebagai asas rujukan untuk hentian bergerak, anda boleh menyesuaikan kedudukan hentian secara dinamik, meningkatkan fleksibiliti.

Pada masa akan datang, strategi boleh disempurnakan dengan tujuan untuk mendapatkan keuntungan yang lebih stabil dari segi mengoptimumkan keadaan masuk, meneroka cara berhenti bergerak yang lebih kompleks, memasukkan mekanisme berhenti bergerak, mengoptimumkan parameter untuk pelbagai jenis dan kitaran. Secara keseluruhan, strategi ini mudah difahami, mudah difahami dan dilaksanakan, tetapi masih ada ruang untuk pengoptimuman lebih lanjut yang patut terus diterokai dan diperbaiki.

Kod sumber strategi
/*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")