Strategi perdagangan berdasarkan standar deviasi volume perdagangan

Penulis:ChaoZhang, Tanggal: 2023-11-21 11:11:51
Tag:

img

Gambaran umum

Strategi ini membangun model volume perdagangan menggunakan rata-rata bergerak dan standar deviasi volume perdagangan, dan menentukan arah tren dengan rata-rata bergerak harga untuk menghasilkan sinyal perdagangan ketika volume normal.

Logika Strategi

Logika inti adalah membangun model volume perdagangan dan menilai tren harga.

  1. Membangun model volume perdagangan
    • Menghitung rata-rata bergerak 40 periode volume vavg sebagai garis dasar
    • Menghitung penyimpangan standar 40 periode volume vsd sebagai rentang fluktuasi normal
    • Menghitung rata-rata bergerak 5 periode volume vavgn sebagai tingkat volume terbaru
    • Atur batas bawah volume lowlimit sebagai vavg dikurangi 1 kali vsd
    • Atur batas atas volume uplimit sebagai vavg ditambah 2 kali vsd
  2. Tren harga hakim
    • Menghitung rata-rata bergerak 20 periode dari harga tutup mavg sebagai indikator tren harga
  3. Menghasilkan sinyal perdagangan
    • Ketika mavg melintasi di atas hari sebelumnya dan vavgn di atas batas rendah, pergi panjang
    • Ketika mavg melintasi di bawah hari sebelumnya dan vavgn di atas batas rendah, pergi pendek
    • Posisi ditutup saat tren mavg berbalik

Strategi ini menggabungkan model volume perdagangan dan tren harga untuk menghindari mengejar tren harga ketika volume tidak normal, yang dapat menyaring beberapa sinyal palsu.

Analisis Keuntungan

  1. Menggabungkan perubahan volume untuk menilai tren harga dapat menyaring beberapa sinyal palsu dan membuat sinyal perdagangan lebih andal
  2. Membangun model volume perdagangan menggunakan standar deviasi menghindari dampak volume yang ekstrim
  3. Parameter rata-rata bergerak yang dapat disesuaikan dapat beradaptasi dengan perubahan harga dalam siklus yang berbeda

Analisis Risiko

  1. Volume dan harga dapat berbeda dalam jangka pendek, menyebabkan hilangnya tren harga
  2. Pengaturan parameter volume yang tidak benar dapat menyebabkan kegagalan model
  3. Tidak ada stop loss dalam strategi dapat menyebabkan kerugian besar

Solusi:

  1. Sesuaikan parameter rata-rata bergerak dengan benar untuk mengoptimalkan model
  2. Tambahkan logika stop loss untuk mengontrol single loss

Arahan Optimasi

  1. Tambahkan lebih banyak indikator untuk menilai tren harga untuk membuat sinyal lebih dapat diandalkan
  2. Meningkatkan modul pembelajaran mesin untuk melatih parameter model volume dan harga berdasarkan data
  3. Tambahkan logika stop loss untuk mencegah kerugian tunggal yang berlebihan
  4. Mengoptimalkan logika masuk untuk memastikan kemungkinan yang lebih tinggi menangkap tren
  5. Gabungkan indikator seperti ATR untuk menyesuaikan jarak stop loss secara otomatis

Ringkasan

Logika keseluruhan strategi ini jelas, menggunakan volume untuk menghindari mengejar tren palsu dan sinyal masuk relatif dapat diandalkan. Tetapi strategi itu sendiri sederhana dengan ruang yang luas untuk perluasan. Dengan menambahkan lebih banyak indikator, pembelajaran mesin, stop loss dan modul lainnya, ini dapat lebih meningkatkan stabilitas dan kemampuan untuk menangkap tren. Ini adalah strategi mengejar tren yang khas. Setelah optimasi, ini dapat menjadi strategi kuantitatif yang sangat praktis.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © dongyun

//@version=4
strategy("交易量底部标准差系统", overlay=true)

options = input(1,'')
length = input(40,'')
nlow = input(5,'')
factor = input(1.0,'')

vavg = 0.0
vavgn = 0.0
vsd = 0.0
lowlimit = 0.0
uplimit = 0.0
mavg = 0.0
aror = 0.0
adjvol = 0.0
savevol = 0.0


//Find average volume, replacing bad values
adjvol := volume

if (volume != 0)
	savevol := volume
else
	savevol := savevol[1]
	adjvol := savevol


// Replace high volume days because they distort standard deviation
if (adjvol > 2 * factor * nz(vsd[1]))
	adjvol := savevol
else
	adjvol := adjvol[1]

vavg := sma(adjvol,length)
vsd := stdev(adjvol,length)
vavgn := sma(adjvol,nlow)

// Extreme volume limits
lowlimit := vavg - factor * vsd
uplimit := vavg + 2 * factor * vsd

// System rules based on moving average trend
mavg := sma(close,length/2)

// Only enter on new trend signals
if (options == 2)
	if (mavg > mavg[1] and mavg[1] <= mavg[2])
		strategy.entry("Long", strategy.long)
	if (mavg<mavg[1] and mavg[1]>=mavg[2])
		strategy.entry("Short", strategy.short)
else
	if (mavg > mavg[1] and vavgn > lowlimit)
		strategy.entry("Long", strategy.long)
	if (mavg < mavg[1] and vavgn > lowlimit)
		strategy.entry("Short", strategy.short)

// Exit on low volume
if (options != 1)
	if (mavg<mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Long")
	if (mavg>mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
		strategy.close("Short")
else
	if (mavg < mavg[1])
		strategy.close("Long")
	if (mavg > mavg[1])
		strategy.close("Short")

Lebih banyak