ZigZagの頂点と底辺に矢印を表示するMT4インジケーター(無料コード)|Depth・Deviation・Backstepの設定解説

自作インジ配布

ロジック紹介

MT4に標準搭載されているZigZagインジケーターの頂点と底辺に矢印を表示するインジケーターになります。

以下の動画は通常のZigZagで、ご存知の方も多いと思いますがリペイント(再描画)します。

この動画をご覧いただくと高安値が更新されると最新のラインが引き直される(リペイント)のが分かると思います。

なので、今回のインジは直近に引かれたライン端には矢印は表示させないようにします。
※1つ目の頂点・底辺もリペイントする事はありますが、今回のインジでは対応しませんのでご了承下さい。

作成動画

実際にこのインジケーターを作成動画をYouTubeでもアップしていますので是非ご覧下さい。

以下の記事では動画では書いていない細かい説明も記述していますので、動画でもまだ理解が難しい場合は合わせて読んでみて下さい。

パラメーター(Depth・Deviation・Backstepの設定)

パラメーターは日本語にしていますが、シンプルにMT4標準のZigZagインジケーターと同じ3つの設定項目(Depth・Deviation・Backstep)です。

【ZigZagの深さ:Depth】初期値:12
高値(頂点)や安値(底辺)を探す際に、最低何本分のローソク足を基準に判定するかを指定する期間です。数値を小さくすると細かい波にも反応して矢印が多く表示され、数値を大きくすると小さな値動きを無視して大きな山・谷だけに矢印が表示されるようになります。

【転換率:Deviation】初期値:5
直近の頂点・底辺からどの程度の価格変動(ポイント/パーセンテージ基準の閾値)があった場合にラインの転換とみなすかを指定します。基本的には初期値の「5」のままで問題ありません。

【反転までの判断期間:Backstep】初期値:3
直前の頂点(または底辺)から最低何本以上のローソク足が経過したら次の反転判定を許可するかを指定します。Depthより小さい値を設定するのが基本で、短い足数での細かな引き直しを抑える役割があります。

ソースコード

全体コード

チャート挿入時の初期動作(prev_calculated==0)

チャートにインジケーターを適用した時に、過去に向かって処理するコードと、ティック更新される毎に処理するコードの2つ記載しています。

理由は処理の負荷を軽減する為で、ティック更新される度に現在から過去までを毎回処理するよりは、先述の説明の通り2つに分けて更新時は最低限の範囲での処理で済ませた方が良いからです。

では、まず最初だけ処理するコードが以下の抜粋部分です。

チャートに適用された時に現在から過去に向かって頂点と底辺を探して行き、下矢印(dn配列)と上矢印(up配列)に値が入る事でその箇所に矢印が表示されます。

初期動作以降の動作

次にティック更新時の処理は以下の抜粋部分です。

こちらの処理は一言で言うと、1つ目の頂点・底辺を探して価格を矢印配列(up[],dn[])に代入する処理になります。
現在バー(0)から過去に向かって1つ目の価格が見つかって代入されれば処理終了です。

まとめ

ZigZagを表示すれば頂点と底辺はすぐに分かるので、このインジケーターは必要ないかもしれませんが、こうすれば頂点と底辺の値が取得出来る。という所で参考になればと思い作成しました。

これを応用すればZigZagでトレンドラインを引く事や、価格の切上げ切り下げなど沢山の事が可能になります。

以上、皆さんのご参考になれば( ・Д・)

コメント

タイトルとURLをコピーしました