Ini adalah strategi trend-mengikuti berdasarkan breakout dan volatility stop. Strategi mengidentifikasi arah tren dengan price breakout dari line stop loss dinamis. Ini memasuki perdagangan ketika harga menembus line stop loss dan menggunakan line stop loss untuk melacak tren dan mengunci keuntungan. Strategi ini bertujuan untuk menangkap tren jangka menengah dan panjang sambil mengendalikan risiko dengan stop dinamis.
Strategi ini menggunakan indikator Volatility Stop untuk menentukan arah tren dan melacak stop loss.
Garis stop loss berfluktuasi naik turun dengan harga, membentuk saluran dinamis.
Ketika harga menembus garis stop loss, itu menandakan pembalikan tren.
Setelah membuka posisi, strategi melacak stop loss dengan garis:
Ketika harga mencapai garis stop loss lagi, posisi akan ditutup.
Dengan cara ini, strategi dapat mengikuti tren secara tepat waktu sambil mengendalikan risiko dengan berhenti.
Strategi ini memiliki keuntungan berikut:
Ada juga beberapa risiko yang harus dipertimbangkan:
Solusi:
Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:
Secara keseluruhan strategi momentum breakout ini dengan volatility stop adalah sistem trend following yang sangat praktis. Ini dapat menangkap peluang pembalikan tren dan mengikuti tren sambil mengontrol risiko secara efektif dengan dynamic stop. Dengan penyesuaian parameter yang tepat, dapat mencapai pengembalian yang baik selama pasar tren. Tetapi beberapa masalah perlu ditangani seperti stop yang terlalu sensitif, frekuensi perdagangan yang tinggi dll. Optimasi lebih lanjut dapat mengubahnya menjadi strategi perdagangan kuantitatif yang efisien dan kuat.
/*backtest start: 2023-11-11 00:00:00 end: 2023-11-12 00:00:00 period: 3m basePeriod: 1m 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/ //@version=4 strategy(shorttitle='Volatility Stop Strategy',title='Volatility Stop Strategy (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) // Works better on 3h, 1h, 2h, 4h // Best time frame 2H //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" length = input(20, "Length", minval = 2) src = input(close, "Source") factor = input(3.0, "vStop Multiplier", minval = 0.25, step = 0.25) volStop(src, atrlen, atrfactor) => var max = src var min = src var uptrend = true var stop = 0.0 atrM = nz(atr(atrlen) * atrfactor, tr) max := max(max, src) min := min(min, src) stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] [vStop, uptrend] = volStop(src, length, factor) //Entry strategy.entry(id="long", long = true, when = crossover(close, vStop) and window()) //Exit strategy.close("long", when = crossunder(close, vStop)) plot(vStop,"Vstop", color.black, linewidth=2)