Strategi Dagangan VWAP Saluran Harga

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

img

Ringkasan

Strategi ini dipanggil Price Channel VWAP Trading Strategy. Ia adalah strategi yang melaksanakan perdagangan VWAP berdasarkan saluran harga. Idea utama strategi ini adalah: dalam saluran harga, gunakan garis purata bergerak penunjuk VWAP dan garis saluran offset atas dan bawahnya untuk penilaian titik beli dan jual. Apabila garis saluran pecah, buka kedudukan mengikut peratusan tetap daripada jumlah aset, dan tutup kedudukan apabila harga kembali ke garis purata bergerak VWAP.

Prinsip Strategi

Strategi ini mengira harga urus niaga purata semasa melalui penunjuk VWAP. VWAP mewakili harga purata dan merupakan nisbah perolehan kepada jumlah dagangan. Penunjuk VWAP mencerminkan tahap penyimpangan antara harga semasa dan harga dagangan purata sejarah.

Strategi ini menggunakan garis purata bergerak penunjuk VWAP dan garis saluran offsetnya. Perkadaran garis saluran offset ditetapkan melalui parameter longlevel1 dan shortlevel1. Apabila harga memecahkan garis saluran offset atas, buka kedudukan panjang mengikut peratusan kedudukan yang ditetapkan oleh parameter lotsizelong; apabila harga memecahkan garis saluran offset bawah, buka kedudukan pendek mengikut peratusan kedudukan yang ditetapkan oleh parameter lotsizeshort. Selepas membuka kedudukan, pilih untuk menutup kedudukan apabila harga regresi ke sekitar garis purata bergerak VWAP.

Tetapan parameter strategi ini sepenuhnya mencerminkan idea perdagangan saluran. Pengguna boleh menyesuaikan lebar saluran dan saiz kedudukan sebagai peratusan daripada jumlah aset mengikut pilihan mereka sendiri, dengan itu merealisasikan tahap kekerapan perdagangan yang berbeza.

Analisis Kelebihan

Strategi perdagangan ini mempunyai kelebihan berikut:

  1. Menggunakan penunjuk VWAP untuk menentukan titik pertengahan nilai boleh menangkap arah pasaran arus perdana
  2. Perdagangan dalam julat saluran mengelakkan gangguan bunyi untuk operasi yang lebih jelas
  3. Menggabungkan saluran dari tahap yang berbeza, menggunakan dalam kumpulan mengurangkan risiko
  4. Mengambil keuntungan tepat pada masanya dengan regresi mengelakkan kerugian yang disebabkan oleh pembalikan cepat

Oleh kerana penunjuk VWAP dapat mencerminkan tahap harga purata, perdagangan berdasarkan garis salurannya dapat mengunci titik tengah nilai dengan berkesan dan mengelakkan bias oleh turun naik jangka pendek. Pada masa yang sama, menggabungkan saluran dengan parameter yang berbeza dan membina kedudukan dalam kumpulan dapat mengawal risiko dengan berkesan dan mencegah kepekatan risiko satu hala yang mengakibatkan pembubaran paksa. Akhirnya, dengan mengambil keuntungan tepat pada masanya untuk menutup kedudukan berhampiran regresi garis purata bergerak VWAP dapat mengurangkan kerugian yang disebabkan oleh pembalikan harga.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko untuk diperhatikan:

  1. Penunjuk VWAP tidak sensitif terhadap perdagangan frekuensi tinggi dan tidak dapat mencerminkan anomali harga yang melampau
  2. Tetapan parameter lebar saluran yang tidak betul boleh membawa kepada perdagangan yang terlalu agresif
  3. Jika julat operasi regresi untuk menutup kedudukan terlalu luas, ia boleh menyebabkan kerugian terperangkap

Indikator VWAP tidak sensitif terhadap turun naik perdagangan frekuensi tinggi. Dalam kes jurang harga yang melampau atau anomali jangka pendek, ia masih akan mencetuskan isyarat perdagangan dan kerugian yang tidak perlu. Di samping itu, jika parameter saluran ditetapkan terlalu longgar, ia dengan mudah akan membentuk isyarat penembusan harga yang tidak sah. Akhirnya, jika julat kedudukan yang ditutup dalam operasi regresi ditetapkan terlalu luas, ia mungkin terlepas masa terbaik untuk mengambil keuntungan dan menyebabkan kerugian terperangkap.

Tindakan balas adalah untuk menilai tetapan parameter dengan munasabah dan menyesuaikan parameter saluran dengan sewajarnya; sambil menggabungkan penunjuk lain untuk menilai anomali harga dan mengelakkan isyarat buta; akhirnya menilai pengoptimuman parameter saluran dengan tahap dan julat regresi yang berbeza untuk mencapai kesan keuntungan yang lebih baik.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan ke arah berikut:

  1. Meningkatkan tahap saluran dan mengoptimumkan kombinasi parameter
  2. Menggabungkan penunjuk jumlah dagangan untuk menentukan kesahihan terobosan
  3. Tambah strategi stop loss dan tetapkan stop loss mengikut nisbah drawdown

Lebih banyak tahap garis saluran boleh ditambahkan dan parameter digabungkan untuk pengoptimuman untuk mencapai kesan perdagangan yang lebih stabil. Di samping itu, peraturan penghakiman jumlah dagangan boleh ditambahkan untuk mengelakkan jurang harga yang tidak sah menyebabkan kerugian perdagangan. Akhirnya, peraturan stop loss juga boleh ditetapkan supaya apabila kerugian kedudukan mencapai peratusan tertentu, stop loss untuk keluar dari kedudukan, dengan berkesan mengawal risiko.

Ringkasan

Strategi ini menggabungkan penunjuk VWAP dengan saluran harga untuk mencapai strategi perdagangan yang agak stabil. Tetapan parameter strategi fleksibel untuk pengguna menyesuaikan mengikut pilihan mereka sendiri. Strategi ini dapat menentukan arah titik pertengahan nilai dengan berkesan. Melalui kombinasi parameter dan pembinaan kumpulan kedudukan, keuntungan yang stabil dapat dicapai. Walaupun masih ada ruang untuk peningkatan dalam strategi, secara keseluruhan ia 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 lanjut