Strategi Stop Loss Rata-rata Mengikuti Tren True Range

ATR TS
Tanggal Pembuatan: 2024-05-24 18:12:01 Akhirnya memodifikasi: 2024-05-24 18:12:01
menyalin: 8 Jumlah klik: 521
1
fokus pada
1617
Pengikut

Strategi Stop Loss Rata-rata Mengikuti Tren True Range

Ringkasan

Strategi ini menggunakan rata-rata true amplitude (ATR) sebagai dasar untuk melacak stop loss (TS) untuk mencapai tujuan pelacakan tren dengan menyesuaikan posisi stop loss secara dinamis. Ketika harga bergerak ke arah yang menguntungkan, posisi stop loss juga akan disesuaikan, sehingga mengunci keuntungan yang telah diperoleh.

Prinsip Strategi

  1. Perhitungan ATR, sebagai dasar untuk melacak stop loss. ATR mencerminkan volatilitas pasar dan digunakan untuk mengukur rata-rata besarnya perubahan harga.
  2. Berdasarkan parameter ATR dan KeyValue, stop loss distance nLoss. KeyValue adalah kelipatan dari user-defined, nLoss adalah perkalian dari KeyValue dan ATR, yang berarti stop loss distance adalah beberapa kali lipat dari ATR.
  3. Hitung posisi trailing stop xATRTrailingStop. Jika Anda memegang posisi multihead, aturnya sebagai “nilai yang lebih besar dari harga tertinggi dan harga penutupan-nLoss pada baris K sebelumnya”; Jika Anda memegang posisi head kosong, aturnya sebagai “nilai yang lebih kecil dari harga tertinggi dan harga penutupan-nLoss pada baris K sebelumnya”.
  4. Menciptakan sinyal untuk membuka posisi. Ketika harga tutup melewati xATRTrailingStop, lakukan lebih banyak; Ketika harga tutup melewati xATRTrailingStop, lakukan kosong.

Analisis Keunggulan

  1. Stop loss position secara dinamis menyesuaikan dengan fluktuasi harga, dapat mengunci keuntungan, tetapi juga memungkinkan keuntungan untuk terus berkembang.
  2. Posisi stop loss didasarkan pada perhitungan ATR, dapat secara objektif mencerminkan volatilitas pasar, dan lebih fleksibel dan efektif dibandingkan dengan stop loss tetap yang diatur secara subyektif.
  3. Dengan memperbesar ATR dengan parameter KeyValue, Anda dapat mengatur jarak penghentian yang sesuai sesuai dengan preferensi risiko Anda. KeyValue yang lebih besar akan menghasilkan ruang penghentian yang lebih luas dan frekuensi penghentian yang lebih sedikit.

Analisis risiko

  1. Strategi trending tidak bekerja dengan baik di pasar yang bergejolak, dan sering berhenti ketika tren sepihak tidak jelas, menyebabkan hilangnya dana yang cepat.
  2. Waktu masuk tergantung pada sinyal silang dari harga penutupan dengan garis stop loss dinamis, yang mungkin terjadi dalam situasi yang bergoyang.
  3. Strategi stop loss tidak dapat menghindari kebocoran yang ditimbulkan oleh Lido, dan tidak dapat mengikuti perubahan harga, sehingga kerugian yang sebenarnya jauh lebih besar daripada yang diharapkan.

Arah optimasi

  1. Anda dapat menambahkan indikator penilaian tren berdasarkan strategi, seperti sistem garis rata, indikator momentum, dan lain-lain, dan hanya masuk saat tren jelas, untuk menghindari perdagangan yang sering terjadi di pasar yang bergoyang.
  2. Anda dapat mempertimbangkan untuk memperkenalkan strategi stop-loss, seperti memegang posisi berdasarkan rumus Kelly, mengatur stop-loss untuk beberapa kali menarik keuntungan tetap, dan lain-lain, untuk mengurangi kemungkinan terbaliknya potensi keuntungan di akhir tren.
  3. Untuk lubang melompat, Anda dapat mengatur batas maksimum stop loss, seperti jumlah tetap atau persentase tetap, dan setelah batas tersebut tercapai, stop loss akan segera berhenti di mana pun harga stop loss dinamis berada.

Meringkaskan

ATR dapat secara dinamis menyesuaikan posisi stop loss sesuai dengan amplitudo fluktuasi harga, dan dapat mencapai efek yang baik dalam situasi tren. Namun, strategi ini juga tidak dapat menanggapi risiko pasar yang bergoyang, stop loss terlalu sering, dan sulit untuk menghindari celah melompat. Untuk kekurangan di atas, strategi dapat dioptimalkan dan diperbaiki dari penghakiman tren, strategi stop loss, dan batasan stop loss maksimum.

Kode Sumber Strategi
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')