
Strategi ini mengunci keuntungan dengan menghitung indikator dinamika harga dan menetapkan stop loss pelacakan dua arah yang panjang dan pendek, sehingga dapat mencapai stop loss pelacakan tren. Strategi ini juga digabungkan dengan tingkat aktivasi, yang hanya mulai melacak stop loss setelah mencapai keuntungan yang ditentukan, yang dapat secara efektif mencegah stop loss prematur.
Hitung 12 siklus harga, lalu hitung 1 siklus harga. Bila kecepatan bergerak lebih besar dari 0 dan lebih kecil dari 0 maka akan terjadi penurunan. Dengan cara ini kita dapat mengetahui arah perubahan harga dan mengetahui tren harga.
Setting Tracking Stop Loss Distance and Tracking Stop Loss Activation Levels. Tracking Stop Loss Distance adalah ketika harga berjalan ke titik tinggi atau titik rendah baru, dan stop loss disesuaikan dengan jarak yang ditentukan. Tracking Stop Loss Activation adalah ketika Anda harus mencapai tingkat keuntungan tertentu untuk mulai melacak stop loss.
Strategi ini mengunci keuntungan dengan melacak harga tertinggi atau terendah, dan mengirimkan sinyal posisi kosong ketika harga kembali melebihi jarak stop loss yang ditetapkan.
Menggunakan penilaian dinamika ganda, dapat menentukan arah tren harga secara akurat, mengurangi jumlah transaksi, dan menghindari penipuan.
Fleksibilitas pengaturan untuk melacak stop loss, mengurangi risiko, dan mengunci keuntungan.
Anda dapat mengatur tingkat aktivasi stop loss yang dapat dilacak, dan hanya mengaktifkan stop loss setelah mencapai keuntungan tertentu, untuk menghindari stop loss prematur.
Anda dapat mengatur tingkat stop loss untuk multihead dan headless untuk mengontrol risiko secara menyeluruh.
Proses perhitungan sederhana dan efisien, mudah dipahami dan diterapkan.
Pengadilan Dinamika Ganda mungkin akan memberikan sinyal kebalikan, yang membutuhkan kombinasi filter tren.
Stop loss setting yang terlalu besar may cause significant losses.
Tingkat aktivasi yang terlalu tinggi dapat menyebabkan kehilangan peluang stop loss.
Lebih banyak pengujian dan pengoptimalan parameter diperlukan untuk menemukan stop loss yang optimal.
Untuk mengurangi sinyal salah dengan mengamati tren dan mengoptimalkan parameter. Uji varietas kontrak dan pengaturan parameter untuk mencari konfigurasi optimal.
Menggabungkan indikator untuk mengidentifikasi struktur pasar, untuk mengidentifikasi tren overbought dan menghindari perdagangan terbalik.
Menambahkan lebih banyak kondisi penentuan waktu, seperti perubahan volume transaksi, penembusan skala, dan lain-lain, meningkatkan akurasi sinyal.
Optimalkan parameter, uji kinerja dengan jarak penghentian yang berbeda dan tingkat aktivasi.
Pertimbangkan jarak stop loss yang dilacak secara dinamis dan disesuaikan secara otomatis dengan fluktuasi pasar.
Hal ini dapat diatur untuk menghentikan sebagian atau bergerak berhenti, untuk lebih mengontrol risiko.
Strategi ini memiliki struktur keseluruhan yang jelas, menilai tren harga melalui indikator dinamis ganda, mengatur stop loss pelacakan yang fleksibel untuk mengunci keuntungan, dan dapat secara efektif mengendalikan risiko perdagangan. Strategi ini mudah dipahami dan diimplementasikan, sementara ada ruang untuk dioptimalkan, menambahkan lebih banyak indikator teknis dan pengujian parameter dapat meningkatkan kinerja strategi lebih lanjut. Strategi ini dapat memberikan ide dan referensi untuk mencapai manajemen stop loss.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trailing Stop Snippet", overlay=true)
length = input(12)
price = close
momentum(seria, length) =>
mom = seria - seria[length]
mom
mom0 = momentum(price, length)
mom1 = momentum( mom0, 1)
tsact = input.float(0.0, "Trailing Stop Activation |", group="strategy", tooltip="Activates the Trailing Stop once this PnL is reached.") / 100
tsact := tsact ? tsact : na
ts = input.float(0.0, "Position Trailing Stop |", group="strategy", tooltip="Trails your position with a stop loss at this distance from the highest PnL") / 100
ts := ts ? ts : na
in_long = strategy.position_size > 0
in_short = strategy.position_size < 0
var ts_ = array.new_float()
ts_size = array.size(ts_)
ts_get = ts_size > 0 ? array.get(ts_, ts_size - 1) : 0
if in_long
if tsact and high > strategy.position_avg_price + strategy.position_avg_price * tsact
if ts_size > 0 and ts_get < high
array.push(ts_, high)
if ts_size < 1
array.push(ts_, high)
if not tsact
if ts_size > 0 and ts_get < high
array.push(ts_, high)
if ts_size < 1
array.push(ts_, high)
if in_short
if tsact and low < strategy.position_avg_price - strategy.position_avg_price * tsact
if ts_size > 0 and ts_get > low
array.push(ts_, low)
if ts_size < 1
array.push(ts_, low)
if not tsact
if ts_size > 0 and ts_get > low
array.push(ts_, low)
if ts_size < 1
array.push(ts_, low)
trail = in_long and ts_size > 0 ? low < ts_get - ts_get * ts : in_short and ts_size > 0 ? high > ts_get + ts_get * ts : na
if (mom0 > 0 and mom1 > 0)
strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
strategy.cancel("MomLE")
if (mom0 < 0 and mom1 < 0)
strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
strategy.cancel("MomSE")
tsClose = in_long ? ts_get - ts_get * ts : in_short ? ts_get + ts_get * ts : na
if trail
strategy.close_all()
if not strategy.opentrades
array.clear(ts_)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
plotchar(ts_get, "GET", "")
plot(strategy.position_avg_price > 0 ? strategy.position_avg_price : na, "Average", color.rgb(251, 139, 64), 2, plot.style_cross)
plot(tsClose > 0 ? tsClose : na, "Trailing", color.rgb(251, 64, 64), 2, plot.style_cross)
plot(strategy.position_avg_price - strategy.position_avg_price * tsact > 0 ? strategy.position_avg_price - strategy.position_avg_price * tsact : na, "TS Activation", color.fuchsia, 2, plot.style_cross)