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

作者: リン・ハーンチャオチャン,日付: 2024-01-03 15:22:49
タグ:

img

概要

バンドパスフィルタリングトレンド抽出戦略 (Bandpass Filtering Trend Extraction Strategy) は,バンドパスフィルタをベースにした株のトレンド追跡戦略である.これは指数的な重度の移動平均値とバンドパスフィルタリングを使用して価格シリーズを処理し,エントリーと出口の信号として価格のトレンドコンポーネントを抽出する.

原則

この戦略は,まず移動平均の長さとスムーズさを制御するために長さとデルタパラメータを調整することによって,二重指数移動平均を構成する.その後,数学的変換のセットを使用して,価格シリーズからトレンドコンポーネントを抽出し,xBandpassFilter変数に保存する.最後に,エントリーと出口の指標としてxBandpassFilterの単純な移動平均,xMeanを計算する.

xMeanがTriggerレベルを超えると長くなって,Triggerレベルを下回ると短くなってしまいます.Triggerレベルを調節することで入力と出口の感度が制御できます.

利点

  1. ダブルEMAは,より安定した戦略のための価格のノイズを効果的にフィルターします.
  2. バンドパスのフィルタリングは,価格のトレンドコンポーネントを抽出し,ウィップソーを避けます.
  3. パラメータが少ないことで 最適化やリスク管理が容易になります

リスク

  1. 時間の遅れは 迅速な逆転から逃した機会を 引き起こします
  2. ダブルEMAと帯域通過フィルタリングは低通過効果があり,感度を低下させる.
  3. 過剰なフィルタリングは,パラメータが調節されていない場合,強いトレンドが欠落する可能性があります.

短縮した長さは遅延問題を改善します 調節トリガーは感度を制御します

改良

  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")

もっと