この戦略は,取引量の移動平均値と標準偏差値を用いて取引量モデルを構築し,取引量が正常なときに取引信号を生成するために価格の移動平均値でトレンド方向を決定する.また,取引量が異常なときに間違った信号を避けるために取引量の上限と下限を設定する.
基本論理は 取引量モデルを構築し 価格動向を判断することです
この戦略は,取引量モデルと価格傾向を組み合わせて,取引量が異常なときに価格傾向を追いかけるのを避けるため,いくつかの誤った信号をフィルタリングすることができます.
解決策:
この戦略の全体的な論理は明確で,誤ったトレンドを追いかけるのを避けるためにボリュームを使用し,エントリーシグナルは比較的信頼性があります.しかし,戦略自体は拡張のための広い余地でシンプルです.より多くの指標,機械学習,ストップ損失および他のモジュールを追加することで,安定性とトレンドを捕捉する能力をさらに向上させることができます.これは典型的なトレンドを追いかける戦略です.最適化後,非常に実践的な定量戦略になることができます.
/*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")