Strategi Hentian Jejak Momentum Harga


Tarikh penciptaan: 2023-11-27 11:45:04 Akhirnya diubah suai: 2023-11-27 11:45:04
Salin: 0 Bilangan klik: 627
1
fokus pada
1617
Pengikut

Strategi Hentian Jejak Momentum Harga

Gambaran keseluruhan

Strategi ini mengunci keuntungan dengan mengira indikator dinamik harga, menetapkan berhenti lama dan dua arah untuk mengunci keuntungan, sehingga dapat mencapai berhenti trend. Strategi ini digabungkan dengan tahap pengaktifan, dan hanya mula menjejaki berhenti selepas keuntungan yang ditetapkan dicapai, dapat mencegah berhenti terlalu awal.

Prinsip Strategi

Hitung 12 kitaran pergerakan harga, kemudian kira 1 kitaran pergerakan harga. Apabila pergerakan cepat (gerakan 1 kitaran pergerakan harga) lebih besar daripada 0 lebih banyak, kurang daripada 0 lebih kecil daripada kosong.

Tetapkan jarak tracking stop loss dan tahap tracking stop loss activation. Jarak tracking stop loss adalah apabila harga berjalan ke titik tinggi atau rendah yang baru, penyesuaian stop loss ke jarak yang ditetapkan.

Strategi ini mengunci keuntungan dengan mengesan harga tertinggi atau terendah, dan menghantar isyarat kedudukan kosong apabila harga kembali melebihi jarak berhenti yang ditetapkan.

Analisis kelebihan strategi

  1. Menggunakan penilaian dinamika ganda, anda dapat menentukan arah trend harga dengan tepat, mengurangkan jumlah transaksi, dan mengelakkan penipuan.

  2. Fleksibiliti untuk menjejaki jarak hentian, mengurangkan risiko, dan mengunci keuntungan.

  3. Anda boleh menetapkan tahap pengaktifan hentian kerugian yang boleh dikesan, dan hanya mengaktifkan mekanisme hentian kerugian setelah mencapai keuntungan tertentu, untuk mengelakkan hentian kerugian terlalu awal.

  4. Anda boleh menetapkan tahap kerugian multi-head dan kosong pada masa yang sama, untuk mengawal risiko sepenuhnya.

  5. Proses pengiraan adalah mudah, cekap, mudah difahami dan dilaksanakan.

Analisis risiko strategi

  1. Penghakiman dua kali ganda mungkin menunjukkan isyarat pembalikan dan memerlukan penapis trend.

  2. Penetapan jarak henti yang terlalu besar boleh menyebabkan kerugian yang signifikan.

  3. Tetapan tahap pengaktifan terlalu tinggi mungkin terlepas peluang untuk menghentikan kerugian.

  4. Lebih banyak parameter perlu diuji dan dioptimumkan untuk mencari titik henti terbaik.

Anda boleh mengurangkan isyarat palsu dengan menilai trend dan mengoptimumkan parameter. Uji kontrak dan parameter yang berbeza untuk mencari konfigurasi terbaik.

Arah pengoptimuman strategi

  1. Menggabungkan struktur pasaran dengan penanda pengenalan untuk mengenal pasti trend kosong dan mengelakkan perdagangan terbalik.

  2. Penambahan lebih banyak syarat masa, seperti perubahan jumlah dagangan, penembusan skala, dan lain-lain, meningkatkan ketepatan isyarat.

  3. Optimumkan parameter untuk menguji prestasi dengan jarak henti dan tahap pengaktifan yang berbeza.

  4. Pertimbangkan jarak hentian yang dikesan secara dinamik, menyesuaikan secara automatik mengikut turun naik pasaran.

  5. Anda boleh menetapkan partial stop atau move stop untuk mengawal risiko.

ringkaskan

Struktur keseluruhan strategi ini jelas, menilai trend harga melalui indikator dinamika ganda, menetapkan hentian pengesanan yang fleksibel untuk mengunci keuntungan, dan mengawal risiko perdagangan dengan berkesan. Strategi ini mudah difahami dan dilaksanakan, dan terdapat ruang untuk pengoptimuman, menambah lebih banyak petunjuk teknikal dan ujian parameter dapat meningkatkan lagi prestasi strategi. Strategi ini dapat memberikan pemikiran dan rujukan untuk mewujudkan pengurusan hentian kerugian.

Kod 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)