https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a26d2a1e-104e-4904-bccb-b3f4e980a071/chart3.png

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バンドの期間として別途宣言したBandPerodHLBandのパラメータとして代入します。HLBandには他にBandShiftPriceFieldというパラメータがありますが、デフォルト値から変更がない場合は、代入する必要はありません。

最後から2番目の引数がmodeを表します。上位ラインを求めたい場合、MODE_UPPERを、下位ラインを求めたい場合、MODE_LOWERをそれぞれ代入します。

2本前の上位ラインHline2、下位ラインLline2と、終値Close[2]CLose[1]の大小関係でシグナルを判定します。


<aside> ❗ このEAを実行させる場合、HLBandの実行ファイル(HLBand.ex4または、HLBand.ex5)が必要です。これがIndicatorsフォルダに作成されていることを確認してください。

</aside>