
Ringkasan
Strategi ini didasarkan pada metrik UT Bot yang dikembangkan oleh QuantNomad, yang menggabungkan pemikiran stop loss mobile. Kode asli ditulis oleh @Yo_adriiiiaan, yang dimodifikasi oleh @HPotter. Strategi ini akan bekerja sama dengan konsep Smart Money LuxAlgo. Strategi ini saat ini sedang dalam tahap pengujian.
Prinsip Strategi
Prinsip-prinsip utama dari strategi ini adalah sebagai berikut:
- Perdagangan lebih banyak dilakukan ketika harga penutupan lebih tinggi dari rata-rata bergerak sederhana 50 periode.
- Untuk posisi multi-head, atur harga stop loss bergerak. Harga stop loss bergerak adalah 80% dari harga penutupan saat ini. Harga stop loss bergerak akan naik seiring kenaikan harga, tetapi tidak turun, sehingga berfungsi untuk melindungi keuntungan.
- Untuk posisi kosong, juga mengatur harga stop loss bergerak. Harga stop loss bergerak adalah 120% dari harga penutupan saat ini. Harga stop loss bergerak akan turun seiring penurunan harga, tetapi tidak akan naik.
- Menggunakan ATR (Average True Range) sebagai dasar referensi untuk stop loss bergerak. Metode perhitungan harga stop loss bergerak ATR adalah: Ketika bergerak ke atas, ambil harga stop loss bergerak ATR sebelumnya dan harga tutup saat ini - ATR*Key Value) yang lebih besar dari keduanya; ketika bergerak ke bawah, ambil ATR sebelumnya bergerak harga stop loss dan ((harga tutup saat ini + ATR*Key Value) yang lebih kecil dari keduanya. Di mana Key Value adalah parameter yang disetel oleh pengguna untuk mengatur sensitivitas stop loss mobile.
- Berdasarkan terobosan harga ATR bergerak stop loss, menilai arah memegang posisi saat ini. Ketika harga naik terobosan harga ATR bergerak stop loss, memegang posisi multihead; Ketika harga turun terobosan ATR bergerak stop loss, memegang posisi kosong; Dalam kasus lain tetap memegang posisi saat ini.
Analisis Keunggulan
- Pengaturan stop loss bergerak dapat melindungi keuntungan dengan baik dan memungkinkan strategi untuk mendapatkan lebih banyak keuntungan dalam situasi yang sedang tren.
- Stop loss untuk posisi multihead dan kosong, dapat disesuaikan dengan situasi yang berbeda.
- Dengan menggunakan ATR sebagai dasar referensi untuk stop loss, posisi stop loss dapat disesuaikan secara dinamis, lebih fleksibel dan efektif.
- Parameter Key Value disediakan untuk pengoptimalan pengguna, yang dapat disesuaikan dengan varietas dan siklus yang berbeda untuk meningkatkan adaptasi.
Analisis risiko
- Dalam situasi yang bergolak, seringnya stop loss dapat menyebabkan terlalu banyak transaksi, meningkatkan biaya biaya, dan mengurangi keuntungan.
- Stop loss bergerak dengan persentase tetap relatif sederhana dan mungkin tidak dapat menanggapi fluktuasi harga dengan baik dalam beberapa situasi.
- Strategi ini hanya mempertimbangkan stop loss bergerak, dan tanpa pengaturan stop loss bergerak, Anda mungkin akan kehilangan beberapa peluang untuk mendapatkan keuntungan.
- Pilihan parameter memiliki dampak yang lebih besar terhadap kinerja strategi, dan parameter yang salah dapat membawa risiko penarikan yang lebih besar.
Arah optimasi
- Hal ini dapat dipertimbangkan untuk mengoptimalkan kondisi masuk, meningkatkan keandalan sinyal, dalam kombinasi dengan indikator atau kondisi lain, seperti volume transaksi, volatilitas, dan lain-lain.
- Metode yang lebih kompleks dan efektif untuk menghitung stop loss bergerak dapat dieksplorasi, misalnya dengan stop loss parabola, stop loss persentase dinamis, dan lain-lain.
- Mekanisme stop-loss yang bergerak dapat dimasukkan, misalnya dengan pengaturan stop-loss dinamis berdasarkan ATR atau persentase, untuk lebih mengunci keuntungan.
- Untuk varietas dan siklus yang berbeda, parameter dapat dioptimalkan, mencari kombinasi parameter yang paling sesuai. Parameter juga dapat disesuaikan secara dinamis sesuai dengan perubahan kondisi pasar.
Meringkaskan
Strategi ini, berdasarkan pada indikator UT Bot, menambahkan logika stop loss bergerak, yang dapat melindungi keuntungan dalam situasi tren. Selain itu, strategi ini mengatur stop loss untuk posisi multihead dan kosong, dan sangat beradaptasi. Menggunakan ATR sebagai dasar referensi untuk stop loss bergerak, Anda dapat secara dinamis menyesuaikan posisi stop loss, meningkatkan fleksibilitas. Namun, strategi ini mungkin menghadapi risiko biaya transaksi tinggi yang disebabkan oleh seringnya kerugian dalam situasi getaran, dan tidak memiliki pengaturan stop loss bergerak, kemungkinan kehilangan keuntungan.
Di masa depan, strategi dapat disempurnakan dengan tujuan untuk mendapatkan keuntungan yang lebih stabil, mulai dari mengoptimalkan kondisi masuk, mengeksplorasi cara stop loss bergerak yang lebih kompleks, memasukkan mekanisme stop loss bergerak, mengoptimalkan parameter untuk berbagai varietas dan siklus. Secara keseluruhan, ide strategi ini sederhana dan mudah dipahami dan diterapkan, tetapi masih ada ruang untuk pengoptimalan lebih lanjut yang layak untuk terus mengeksplorasi dan ditingkatkan.
Kode 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")