Strategi ini didasarkan pada rentang pergerakan harga historis untuk menentukan sinyal perdagangan. Ini menghitung perbedaan antara harga tertinggi dan terendah dalam periode tertentu dan membentuk rentang pergerakan melalui rata-rata bergerak.
Indikator utama dari strategi ini adalah volatilitas historis harga.
Perhitungan perbedaan antara harga tertinggi dan harga terendah dari N root Bar yang lalu, ditulis sebagai HL
Menghitung rata-rata harga tertinggi dan terendah dari N akar Bar di masa lalu (avg ((H, L))
Tingkat fluktuasi = HL / avg (H, L)
Di mana N adalah parameter “Volatility Length”.
Setelah mendapatkan volatilitas, perhitungkan tren naik turun:
Uptrend = saat ini dekat + saat ini dekat * volatilitas
Jalur bawah = saat ini dekat - saat ini dekat * volatilitas
Jalur atas dan bawah kemudian diproses dengan rata-rata WMA, dengan parameter “Average Length”.
Ketika harga menembus tren, lakukan lebih banyak; ketika harga menembus tren, lakukan lebih sedikit.
Sinyal posisi terdepan diberikan berdasarkan parameter “Exit Type”:
Jika Exit Type adalah Volatility MA, harga akan kembali ke WMA dengan posisi rata-rata terjal.
Ketika Exit Type adalah Range Crossover, harga kembali menembus leveling atas dan bawah.
Langkah-langkah berikut dapat mengurangi risiko:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Dengan menguji berbagai parameter Length, menemukan kombinasi parameter terbaik.
Misalnya, jika MACD juga melakukan penarikan emas pada saat harga menembus jalur, maka masukannya akan lebih banyak.
Dapat dioptimalkan untuk tracking stop loss dengan elastisitas, bukan hanya untuk break-out stop loss.
Setelah stop loss, jika tren berlanjut, Anda dapat mengatur kondisi masuk kembali dan melacak tren lagi.
Posisi perdagangan dapat disesuaikan secara dinamis dengan fluktuasi pasar.
Strategi ini secara keseluruhan lebih cocok untuk tren, dengan arah dan kekuatan tren dinilai melalui lintasan dan lintasan turun naik pada volatilitas, dan bekerja sama dengan WMA rata-rata untuk membentuk zona perdagangan yang lebih andal, sehingga menghasilkan titik jual beli yang terobosan. Namun, ada juga beberapa masalah, seperti penilaian tren yang tertinggal, metode stop loss dapat ditingkatkan, dll.
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
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/
// © wbburgin
//@version=5
strategy("Volatility Range Breakout Strategy [wbburgin]", shorttitle = "VRB Strategy [wbburgin]", overlay=true,
pyramiding=20,max_bars_back=2000,initial_capital=10000)
wma(float priceType,int length,float weight) =>
norm = 0.0
sum = 0.0
for i = 0 to length - 1
norm := norm + weight
sum := sum + priceType[i] * weight
sum / norm
// This definition of volatility uses the high-low range divided by the average of that range.
volatility(source,length) =>
h = ta.highest(source,length)
l = ta.lowest(source,length)
vx = 2 * (h - l) / (h + l)
vx
vm1 = input.int(100,"Average Length")
volLen = input.int(100,"Volatility Length")
vsrc = input.source(close,"Volatility Source")
cross_type = input.source(close,"Exit Source")
exit_type = input.string("Volatility MA",options=["Volatility MA","Range Crossover"],title="Exit Type")
volatility = volatility(vsrc,volLen)
highband1 = close + (close * volatility)
lowband1 = close - (close * volatility)
hb1 = wma(highband1,vm1,volatility)
lb1 = wma(lowband1,vm1,volatility)
hlavg = math.avg(hb1,lb1)
upcross = ta.crossover(high,hb1) //Crossing over the high band of historical volatility signifies a bullish breakout
dncross = ta.crossunder(low,lb1) //Crossing under the low band of historical volatility signifies a bearish breakout
vlong = upcross
vshort = dncross
vlong_exit = switch
exit_type == "Volatility MA" => ta.crossunder(cross_type,hlavg)
exit_type == "Range Crossover" => ta.crossunder(cross_type,hb1)
vshort_exit = switch
exit_type == "Volatility MA" => ta.crossover(cross_type,hlavg)
exit_type == "Range Crossover" => ta.crossover(cross_type,lb1)
if vlong
strategy.entry("Long",strategy.long)
if vlong_exit
strategy.close("Long")
if vshort
strategy.entry("Short",strategy.short)
if vshort_exit
strategy.close("Short")
plot(hlavg,color=color.white,title="Weighted Volatility Moving Average")
t = plot(hb1,color=color.new(color.red,50),title="Volatility Reversal Band - Top")
b = plot(lb1,color=color.new(color.green,50),title="Volatility Reversal Band - Bottom")
alertcondition(vlong,"Volatility Long Entry Signal")
alertcondition(vlong_exit,"Volatility Long Exit Signal")
alertcondition(vshort,"Volatility Short Entry Signal")
alertcondition(vshort_exit,"Volatility Short Exit Signal")
fill(t,b,color=color.new(color.aqua,90))