Sumber dimuat naik... memuat...

Strategi Pelancongan Harga Pengesanan Stop Loss

Penulis:ChaoZhang, Tarikh: 2023-11-27 11:45:04
Tag:

img

Ringkasan

Strategi ini mengira momentum harga untuk menentukan arah trend dan menetapkan berhenti penjejakan dua hala untuk mengunci keuntungan, merealisasikan stop loss mengikuti trend. Strategi ini juga menggabungkan tahap pengaktifan untuk memulakan penjejakan hanya setelah mencapai sasaran keuntungan yang ditentukan, dengan berkesan mencegah stop loss yang lebih awal.

Logika Strategi

Ia mengira momentum harga 12 tempoh, dan seterusnya mengira momentum 1 tempoh momentum. Apabila momentum cepat (1 tempoh momentum momentum harga) lebih besar daripada 0, ia pergi panjang. Apabila kurang dari 0, ia pergi pendek. Ini menilai perubahan arah momentum harga untuk menentukan trend harga.

Ia menetapkan jarak hentian dan tahap pengaktifan. Jarak hentian hentian merujuk kepada penyesuaian hentian ke jarak yang ditentukan dari tertinggi atau terendah terbaru apabila harga mencapai tahap tertinggi atau terendah baru. Tahap pengaktifan bermaksud hentian hentian hanya bermula selepas mencapai nisbah keuntungan tertentu.

Strategi ini mengunci keuntungan dengan mengesan harga tertinggi atau harga terendah, menghantar pesanan dekat apabila harga menarik balik melebihi jarak berhenti yang ditetapkan.

Analisis Kelebihan

  1. Penentuan momentum berganda dengan tepat menilai arah trend, mengurangkan perdagangan, dan mengelakkan terperangkap.

  2. Jarak berhenti yang fleksibel mengurangkan risiko dan kunci keuntungan.

  3. Tahap pengaktifan menghalang stop loss yang lebih awal dengan membolehkan penangguhan hanya selepas sasaran keuntungan tertentu dicapai.

  4. Henti dua arah secara komprehensif mengawal risiko untuk kedua-dua panjang dan pendek.

  5. Pengiraan mudah dan cekap, mudah difahami dan dilaksanakan.

Analisis Risiko

  1. Momentum berganda boleh menghasilkan isyarat terbalik, memerlukan penapis trend.

  2. Jarak berhenti yang berlebihan boleh menyebabkan kerugian yang besar.

  3. Tahap pengaktifan yang tinggi mungkin terlepas peluang berhenti.

  4. Lebih banyak ujian parameter dan pengoptimuman diperlukan untuk mencari hentian yang optimum.

Boleh mengurangkan isyarat palsu melalui penilaian trend dan pengoptimuman parameter. Uji pada produk dan set parameter yang berbeza untuk mencari konfigurasi terbaik.

Arahan pengoptimuman

  1. Menggabungkan pengiktirafan struktur pasaran untuk trend, mengelakkan perdagangan terbalik.

  2. Tambah lebih banyak keadaan masa seperti perubahan kelantangan, memerah keluar untuk meningkatkan ketepatan isyarat.

  3. Mengoptimumkan parameter dengan menguji jarak berhenti yang berbeza dan tahap pengaktifan.

  4. Pertimbangkan penangguhan pengangkutan dinamik bergantung kepada turun naik pasaran.

  5. Tetapkan hentian separa atau bergerak untuk kawalan risiko yang lebih baik.

Kesimpulan

Strategi ini mempunyai struktur yang jelas, menilai trend dengan momentum berganda dan mengunci keuntungan dengan hentian trailing yang fleksibel, mengawal risiko perdagangan dengan berkesan. Ia mudah difahami dan dilaksanakan, dengan ruang yang dapat dioptimumkan. Menambah lebih banyak penunjuk teknikal dan ujian parameter dapat meningkatkan prestasi strategi. Strategi ini memberikan idea dan rujukan untuk merealisasikan pengurusan 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)

Lebih lanjut