
Strategi ini adalah strategi pelacakan tren garis tengah yang didesain berdasarkan indikator breakout dan stop loss dinamis. Strategi ini menggunakan harga untuk menerobos garis stop loss dinamis untuk menentukan arah tren, masuk ke dalam lapangan saat harga menerobos garis stop loss, lalu menggunakan garis stop loss untuk melacak tren dan mengunci keuntungan. Strategi ini bertujuan untuk menangkap tren garis tengah yang panjang, sekaligus menggunakan stop loss dinamis untuk mengendalikan risiko.
Strategi ini menggunakan indikator stop loss dinamis Volatility Stop untuk menilai arah tren dan melacak stop loss. Stop Volatility Stop menghitung garis stop loss dinamis berdasarkan rentang fluktuasi harga. Metode perhitungan spesifiknya adalah:
Dengan demikian, stop loss line akan berfluktuasi naik turun seiring dengan pergerakan harga, membentuk sebuah saluran yang dinamis.
Ketika harga menembus garis stop loss, menunjukkan bahwa tren telah berbalik, strategi akan membuka posisi:
Setelah posisi dibuka, strategi akan menggunakan garis stop loss untuk melacak stop loss:
Ketika harga kembali menyentuh garis stop loss, strategi akan melakukan stop loss.
Dengan cara ini, strategi dapat berjalan dengan lancar, mengikuti pembalikan tren tepat waktu, dan menggunakan stop loss untuk mengendalikan risiko.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Tanggapan:
Strategi ini dapat dioptimalkan lebih lanjut dengan:
Strategi stop-loss dinamis ini adalah strategi pelacakan tren yang sangat praktis secara keseluruhan. Strategi ini dapat menangkap peluang untuk membalikkan tren, dan menggunakan stop-loss dinamis untuk mengontrol risiko secara efektif. Jika parameter dioptimalkan dengan benar, keuntungan yang lebih baik dapat diperoleh dalam situasi tren. Tetapi strategi ini juga perlu diperhatikan beberapa masalah, seperti stop-loss yang terlalu sensitif, frekuensi perdagangan yang terlalu tinggi.
/*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)