ダブルトラック追跡反転戦略
概要
ダブルトラック・リバーサル戦略は、ボリンジャーバンド、ケルトナーチャンネル、およびモメンタム指標を組み合わせた逆張り取引戦略です。本戦略は、ボリンジャーバンドとケルトナーチャンネルの複合判断により、価格が圧縮領域に入るタイミングを識別し、同時にモメンタム指標を用いて価格の反転シグナルを判断し、取引のエントリーおよびエグジットシグナルを生成します。
戦略の原理
-
ボリンジャーバンドの中央線、上限線、下限線を計算します。
- 中央線には終値のSMAを使用します。
- 上限線と下限線は、中央線に調整可能な倍率の標準偏差を加減したものです。
-
ケルトナーチャンネルの中央線、上限線、下限線を計算します。
- 中央線には終値のSMAを使用します。
- 上限線と下限線は、中央線に調整可能な倍率のATRを加減したものです。
-
ボリンジャーバンドがケルトナーチャンネルの内側にあるかどうかを判断します。
- ボリンジャーバンドの上限線がケルトナーチャンネルの上限線より低く、ボリンジャーバンドの下限線がケルトナーチャンネルの下限線より高い場合、圧縮状態とみなします。
- それ以外の場合は、非圧縮状態です。
-
終値とボリンジャーバンド、ケルトナーチャンネルの中心に対する線形回帰の傾きvalを計算します。
- val > 0 は終値が上昇傾向、val < 0 は終値が下降傾向を示します。
-
終値の変化率ROCとそのEMAを計算します。
- 変化率が調整可能なしきい値に達したかどうかを判断します。
- しきい値を超えた場合、トレンドが発生しているとみなします。
-
圧縮状態において、val > 0 かつ変化率がしきい値に達した場合に買いエントリーします。
- それ以外(val < 0 かつ変化率がしきい値に達した場合)は売りエントリーします。
-
ストップロスと利食い条件を設定します。
戦略の優位性
-
ダブルトラックシステムを組み合わせて反転タイミングを判断し、精度を向上させます。
-
線形回帰と変化率の判断を追加し、反転の偽シグナルを回避します。
-
調整可能なパラメータ設定により、さまざまな銘柄に最適化できます。
-
ストップロス・利食い戦略を採用することで、1回の取引リスクを効果的に管理できます。
-
十分なバックテストデータにより、戦略の有効性を検証できます。
戦略のリスクと解決策
-
ダブルトラックの圧縮が必ずしも有効な反転を生むとは限らない。
- パラメータを最適化し、圧縮条件を厳格化する。
-
偽のブレイクアウトにより誤ったシグナルが発生する。
- 線形回帰判定を追加し、トレンド方向を確定する。
-
ストップロス設定が緩すぎると、1回の損失が過大になる。
- ストップロスを最適化し、1回の損失を厳格に制御する。
-
テスト期間が不足している可能性。
- バックテスト期間を増やし、長期的な有効性を検証する。
戦略の最適化方向
-
パラメータ設定を最適化し、より多くの銘柄に対応させる。
-
機械学習を導入し、サポート・レジスタンスの重要ポイントを判断する。
-
出来高の変化を組み合わせ、ブレイクアウトの信頼性を高める。
-
異なる時間枠の分析を追加し、トレンドの継続性を判断する。
-
ストップロス・利食い戦略を最適化し、動的な追跡を実現する。
まとめ
ダブルトラック・リバーサル戦略は、ボリンジャーバンドやケルトナーチャンネルなどの指標を利用した逆張り戦略です。本戦略はパラメータの最適化により、さまざまな銘柄に適応し、一定程度ブレイクアウトの信頼性を識別できます。しかし、逆張り取引自体には依然としてリスクが伴うため、機械学習などの技術をさらに組み合わせて判断精度を高め、より安定した超過収益を得る必要があります。
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Credit for the initial Squeeze Momentum code to LazyBear, rate of change code is from Kiasaki
strategy("Squeeze X BF 🚀", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)
- 1

