
Strategi ini menggunakan volume transaksi bergerak dan standar deviasi untuk membangun model volume transaksi, yang dikombinasikan dengan harga moving average untuk menentukan arah tren, dan mengirimkan sinyal perdagangan jika volume transaksi normal. Strategi ini juga mengatur volume transaksi tinggi dan rendah, yang dapat menghindari sinyal yang salah jika volume transaksi tidak normal.
Logika inti adalah membangun model volume transaksi dan menilai tren harga.
Strategi ini menggabungkan model volume transaksi dan tren harga untuk menghindari pelacakan tren harga jika volume transaksi tidak normal dan dapat memfilter beberapa sinyal palsu.
Solusi untuk Mengatasi Risiko:
Strategi ini secara keseluruhan memiliki ide yang jelas, menggunakan volume perdagangan untuk menghindari pelacakan tren palsu, sinyal masuk yang lebih andal. Namun, strategi itu sendiri sederhana, dapat diperluas dengan banyak ruang, dan dapat dioptimalkan dengan menambahkan lebih banyak indikator, pembelajaran mesin, dan modul seperti stop loss, yang dapat meningkatkan stabilitas dan kemampuan untuk menangkap tren. Strategi ini adalah strategi pelacakan tren yang khas, dan setelah dioptimalkan 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")