Strategi Dagangan Berdasarkan Penyimpangan Standar Volume Dagangan

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

img

Ringkasan

Strategi ini membina model jumlah dagangan menggunakan purata bergerak dan penyimpangan standard jumlah dagangan, dan menentukan arah trend dengan purata bergerak harga untuk menjana isyarat dagangan apabila jumlahnya normal.

Logika Strategi

Logik teras adalah untuk membina model jumlah dagangan dan menilai trend harga.

  1. Membina model jumlah dagangan
    • Mengira purata bergerak 40 tempoh volum vavg sebagai garis asas
    • Mengira penyimpangan standard 40 tempoh volum vsd sebagai julat fluktuasi normal
    • Mengira purata bergerak 5 tempoh volum vavgn sebagai tahap volum terkini
    • Tetapkan had bawah had rendah jumlah sebagai vavg tolak 1 kali vsd
    • Tetapkan had atas uplimit jumlah sebagai vavg ditambah 2 kali vsd
  2. Trend harga hakim
    • Mengira purata bergerak 20 tempoh harga penutupan mavg sebagai penunjuk trend harga
  3. Menghasilkan isyarat perdagangan
    • Apabila mavg melintasi di atas hari sebelumnya dan vavgn di atas batas rendah, pergi panjang
    • Apabila mavg melintasi di bawah hari sebelumnya dan vavgn adalah di atas had rendah, pergi pendek
    • Posisi ditutup apabila trend mavg berbalik

Strategi ini menggabungkan model jumlah dagangan dan trend harga untuk mengelakkan mengejar trend harga apabila jumlahnya tidak normal, yang boleh menapis beberapa isyarat palsu.

Analisis Kelebihan

  1. Menggabungkan perubahan jumlah untuk menilai trend harga boleh menapis beberapa isyarat palsu dan membuat isyarat perdagangan lebih boleh dipercayai
  2. Membina model jumlah dagangan menggunakan penyimpangan standard mengelakkan kesan jumlah yang melampau
  3. Parameter purata bergerak yang boleh diselaraskan dengan perubahan harga dalam kitaran yang berbeza

Analisis Risiko

  1. Jumlah dan harga boleh berlainan dalam jangka pendek, yang membawa kepada trend harga yang hilang
  2. Tetapan parameter volume yang tidak betul boleh menyebabkan kegagalan model
  3. Tiada stop loss dalam strategi boleh membawa kepada kerugian besar

Penyelesaian:

  1. Sesuaikan parameter purata bergerak dengan betul untuk mengoptimumkan model
  2. Tambah logik stop loss untuk mengawal kerugian tunggal

Arahan pengoptimuman

  1. Tambah lebih banyak penunjuk untuk menilai trend harga untuk membuat isyarat lebih boleh dipercayai
  2. Meningkatkan modul pembelajaran mesin untuk melatih parameter model jumlah dan harga berdasarkan data
  3. Tambah logik stop loss untuk mengelakkan kerugian tunggal yang berlebihan
  4. Mengoptimumkan logik kemasukan untuk memastikan kebarangkalian yang lebih tinggi untuk menangkap trend
  5. Gabungkan penunjuk seperti ATR untuk menyesuaikan jarak stop loss secara automatik

Ringkasan

Logik keseluruhan strategi ini jelas, menggunakan jumlah untuk mengelakkan mengejar trend palsu dan isyarat kemasukan agak boleh dipercayai. Tetapi strategi itu sendiri adalah mudah dengan ruang yang besar untuk pengembangan. Dengan menambah lebih banyak penunjuk, pembelajaran mesin, stop loss dan modul lain, ia dapat meningkatkan kestabilan dan keupayaan untuk menangkap trend. Ini adalah strategi mengejar trend yang biasa. Selepas pengoptimuman, ia boleh menjadi strategi kuantitatif yang sangat praktikal.


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