Strategi Trailing Stop Momentum Harga


Tanggal Pembuatan: 2023-11-27 11:45:04 Akhirnya memodifikasi: 2023-11-27 11:45:04
menyalin: 0 Jumlah klik: 627
1
fokus pada
1617
Pengikut

Strategi Trailing Stop Momentum Harga

Ringkasan

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.

Prinsip Strategi

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.

Analisis Keunggulan Strategi

  1. Menggunakan penilaian dinamika ganda, dapat menentukan arah tren harga secara akurat, mengurangi jumlah transaksi, dan menghindari penipuan.

  2. Fleksibilitas pengaturan untuk melacak stop loss, mengurangi risiko, dan mengunci keuntungan.

  3. Anda dapat mengatur tingkat aktivasi stop loss yang dapat dilacak, dan hanya mengaktifkan stop loss setelah mencapai keuntungan tertentu, untuk menghindari stop loss prematur.

  4. Anda dapat mengatur tingkat stop loss untuk multihead dan headless untuk mengontrol risiko secara menyeluruh.

  5. Proses perhitungan sederhana dan efisien, mudah dipahami dan diterapkan.

Analisis Risiko Strategi

  1. Pengadilan Dinamika Ganda mungkin akan memberikan sinyal kebalikan, yang membutuhkan kombinasi filter tren.

  2. Stop loss setting yang terlalu besar may cause significant losses.

  3. Tingkat aktivasi yang terlalu tinggi dapat menyebabkan kehilangan peluang stop loss.

  4. 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.

Arah optimasi strategi

  1. Menggabungkan indikator untuk mengidentifikasi struktur pasar, untuk mengidentifikasi tren overbought dan menghindari perdagangan terbalik.

  2. Menambahkan lebih banyak kondisi penentuan waktu, seperti perubahan volume transaksi, penembusan skala, dan lain-lain, meningkatkan akurasi sinyal.

  3. Optimalkan parameter, uji kinerja dengan jarak penghentian yang berbeda dan tingkat aktivasi.

  4. Pertimbangkan jarak stop loss yang dilacak secara dinamis dan disesuaikan secara otomatis dengan fluktuasi pasar.

  5. Hal ini dapat diatur untuk menghentikan sebagian atau bergerak berhenti, untuk lebih mengontrol risiko.

Meringkaskan

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.

Kode Sumber Strategi
/*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)