Strategi ini dipanggil
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
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.
Strategi perdagangan ini mempunyai kelebihan berikut:
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.
Strategi ini juga mempunyai beberapa risiko untuk diperhatikan:
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.
Strategi ini boleh dioptimumkan ke arah berikut:
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.
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")