バンドパスフィルター逆転戦略 (Bandpass Filter Reversed Strategy) は,バンドパスフィルターに基づいた株式取引戦略である.バンドパスフィルターをシミュレートするためにコスとシナスの関数を構築し,買い売り信号を生成する.フィルターの出力が特定のトリガーレベルを超えたり下りたとき,戦略は逆転操作,すなわち購入または販売を行う.
この戦略の核は,帯域パスのフィルターBPを構築することである.このフィルターは,中心周波数と帯域幅という2つのパラメータで構成される.センター周波数はフィルタが通過するメインサイクルを決定し,帯域幅は通過サイクルの範囲を決定する.これらのパラメータはフィルターの転送特性を決定する.
具体的には,戦略は次の変数を構築します.
これらの変数に従って,戦略は第一順位IIR (無限衝動応答) フィルターを構築します.
BP = 0.5*(1 - アルファ) *(xPrice - xPrice[2]) +β*(1 +アルファ) *nz(BP[1]) -alpha*nz(BP[2])
BPがTriggerLevelを超えたり 下げたりすると 戦略は逆方向に 行動します
この戦略の主な利点は以下の通りです.
この戦略にはいくつかのリスクもあります:
これらのリスクを軽減するために,次の最適化方法を検討できます.
この戦略を最適化できる主な側面は以下の通りです.
サイクルとパラメータの自己適応: サイクルの違いや最近の価格動向に合わせて長さやデルタなどのパラメータを動的に調整し,フィルターはリアルタイムで市場環境の変化に適応します.
トレンド判断を組み合わせる: バンドパスフィルターに基づいて,MACDやMAなどの技術指標が追加され,トレンド方向を決定し,トレンドに反するポジションを開設しない.
複数のタイムフレームの組み合わせ: 複数のタイムフレーム (例えば5分,15分,30分など) に戦略を展開する. 信号の正確性を向上させるために,異なるタイムフレーム間の信号検証を実行する.
ストップ・ロスのメカニズム: 合理的なストップ・ロスのポジションを設定する. 損失がストップ・ロスのビットに達すると,単一の損失の大きさを効果的に制御するためにポジションを閉鎖するイニシアチブを取る.
上記の最適化により,戦略の安定性,適応性,収益性が大幅に向上できます.
バンドパスフィルター逆転戦略は,バンドパスフィルターを構築することで有用な中周波信号を抽出し,フィルタ出力がレベルをトリガーすると,短期的な価格逆転機会を把握するために逆転操作を行う.戦略は比較的シンプルである.パラメータ最適化によって,さまざまな市場環境に適応することができる.主な最適化方向には,適応フィルター,トレンド判断,マルチタイムフレーム組み合わせ,ストップ損失メカニズムなどが含まれます.
/*backtest start: 2024-01-16 00:00:00 end: 2024-01-23 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 24/11/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... // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="Bandpass Filter Reversed Strategy") Length = input(20, minval=1) Delta = input(0.5) TriggerLevel = input(0) xPrice = hl2 hline(TriggerLevel, color=blue, linestyle=line) beta = cos(3.14 * (360 / Length) / 180) gamma = 1 / cos(3.14 * (720 * Delta / Length) / 180) alpha = gamma - sqrt(gamma * gamma - 1) BP = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2]) pos = iff(BP > TriggerLevel, -1, iff(BP <= TriggerLevel, 1, nz(pos[1], 0))) if (pos == 1) strategy.entry("Long", strategy.long) if (pos == -1) strategy.entry("Short", strategy.short) barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(BP, color=red, title="Bandpass Filter Strategy")