Strategi Perdagangan VWAP Saluran Harga

Penulis:ChaoZhang, Tanggal: 2024-02-19 14:25:18
Tag:

img

Gambaran umum

Strategi ini disebut Price Channel VWAP Trading Strategy. Ini adalah strategi yang menerapkan perdagangan VWAP berdasarkan saluran harga. Ide utama dari strategi ini adalah: dalam saluran harga, gunakan garis rata-rata bergerak dari indikator VWAP dan garis saluran offset atas dan bawahnya untuk penilaian titik beli dan jual. Ketika garis saluran rusak, buka posisi sesuai dengan persentase tetap dari total aset, dan tutup posisi ketika harga regresi ke garis rata-rata bergerak VWAP.

Prinsip Strategi

Strategi ini menghitung harga transaksi rata-rata saat ini melalui indikator VWAP. VWAP mewakili harga rata-rata dan merupakan rasio omset terhadap volume perdagangan. Indikator VWAP mencerminkan tingkat penyimpangan antara harga saat ini dan harga perdagangan rata-rata historis.

Strategi ini menggunakan garis rata-rata bergerak dari indikator VWAP dan garis saluran offsetnya. Proporsi garis saluran offset ditetapkan melalui parameter longlevel1 dan shortlevel1. Ketika harga menembus garis saluran offset atas, buka posisi panjang sesuai dengan persentase posisi yang ditetapkan oleh parameter lotsizelong; ketika harga menembus garis saluran offset bawah, buka posisi pendek sesuai dengan persentase posisi yang ditetapkan oleh parameter lotsizeshort. Setelah membuka posisi, pilih untuk menutup posisi ketika harga regresi di sekitar garis rata-rata bergerak VWAP.

Pengaturan parameter dari strategi ini sepenuhnya mencerminkan gagasan perdagangan saluran. Pengguna dapat menyesuaikan lebar saluran dan ukuran posisi sebagai persentase dari total aset sesuai dengan preferensi mereka sendiri, sehingga mewujudkan berbagai tingkat frekuensi perdagangan.

Analisis Keuntungan

Strategi perdagangan ini memiliki keuntungan berikut:

  1. Menggunakan indikator VWAP untuk menentukan titik tengah nilai dapat menangkap arah pasar arus utama
  2. Perdagangan dalam rentang saluran menghindari gangguan kebisingan untuk operasi yang lebih jelas
  3. Menggabungkan saluran dari tingkat yang berbeda, menyebarkan dalam batch mengurangi risiko
  4. Mengambil keuntungan tepat waktu dengan regresi menghindari kerugian yang disebabkan oleh pembalikan yang cepat

Karena indikator VWAP dapat mencerminkan tingkat harga rata-rata, perdagangan berdasarkan garis kanalnya dapat secara efektif mengunci titik tengah nilai dan menghindari bias oleh fluktuasi jangka pendek. Pada saat yang sama, menggabungkan saluran dengan parameter yang berbeda dan membangun posisi dalam batch dapat secara efektif mengendalikan risiko dan mencegah konsentrasi risiko sepihak yang mengakibatkan likuidasi paksa.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko yang perlu dicatat:

  1. Indikator VWAP tidak sensitif terhadap perdagangan frekuensi tinggi dan tidak dapat mencerminkan anomali harga ekstrem
  2. Pengaturan parameter lebar saluran yang tidak benar dapat menyebabkan perdagangan yang terlalu agresif
  3. Jika rentang operasi regresi untuk menutup posisi terlalu luas, itu dapat menyebabkan kerugian terjebak

Indikator VWAP tidak sensitif terhadap volatilitas perdagangan frekuensi tinggi. Dalam kasus kesenjangan harga ekstrim atau anomali jangka pendek, indikator ini masih akan memicu sinyal dan kerugian perdagangan yang tidak perlu. Selain itu, jika parameter saluran diatur terlalu longgar, indikator ini akan dengan mudah membentuk sinyal penetrasi harga yang tidak valid. Akhirnya, jika rentang posisi yang ditutup dalam operasi regresi diatur terlalu luas, indikator ini dapat melewatkan waktu terbaik untuk mengambil keuntungan dan menyebabkan kerugian terperangkap.

Tindakan penanggulangan adalah untuk menilai pengaturan parameter secara wajar dan menyesuaikan parameter saluran dengan tepat; sambil menggabungkan indikator lain untuk menilai anomali harga dan menghindari mengikuti sinyal secara membabi buta; akhirnya mengevaluasi optimasi parameter saluran dari tingkat yang berbeda dan rentang regresi untuk mencapai efek mengambil keuntungan yang lebih baik.

Arahan Optimasi

Strategi ini dapat dioptimalkan dalam arah berikut:

  1. Meningkatkan tingkat saluran dan mengoptimalkan kombinasi parameter
  2. Menggabungkan indikator volume perdagangan untuk menentukan validitas terobosan
  3. Tambahkan strategi stop loss dan atur stop loss berdasarkan rasio penarikan

Selain itu, aturan penilaian volume perdagangan dapat ditambahkan untuk menghindari kesenjangan harga yang tidak valid yang menyebabkan kerugian perdagangan. Akhirnya, aturan stop loss juga dapat ditetapkan sehingga ketika kerugian posisi mencapai persentase tertentu, stop loss untuk posisi keluar, secara efektif mengendalikan risiko.

Ringkasan

Strategi ini menggabungkan indikator VWAP dengan saluran harga untuk mencapai strategi perdagangan yang relatif stabil. Pengaturan parameter strategi fleksibel bagi pengguna untuk menyesuaikan sesuai dengan preferensi mereka sendiri. Strategi ini dapat secara efektif menentukan arah titik tengah nilai. Melalui kombinasi parameter dan pembentukan batch posisi, profitabilitas yang stabil dapat dicapai. Meskipun masih ada ruang untuk perbaikan dalam strategi, secara keseluruhan ini adalah strategi perdagangan kuantitatif dengan kepraktisan yang tinggi.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %")
lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
shortlevel1 = input(1.0, title = "Short line 1")
longlevel1 = input(-1.0, title = "Long line 1")
needoffset = input(true, title = "Offset")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
truetime = true

//VWAP
ma = vwap(hlc3)

//Levels
longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close


//Lines
colorlong1 = long1 ? color.lime : na
colorshort1 = short1 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")


//Trading
lotlong = 0.0
lotshort = 0.0
lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1]
lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1]


if ma > 0
    if lotlong > 0
        lotslong = 0.0
        lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0
        strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime))
    if lotshort > 0
        lotsshort = 0.0
        lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0
        strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime))
if strategy.position_size > 0
    strategy.exit("TPL", "L1", limit = ma)
if strategy.position_size < 0
    strategy.exit("TPS", "S1", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("S1")
    strategy.cancel("TPL")
    strategy.cancel("TPS")

Lebih banyak