
帯通フィルター反転戦略は,帯通フィルターに基づいた株式取引戦略である. cos と正弦関数を構築することで,帯通フィルターをシミュレートし,買入と売却のシグナルを生成する. フィルターの出力は,あるトリガーレベル以上または以下であるときに,この戦略は逆操作,つまり買入または売却を行う.
この戦略の核心は,2つのパラメータで構成される帯域フィルターBPを構築することです. センター周波数と帯域. センター周波数はフィルターを通過する主要な周期を決定し,帯域は通過する周期範囲を決定します. これらのパラメータはフィルターの伝送特性を決定します.
具体的には,この戦略は以下の変数で構成されています.
これらの変数に基づいて,策略は1次IIR (無限パルス応答) フィルターを構成する.
BP = 0.5(1 - alpha)(xPrice - xPrice[2]) + beta*(1 + alpha)*nz(BP[1]) - alpha*nz(BP[2])
BPがTriggerLevelより高いか低い場合,この戦略は逆方向に動作する.
この戦略の主な利点は
この戦略にはいくつかのリスクがあります.
これらのリスクを低減するために,以下のような最適化方法が考えられます.
この戦略は,以下のような点で最適化できます.
周期およびパラメータ自律:異なる周期および最近の一時間ウィンドウの価格動向に応じて,リアルタイムでLength,Deltaなどのパラメータを調整し,フィルターの動態を市場環境の変化に適応させる.
トレンド判断:通行フィルターに基づいて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")