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