
Strategi ini adalah strategi pengesanan trend garis tengah yang direka berdasarkan penembusan dan parameter berhenti dinamik. Strategi ini menggunakan harga untuk memecahkan garis berhenti dinamik untuk menentukan arah trend, masuk ke dalam medan apabila harga memecahkan garis berhenti, dan kemudian menggunakan garis berhenti untuk mengesan trend dan mengunci keuntungan. Strategi ini bertujuan untuk menangkap trend garis tengah yang panjang, sambil menggunakan berhenti dinamik untuk mengawal risiko.
Strategi ini menggunakan penunjuk berhenti dinamik Volatility Stop untuk menentukan arah trend dan menjejaki berhenti. Stop Volatility Stop mengira garis berhenti dinamik berdasarkan jangkauan turun naik harga.
Dengan cara ini, garis hentian akan bergerak ke atas dan ke bawah mengikut pergerakan harga, membentuk saluran yang dinamik.
Strategi ini akan membuka kedudukan apabila harga melepasi garis stop-loss, yang menunjukkan bahawa trend telah berbalik, seperti:
Selepas kedudukan dibuka, strategi akan menggunakan garis hentian untuk menjejaki hentian:
Apabila harga menyentuh semula garisan stop loss, strategi ini akan menghentikan kerugian.
Dengan cara ini, strategi boleh berjalan lancar, dan trend dapat ditukar pada masa yang tepat, sambil menggunakan stop loss untuk mengawal risiko.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Kaedah pencegahan:
Strategi ini boleh dioptimumkan dengan cara:
Strategi penembusan trend-daya berhenti adalah satu strategi trend yang sangat praktikal secara keseluruhan. Ia boleh merebut peluang untuk membalikkan trend, dan dengan itu, ia boleh digunakan untuk mengawal risiko dengan berkesan. Jika parameter dioptimumkan dengan betul, anda boleh mendapatkan keuntungan yang lebih baik dalam keadaan trend. Tetapi strategi ini juga perlu berhati-hati dengan beberapa masalah, seperti terlalu sensitif, terlalu tinggi frekuensi perdagangan.
/*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)