過去の一定期間の最高値、最安値を結んだラインの指標です。MQL4/MQL5の組み込みテクニカル指標関数としては用意されていませんが、EAでも利用する場面がよくあるので、カスタム指標として作っておくと便利です。
💡MQL4用にはファイルの拡張子をmq4にしてダウンロードしてください。
//MQL4互換ライブラリ(MQL5のみ)
#include "LibMQL4.mqh"
//プログラムのプロパティ
#property indicator_chart_window //チャートウィンドウに表示
#property indicator_buffers 3 //使用する指標バッファの数
#property indicator_plots 3 //プロットする指標バッファの数
#property indicator_type1 DRAW_LINE //指標0の種類:実線
#property indicator_type2 DRAW_LINE //指標1の種類:実線
#property indicator_type3 DRAW_LINE //指標2の種類:実線
#property indicator_color1 clrBlue //指標0の色:Blue
#property indicator_color2 clrRed //指標1の色:Red
#property indicator_color3 clrRed //指標2の色:Red
チャートウィンドウに3本のラインを表示するための設定です。
double BufMed[]; //中央ライン
double BufHigh[]; //上位ライン
double BufLow[]; //下位ライン
上位ライン、下位ラインと、その二つの平均をとった中央ラインのための配列の宣言です。
input int BandPeriod = 20; //期間
input int BandShift = 0; //バンドシフト
input ENUM_STO_PRICE PriceField = STO_LOWHIGH; //高値・安値の価格
BandPeriod
は、最高値、最安値を算出する期間を表します。
BandShift
は、バンドを時間方向にシフトさせるバーの数を表します。
PriceField
は、高値の最高値、安値の最安値を求めるか、終値の最高値、最安値を求めるかの選択を行います。iStochastic()
で使われる定数を利用します。高値・安値を使う場合、STO_LOWHIGH
を、終値・終値を使う場合、STO_CLOSECLOSE
を指定します。
int OnInit()
{
//配列を指標バッファに関連付ける
SetIndexBuffer(0, BufMed, INDICATOR_DATA);
SetIndexBuffer(1, BufHigh, INDICATOR_DATA);
SetIndexBuffer(2, BufLow, INDICATOR_DATA);
//時系列配列に設定
ArraySetAsSeries(BufMed, true);
ArraySetAsSeries(BufHigh, true);
ArraySetAsSeries(BufLow, true);
//プロット開始位置の設定
SetIndexDrawBegin(0, BandPeriod);
SetIndexDrawBegin(1, BandPeriod);
SetIndexDrawBegin(2, BandPeriod);
return(INIT_SUCCEEDED);
}
SetIndexBuffer()
で、上で宣言した3つの配列を指標バッファに関連付けます。さらにArraySetAsSeries()
で、それぞれの配列を時系列配列に設定します。