【MQL4】ObjectGetValueByShiftを使えばトレンドラインの価格を取得できる

トレンドラインを使う人は必見

現在の価格がトレンドラインにタッチしたかどうかを判定したいことがありまして、「現在足でのトレンドラインの価格を取得できればいいんだけど、そんな都合の良い関数はないよね~」って勝手に決めつけていて、必死こいて何十行ものオリジナル関数を自作しました。

しかし、ある時、特定の日時(ローソク足)におけるトレンドラインの価格を取得できる便利な組込関数を発見!

その名もObjectGetValueByShift関数。

ObjectGetValueByShift関数に、価格を取得したトレンドラインのオブジェクト名とshift(現在足を0として、何本前のローソク足における価格を取得したいか)を渡してあげれば、その位置での価格を返してくれます。

こんな感じで超便利です。

トレンドラインの価格取得の例

雑なコードで恐縮ですが、上記のサンプルコードを載せておきます。

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[])
{
  // トレンドラインのオブジェクト名
  // MT4でトレンドラインを引いて名前を「Trendline」に変更すれば認識してくれます
  string objectName = "Trendline";

  // 現在足
  int shift = 0;

  double price = ObjectGetValueByShift(objectName, shift);

  ObjectCreate(0, "PriceLabel", OBJ_ARROW, 0, Time[0], price);
  ObjectSetInteger(0, "PriceLabel", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
  ObjectSetDouble(0, "PriceLabel", OBJPROP_PRICE, price);

  return(rates_total);
}

逆に価格から特定の日時(ローソク足)を調べることはできるの?

と思った方、素晴らしい発想です。

答えは「できる」です。

ObjectGetShiftByValue関数を使います。

※関数名のShiftとValueの位置が逆転している点に注目

厳密には日時ではなく、ローソク足の位置を示すshiftが得られますが、Time[shift]等とすれば、日時にすぐに変換できます。

組込関数には便利なものが色々あります。

組込関数を上手に活用していきましょう。

そうすればプログラミングの時間をもっと短縮できるでしょう。

MT4の無料プログラミング講座

LINE公式アカウントを友だち追加して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG