Strategi Pelacakan Volatilitas Stop

Penulis:ChaoZhang, Tanggal: 2023-12-01 17:53:36
Tag:

img

Gambaran umum

Ini adalah strategi stop loss pelacakan tren berdasarkan volatilitas harga. Ini menggunakan Average True Range (ATR) untuk menetapkan garis stop loss untuk fluktuasi harga. ATR mencerminkan volatilitas dan tingkat risiko harga. Ketika harga melebihi garis stop loss, strategi menilai pembalikan tren dan mengambil tindakan yang sesuai untuk membuka posisi atau menghentikan kerugian.

Prinsip Strategi

Strategi ini pertama-tama menghitung Average True Range (ATR) selama periode tertentu. Kemudian berdasarkan arah tren harga saat ini, jika itu adalah tren naik, garis stop loss ditetapkan pada harga tertinggi saat ini dikurangi n kali ATR; jika itu adalah tren menurun, garis stop loss ditetapkan pada harga terendah saat ini ditambah n kali ATR. Nilai n dapat disesuaikan melalui parameter untuk mengontrol jarak antara garis stop loss dan harga.

Ketika harga menembus garis stop loss dari tren naik atau turun, tren dinilai telah berubah. Pada titik ini, strategi membersihkan posisi untuk stop loss dan menetapkan garis stop loss baru berdasarkan arah tren baru.

Singkatnya, strategi menggunakan volatilitas harga untuk menetapkan garis stop loss untuk mencapai penilaian yang akurat tentang perubahan tren.

Keuntungan dari Strategi

  • Menggunakan karakteristik volatilitas harga untuk menilai tren dan dengan akurat memahami titik balik harga
  • Hentikan kerugian tepat waktu dan ganti posisi untuk mengurangi risiko pembalikan pasar
  • Pengaturan parameter yang fleksibel untuk mengendalikan jarak antara garis stop loss dan fluktuasi harga
  • Parameter dapat dioptimalkan untuk produk tertentu untuk fleksibilitas yang lebih baik

Risiko dari Strategi

  • Risiko penilaian yang salah karena kegagalan yang tidak valid. Harga mungkin memiliki kegagalan yang tidak stabil, menyebabkan kesalahan penilaian perubahan tren
  • Pengaturan parameter yang terlalu agresif dapat meningkatkan kerugian. Misalnya, ketika nilai n terlalu besar, garis stop loss terlalu dekat dan fluktuasi kecil dapat memicu
  • Efek stop loss mungkin buruk untuk produk volatilitas rendah seperti mata uang. Nilai ATR yang lebih kecil berarti garis stop loss lebih dekat ke harga

Arahan Optimasi

  • Indikator tambahan seperti volume perdagangan atau akselerasi volatilitas dapat diperkenalkan untuk menghindari penilaian yang salah tentang breakout yang tidak valid
  • Menyesuaikan nilai n berdasarkan karakteristik produk yang berbeda untuk membuat jarak stop loss lebih tepat
  • Periode ATR juga dapat dioptimalkan untuk memilih parameter periode yang paling cocok untuk menilai volatilitas celah harga

Ringkasan

Secara keseluruhan ini adalah implementasi algoritma yang baik untuk mengatur garis stop loss berdasarkan volatilitas harga. Keakuratan dalam menilai tren harga tinggi dan dapat menangkap titik balik utama tren. Ini juga memberikan beberapa ruang untuk penyesuaian parameter untuk kemampuan beradaptasi yang lebih baik. Sebagai strategi stop loss, ini dapat secara efektif menghindari risiko pembalikan pasar dan layak diterapkan dalam perdagangan langsung.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © laptevmaxim92

//@version=4
strategy("Volatility stop strategy", overlay=true)

length = input(20)
mult = input(2, step = 0.1)
utp = input(false, "Use take profit?")
pr = input(100, "Take profit pips")
usl = input(false, "Use stop loss?")
sl = input(100, "Stop loss pips")
fromday = input(01, defval=01, minval=01, maxval=31, title="From Day")
frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month")
fromyear = input(2000, minval=1900, maxval=2100, title="From Year")
today = input(31, defval=01, minval=01, maxval=31, title="To Day")
tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month")
toyear = input(2039, minval=1900, maxval=2100, title="To Year")

use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))

atr_ = atr(length)
max_ = 0.0
min_ = 0.0
max1 = 0.0
max1 := max(nz(max_[1]), close)
min1 = 0.0
min1 := min(nz(min_[1]), close)
vstop = 0.0
is_uptrend = false
is_uptrend_prev = false
is_uptrend_prev := nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? color.green : color.red, linewidth=2)

longCondition = is_uptrend
if (longCondition and use_date)
    strategy.entry("BUY", strategy.long)

shortCondition = not is_uptrend
if (shortCondition and use_date)
    strategy.entry("SELL", strategy.short)
    
if (utp and not usl)
    strategy.exit("TP", "BUY", profit = pr)
    strategy.exit("TP", "SELL", profit = pr)
    
if (usl and not utp)
    strategy.exit("SL", "BUY", loss = sl)
    strategy.exit("SL", "SELL", loss = sl)
    
if (usl and utp)
    strategy.exit("TP/SL", "BUY", loss = sl, profit = pr)
    strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)

Lebih banyak