
この戦略は,取引量の移動平均と標準差を利用して取引量モデルを構築し,価格の移動平均と組み合わせてトレンドの方向を判断し,取引量が正常な場合に取引信号を発信する.この戦略は,取引量の高低限界を設定し,取引量が異常な場合に誤った信号を発信することを避ける.
取引量モデルと価格トレンドの判断を 構築する中心的な論理である.
この戦略は,取引量モデルと価格トレンドを組み合わせて,取引量が異常な場合の価格トレンドを追跡することを避け,いくつかの偽信号をフィルターすることができます.
リスク対策:
この戦略の全体的な考え方は明確で,取引量を利用して偽トレンドを追跡することを避ける,入場シグナルは比較的に信頼できる.しかし,戦略自体は単純で,拡張可能なスペースは大きい.より多くの指標,機械学習,ストップスなどのモジュールを追加することによって最適化することで,安定性とトレンドを捕捉する能力をさらに向上させることができる.この戦略は典型的なトレンド追跡戦略であり,最適化すると非常に実用的な量化戦略になることができる.
/*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")