【MT4】MQL4でボリンジャーバンドのバンドウォークを検知する自作関数を作ってみました

チャートで価格が、ボリンジャーバンドの+2σや-2σのラインをタッチし続けて動くバンドウォーク。MQL4で、バンドウォークを検知する関数を作ってみました。

バンドウォークとは?

ボリンジャーバンドで、2σ、もしくは-2σのラインに沿って、価格が推移する値動きの事をバンドウォークと呼びます。バンドウォークが発生する時は、ボリンジャーバンドが狭い所から急に広がるエクスパンションと呼ばれる現象が発生しやすくなります。

バンドウォークのアルゴリズムの基本

結構、簡単かと思ったんですが、実際に組んでみると

例外ケースを考えると、難しい。というか、奥が深い。

正常ケースはシンプル

例えば、上側のボリンジャーバンド2σのラインにタッチし続けるケースは

  • 1本前の終値 > 1本前のボリンジャーバンド+2σ
  • 2本前の終値 > 2本前のボリンジャーバンド+2σ
  • 3本前の終値 > 3本前のボリンジャーバンド+2σ
  • 3本前のボリンジャーバンド+2σ < 2本前のボリンジャーバンド+2σ <1本前のボリンジャーバンド+2σ < 現在のボリンジャーバンド+2σ

 

上記をコードに起こすと

何本チェックするかにもよりますが、これじゃカバー出来ないケースはたくさんあるんです。

異常ケース

以下のチャートはこういうのもバンドウォークですよね。目視だと簡単にわかる。でも、プログラムだと数値で全て判断しないといけないので、少し考える必要があります。

2σに沿ってチャートは進んでるけど、触れたり、触れなかったり。

でも、価格は上昇している。

こういうのは目視だと一目瞭然ですが、プログラムでチェックするのが、面倒です。

比率をみてチェックするしかないかなーと思いました。

 

結果を踏まえてコードに起こすと以下のとおりになりました。

バンドウォークをチェックする関数

 使い方

OnTick内でコールして使います。

引数はチェックする本数。

バンドウォークが発生していたら戻り値1が返ってきます。

 

 

コメント