バンドパスフィルタリングト​​レンド抽出戦略


作成日: 2024-01-03 15:22:49 最終変更日: 2024-01-03 15:22:49
コピー: 0 クリック数: 641
1
フォロー
1621
フォロワー

バンドパスフィルタリングト​​レンド抽出戦略

概要

帯波トレンド抽出策は,帯波器に基づく株式トレンド追跡策である.この策は,インデックス・ウェイトの移動平均と帯波を用いた価格序列処理を行い,価格内のトレンド成分を抽出し,特定のパラメータをポジションの成立とポジションの停止の信号として使用する.

戦略原則

この戦略は,まず,2倍指数加重移動平均を構築し,パラメータのLengthとDeltaを調節して移動平均の時間長さと滑り方を制御する.それから,数学変換のセットを使用して,価格の配列のトレンド成分を抽出し,xBandpassFilter変数に保存する.最後に,xBandpassFilterの簡易移動平均xMeanを計算し,ポジションとポジションの指標として構築する.

xMean上でパラメータTriggerが設定したレベルを穿越する際には多頭,次に穿越する際には空頭を行う.Triggerレベルを調節することで倉庫建設と倉庫の感度を制御することができる.

優位分析

  1. 双倍指数加重移動平均を使用すると,価格配列の部分的なノイズを効果的に除し,戦略をより安定させることができる.
  2. 経路フィルタは,価格序列のトレンド成分のみを抽出し,震動的な動きから誤導を回避し,戦略をより安定して信頼できるようにします.
  3. 戦略のパラメータが少なく,調整しやすく,リスクがコントロールできます.

リスク分析

  1. 戦略は時間的に遅れているので,価格の急速な反転の機会を逃す可能性があります.
  2. 二次指数加重移動平均と帯通フィルタは,低通波の効果があり,高周波信号をフィルタリングし,戦略の感度を下げます.
  3. パラメータが正しく設定されていない場合,過濾効果が強すぎ,より強いトレンドのチャンスを逃す可能性があります.

遅滞の改善は,Lengthパラメータを適切に縮小して,トリガーレベル制御戦略の感度調節を行うことができます.

最適化の方向

  1. 単一損失をコントロールするストップ・ロスの策略は考慮できる.
  2. 戦略の安定性を改善するには,短期と長期の双方向システムが必要である.
  3. 市場取引量などの他の指標と組み合わせて反転信号を判断し,波動的な状況に囚われないようにする.
  4. 機械学習や遺伝的アルゴリズムによる最適化パラメータを使用して,戦略をより安定して信頼性のあるものにすることができる.

要約する

この戦略は全体的に安定しており,強いトレンドの市場では良好なパフォーマンスをしている.より多くの市場環境で安定した収益性を維持するために,複数の方法でさらに最適化することができる.この戦略はさらなる研究と適用に値する.

ストラテジーソースコード
/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/12/2016
// The related article is copyrighted material from Stocks & Commodities Mar 2010
//
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Extracting The Trend Strategy Backtest")
Length = input(20, minval=1)
Delta = input(0.5)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
hline(Trigger, color=blue, linestyle=line)
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
pos = iff(xMean > Trigger, 1,
	   iff(xMean < Trigger, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xMean, color=red, title="ExTrend")