Strategi Perdagangan Breakout Rentang Volatilitas Historis


Tanggal Pembuatan: 2023-09-21 20:38:29 Akhirnya memodifikasi: 2023-09-21 20:38:29
menyalin: 1 Jumlah klik: 677
1
fokus pada
1617
Pengikut

Ringkasan

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.

Prinsip Strategi

Indikator utama dari strategi ini adalah volatilitas historis harga.

  1. Perhitungan perbedaan antara harga tertinggi dan harga terendah dari N root Bar yang lalu, ditulis sebagai HL

  2. Menghitung rata-rata harga tertinggi dan terendah dari N akar Bar di masa lalu (avg ((H, L))

  3. 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”:

  1. Jika Exit Type adalah Volatility MA, harga akan kembali ke WMA dengan posisi rata-rata terjal.

  2. Ketika Exit Type adalah Range Crossover, harga kembali menembus leveling atas dan bawah.

Keunggulan Strategis

  • Menggunakan volatilitas harga untuk menangkap tren
  • Pengolahan linear WMA membuat interval lebih stabil dan andal
  • Masuk dengan terobosan mudah menangkap titik balik tren
  • Kembali ke garis rata-rata atau naik ke bawah rel dapat terhenti tepat waktu
  • Optimasi parameter yang luas, dapat disesuaikan untuk pasar yang berbeda

Risiko Strategis

  • Penembusan rentang rentan terhadap risiko rebound
  • Keuntungan yang lebih besar jika tren berbalik
  • WMA rata-rata kadang-kadang tidak cukup sensitif untuk mengidentifikasi perubahan tren
  • Optimasi terhadap parameter tidak mudah, membutuhkan banyak trial and error
  • Risiko penarikan lebih tinggi, perlu perhatian pada pengelolaan dana

Langkah-langkah berikut dapat mengurangi risiko:

  • Optimalkan parameter untuk membuat interval lebih stabil dan dapat diandalkan
  • Menambahkan penilaian indikator lain untuk menghindari kejatuhan
  • Menurunkan SIZE transaksi, fokus pada pengelolaan dana
  • Mempertimbangkan untuk bergabung dengan mekanisme penerimaan kembali

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimasi parameter

Dengan menguji berbagai parameter Length, menemukan kombinasi parameter terbaik.

  1. Menambahkan penilaian indikator lainnya

Misalnya, jika MACD juga melakukan penarikan emas pada saat harga menembus jalur, maka masukannya akan lebih banyak.

  1. Mengoptimalkan Stop Loss

Dapat dioptimalkan untuk tracking stop loss dengan elastisitas, bukan hanya untuk break-out stop loss.

  1. Menambahkan mekanisme penerimaan kembali

Setelah stop loss, jika tren berlanjut, Anda dapat mengatur kondisi masuk kembali dan melacak tren lagi.

  1. Mengoptimalkan manajemen posisi

Posisi perdagangan dapat disesuaikan secara dinamis dengan fluktuasi pasar.

Meringkaskan

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.

Kode Sumber Strategi
/*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))