
Strategi ini menggunakan purata bergerak dan perbezaan piawai untuk membina model jumlah urus niaga, menilai arah trend dengan purata bergerak harga, dan menghantar isyarat perdagangan jika jumlah urus niaga normal. Strategi ini juga menetapkan had tinggi dan rendah untuk jumlah urus niaga, yang dapat mengelakkan isyarat yang salah jika jumlah urus niaga tidak normal.
Logik utama adalah untuk membina model jumlah transaksi dan trend harga.
Strategi ini menggabungkan model jumlah urus niaga dan trend harga untuk mengelakkan trend harga yang tidak normal dalam jumlah urus niaga, dan boleh menyaring beberapa isyarat palsu.
Penyelesaian risiko:
Strategi ini mempunyai pemikiran keseluruhan yang jelas, menggunakan jumlah dagangan untuk mengelakkan trend palsu, dan isyarat masuknya lebih dipercayai. Tetapi strategi itu sendiri lebih mudah, ruang untuk diperluaskan adalah besar, dengan menambah modul seperti indikator, pembelajaran mesin, dan hentikan kerugian, anda boleh mengoptimumkan lebih lanjut untuk meningkatkan kestabilan dan keupayaan untuk menangkap trend.
/*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")