HLバンドは、一定期間の最高値、最安値を結んだ指標です。上位ラインを終値が上抜ける(ブレイクアウト)と、上昇トレンドと見なし、買いシグナルを生成します。逆に下位ラインを終値が下抜ける(ブレイクアウト)と、下落トレンドと見なし、売りシグナルを生成します。
<aside> 💡 買いシグナル:2本前から1本前にかけて終値が2本前のHLバンドの上位ラインを下から上に交差したとき 売りシグナル:2本前から1本前にかけて終値が2本前のHLバンドの下位ラインを上から下に交差したとき
</aside>
//共通ライブラリ
#include "LibEA.mqh"
sinput double Lots = 0.1; //売買ロット数
//ティック時実行関数
void Tick()
{
int sig_entry = EntrySignal(); //仕掛けシグナル
//成行売買
MyOrderSendMarket(sig_entry, sig_entry, Lots);
}
input int BandPeriod = 10; //HLバンドの期間
//仕掛けシグナル関数
int EntrySignal()
{
//2本前のHLバンド
double Hline2 = iCustom(_Symbol, 0, "HLBand", BandPeriod, MODE_UPPER, 2);
double Lline2 = iCustom(_Symbol, 0, "HLBand", BandPeriod, MODE_LOWER, 2);
int ret = 0; //シグナルの初期化
//買いシグナル
if(Close[2] <= Hline2 && Close[1] > Hline2) ret = 1;
//売りシグナル
if(Close[2] >= Lline2 && Close[1] < Lline2) ret = -1;
return ret; //シグナルの出力
}
HLバンドは、本サイトで紹介したHLBand
というカスタム指標で求められます。カスタム指標を別のプログラムから呼び出す場合、iCustom()
という関数を利用します。
name
の引数に、カスタム指標の名前(HLBand.mq5
の場合、"HLBand"
)を代入します。
その次の引数は、HLBand
の外部パラメータへ渡されます。ここでは、HLバンドの期間として別途宣言したBandPerod
をHLBand
のパラメータとして代入します。HLBand
には他にBandShift
とPriceField
というパラメータがありますが、デフォルト値から変更がない場合は、代入する必要はありません。
最後から2番目の引数がmode
を表します。上位ラインを求めたい場合、MODE_UPPER
を、下位ラインを求めたい場合、MODE_LOWER
をそれぞれ代入します。
2本前の上位ラインHline2
、下位ラインLline2
と、終値Close[2]
、CLose[1]
の大小関係でシグナルを判定します。
<aside>
❗ このEAを実行させる場合、HLBand
の実行ファイル(HLBand.ex4
または、HLBand.ex5
)が必要です。これがIndicators
フォルダに作成されていることを確認してください。
</aside>