【MQL4テクニック】トレンドラインから価格を取得する方法。 ラインタッチでアラートを出すサンプルコードあり

MQL4テクニック

トレンドラインにタッチでエントリーなどのEAを作成するために、便利な関数をご紹介します。

ObjectGetValueByShift関数を使う

ObjectGetValueByShift関数では、指定したシフト数に対する価格を取得することができます。

トレンドラインや水平線の価格を取得することが出来るので、ラインタッチによる転換を狙うEAなどを簡単に作成することができます。

double ObjectGetValueByShift(string name, int shift);

引数の意味は以下です。

引数名詳細
nameオブジェクト名を指定します。
shift取得したい価格のシフト数を指定します。
あなたのやりたいことがきっと見つかる!
MQL4テクニック 逆引き集 はこちら

実際に取得してみる

現在の足に対するトレンドラインの価格を取得して、ターミナルに出力してみます。

   double linePrice = ObjectGetValueByShift("オブジェクト名", 0);
   Print(linePrice);

ObjectGetValueByShiftの第一引数は、オブジェクト名に合わせて任意に変更してください。

黄色い点線が交わっている部分が取得したい場所です。

こちらがターミナルに出力された内容です。
トレンドラインの値を取得できていることがわかります。

活用例

トレンドラインにタッチでアラートを鳴らします。

以下サンプルコードです。

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{

   double linePrice = ObjectGetValueByShift("オブジェクト名", 0);

   if (Open[0] > linePrice && Close[0] <= linePrice){
      Alert("Line touch!!");
   }

   if (Open[0] < linePrice && Close[0] >= linePrice){
      Alert("Line touch!!");
   }
   return(rates_total);
}
POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。