二重移動平均線ボリンジャーバンドトレンド追跡戦略
概要
本戦略は、ボリンジャーバンドと移動平均線を組み合わせてトレンド判断とエントリーを行う定量取引戦略です。ボリンジャーバンドのトレンド識別能力と移動平均線のフィルター効果を融合し、市場のトレンド方向を効果的に識別し、トレンド方向の相場でエントリーを行います。
戦略原理
-
最高値と最安値からボリンジャーバンドのチャネルを計算し、市場のトレンド方向を判断する
- 最高値(highest)と最安値(lowest)からチャネルの上限・下限を算出
- チャネルの中軸は最高値と最安値の平均値
- 価格がチャネル上のどの位置にあるかでトレンド方向を判断
-
陽線の実体サイズを計算し、ストップロスと反転シグナルを判断する
- 陽線の実体は終値と始値の差の絶対値
- N期間内の陽線実体の平均値を算出し、現在の陽線実体サイズと比較してストップロスと反転を判断
-
トレンド方向が確認された後、チャネル方向に合わせてエントリー
- トレンド上昇時は下限付近でロングエントリー
- トレンド下降時は上限付近でショートエントリー
-
移動平均線をフィルターとして使用し、偽のシグナルを回避
- N期間の終値移動平均線を計算
- 価格が移動平均線を突破した場合のみ取引シグナルを発出
戦略の優位性
-
ボリンジャーバンドチャネルと移動平均線を組み合わせたトレンド判断で、システム性が高い
ボリンジャーバンドは価格チャネルとトレンド方向を明確に判断でき、移動平均線がフィルターとして機能することで、両者の組み合わせによりトレンドを効果的に識別し、市場の突発的な出来事の影響を回避して、システムの安定性を保証する。
-
陽線実体サイズを用いたストップロスにより、リスクを効果的にコントロール
一定期間内の陽線実体サイズの平均値を計算し、現在の期間の実体サイズと比較することで、トレンド反転を明確に判断し、ストップロスによるポジション縮小が可能となり、戦略リスクを効果的に管理する。
-
定量的なエントリーとストップロスのルールが明確
移動平均線とチャネル方向が一致した状態でエントリーし、陽線実体サイズのルールでストップロスを行うことで、システム全体のエントリーおよびストップロスルールが非常に明確で体系化されている。
リスク分析
-
レンジ相場における潜在的な損失リスク
レンジ相場では、価格が何度も上限・下限にタッチし、小幅な損失が繰り返される可能性がある。この場合、ポジションサイズを減らし、1回あたりの損失を抑えるべきである。
-
ストップロスが近すぎるために、変動が大きいときに切られるリスク
強いトレンドの中で、価格が短期的に調整するとストップロスルールが発動して切られる可能性がある。この場合、ストップロスの幅を適度に広げ、トレンドに追随する必要がある。
-
パラメータ不適切による誤シグナルの可能性
移動平均線やボリンジャーバンドのパラメータ設定が不適切な場合、誤ったシグナルを識別する可能性がある。適切にパラメータを最適化し、シグナルを安定かつ信頼性のあるものにする必要がある。
戦略改善の方向性
-
移動平均線の期間パラメータの最適化
移動平均線のパラメータを調整し、平滑度を低くすることで、トレンド変化をより早く発見できる。
-
異なるストップロスルールの効果をテスト
トレーリングストップロス、ATRストップロスなど、異なるストップロスルールを試し、最適なストップロス方式を選択する。
-
機械学習モデルの補助導入
大量の過去データに基づいてモデルを訓練し、トレンド判断や取引シグナルの発出を補助する。
まとめ
本戦略は、トレンド判断とリスク管理を総合的に考慮し、ボリンジャーバンドチャネルと移動平均線でトレンドを識別すると同時に、陽線実体サイズでストップロスを行うものです。戦略はシステム性が高く、定量的なルールが明確であり、リスクを効果的にコントロールして超過収益を得ることができます。今後はパラメータ最適化や機械学習の導入などを通じて継続的に改善し、戦略をより安定かつ信頼性の高いものにしていきます。
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Noro's Bands Scalper Strategy v1.3", shorttitle = "Scalper str 1.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
- 1

