Ini adalah strategi rintangan stop loss berdasarkan turun naik harga. Ia menggunakan Julat Benar Purata (ATR) untuk menetapkan garis stop loss untuk turun naik harga. ATR mencerminkan turun naik dan tahap risiko harga. Apabila harga melebihi garis stop loss, strategi menilai pembalikan trend dan mengambil tindakan yang sesuai untuk membuka kedudukan atau menghentikan kerugian.
Strategi ini mula-mula mengira Julat Benar Purata (ATR) dalam tempoh tertentu. Kemudian berdasarkan arah trend harga semasa, jika ia adalah trend menaik, garis stop loss ditetapkan pada harga tertinggi semasa dikurangkan n kali ATR; jika ia adalah downtrend, garis stop loss ditetapkan pada harga terendah semasa ditambah n kali ATR. Nilai n boleh diselaraskan melalui parameter untuk mengawal jarak antara garis stop loss dan harga.
Apabila harga menembusi garis stop loss trend menaik atau menurun, trendnya dianggap telah berubah. Pada ketika ini, strategi membersihkan kedudukan untuk stop loss dan menetapkan garis stop loss baru berdasarkan arah trend baru.
Ringkasnya, strategi menggunakan turun naik harga untuk menetapkan garis stop loss untuk mencapai penilaian yang tepat mengenai perubahan trend.
Secara keseluruhan, ini adalah pelaksanaan algoritma yang baik untuk menetapkan garis stop loss berdasarkan turun naik harga. Keakuratan dalam menilai trend harga adalah tinggi dan ia boleh menangkap titik perubahan utama trend. Ia juga menyediakan beberapa ruang untuk penyesuaian parameter untuk fleksibiliti yang lebih baik. Sebagai strategi stop loss, ia dapat dengan berkesan mengelakkan risiko pembalikan pasaran dan bernilai digunakan 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)