Strategi Trading Breakout dari Range Volatilitas

Penulis:ChaoZhang, Tanggal: 2023-09-21 20:38:29
Tag:

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan rentang volatilitas historis harga. Ini menghitung perbedaan antara harga tertinggi dan terendah selama periode tertentu, dan membentuk rentang volatilitas menggunakan rata-rata bergerak. Sinyal perdagangan dipicu ketika harga menembus pita atas atau bawah rentang.

Logika Strategi

Indikator inti adalah volatilitas historis harga.

  1. Menghitung perbedaan antara harga tertinggi dan terendah selama N bar terakhir, disebut HL

  2. Menghitung rata-rata harga tertinggi dan terendah di N bar, avg ((H, L)

  3. Volatilitas = HL/avg ((H, L)

Di mana N adalah parameter Length Volatility.

Setelah mendapatkan volatilitas, band dihitung sebagai:

Band atas = Penutupan saat ini + Penutupan saat ini * Volatilitas

Band bawah = Penutupan saat ini - Penutupan saat ini * Volatilitas

Pita kemudian dihaluskan oleh WMA dengan periode yang ditetapkan sebagai Average Length.

Ketika harga menembus band atas, pergi panjang. Ketika harga menembus band bawah, pergi pendek.

Sinyal keluar didefinisikan oleh Tipe Keluar:

  1. Jika Tipe Keluar adalah Volatility MA, keluar saat harga melintasi kembali di bawah WMA.

  2. Jika Jenis Keluar adalah Range Crossover, keluar saat harga melintasi kembali di bawah band.

Keuntungan

  • Volatilitas menangkap tren bergerak dengan baik
  • WMA membuat band lebih stabil dan dapat diandalkan
  • sinyal Breakout menangkap tren berubah tepat waktu
  • Keluar berdasarkan WMA/band mengurangi kerugian dengan cepat
  • Banyak ruang untuk pengaturan parameter untuk pasar yang berbeda

Risiko

  • Breakouts mungkin whipsaw dengan harga pembalikan
  • Risiko kerugian besar pada pembalikan tren
  • WMA kadang-kadang terlambat mendeteksi perubahan tren
  • Optimasi parameter tidak mudah, membutuhkan banyak trial and error
  • Penarikan yang lebih besar, membutuhkan manajemen risiko yang baik

Risiko dapat dikurangi dengan:

  • Mengoptimalkan parameter untuk band yang lebih andal
  • Menambahkan indikator lain untuk menghindari masalah
  • Ukuran yang lebih kecil dan manajemen risiko yang lebih baik
  • Mempertimbangkan masuk kembali

Arahan Optimasi

Strategi dapat ditingkatkan dengan:

  1. Pengaturan parameter

Uji nilai panjang yang berbeda untuk menemukan kombinasi yang optimal.

  1. Menambahkan indikator lain

Misalnya, ketika harga menembus band atas, periksa apakah MACD juga melintasi emas.

  1. Lebih baik stop loss

Mengoptimalkan untuk berhenti di belakang alih-alih berhenti putus rentang sederhana.

  1. Masuk kembali

Tetapkan aturan masuk kembali untuk menangkap tren lagi setelah berhenti.

  1. Ukuran Posisi

Sesuaikan ukuran secara dinamis berdasarkan volatilitas pasar.

Ringkasan

Strategi ini bekerja dengan baik untuk pasar tren secara umum dengan menggunakan band berbasis volatilitas untuk mengukur kekuatan tren dan WMA untuk membentuk rentang perdagangan yang dapat diandalkan untuk sinyal breakout. Namun ada beberapa masalah seperti deteksi tren tertinggal, berhenti yang dapat ditingkatkan, dll. Pengujian dan optimalisasi yang ekstensif diperlukan menggunakan data nyata untuk menyesuaikan parameter dan aturan, mengurangi sinyal palsu dan membuatnya kuat di berbagai kondisi pasar. Juga manajemen risiko yang ketat adalah kunci untuk profitabilitas jangka panjang.


/*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))

Lebih banyak