iOpen・iClose・iHigh・iLowの書式を調べても、実際にチャート上でどう使えばいいのか分からない——という人向けの記事です。

この記事では各関数の説明に加えて、実際にMetaEditorでコンパイルしてチャート上にローソク足の四本値を表示できるサンプルコードを紹介します。

ローソク足のレートを取得する関数

今回は、ローソク足のレートを取得する関数について紹介します。

ローソク足とは、日本で最もよく使われるチャートで、

株式投資やFXなど様々なトレードで用いられています。

ローソク足一本には高値・安値・始値・終値の値があります。それら1つずつに関数が決められています。

  • iOpen関数:始値
  • iClose関数:終値
  • iHigh関数:高値
  • iLow関数:安値

このローソク足の四本値が視覚的に表されます。

始値と終値を表しているのがローソク足の柱となる実体であり、

高値と安値を表している線の部分がヒゲになります。

いずれの関数も戻り値はdouble型です(4本値はpip単位の小数を含むため)。

ローソク足については以下の記事を参照してください。

FXのローソク足の見方・種類・分析方法やパターン一覧についてわかりやすく解説してみた
FXのテクニカル分析の基本はローソク足を分析することです。 ローソク足を正しく分析することができればトレードはグングン上達していきます。 今回はFXのローソク足の見方・種類・分析方法やパターン一覧についてわかりやすく解説してみました。

iOpen関数

iOpen関数指定した通貨ペア・時間軸・バーシフトに対応するバーの始値を返す関数です。

double iOpen(string symbol, int timeframe, int shift);

iClose関数

iClose関数は、指定した通貨ペア・時間軸・バーシフトに対応するバーの終値を返す関数です。

double iClose(string symbol, int timeframe, int shift);

iHigh関数

iHigh関数は指定した通貨ペア・時間軸・バーシフトに対応するバーの高値を返す関数です。

double iHigh(string symbol, int timeframe, int shift);

iLow関数

iLow関数は指定した通貨ペア・時間軸・バーシフトに対応するバーの安値を返す関数です。

double iLow(string symbol, int timeframe, int shift);

それぞれ共通する3つの引数は次の通りです。

  • symbol:通貨ペア(現在のチャートならSymbol()またはNULL)
  • timeframe:時間軸(現在のチャートなら0)
  • shift:何本前の足かを指定(0なら現在の足、1なら1本前の足)

四本値を組み合わせてチャートに表示する

ここまでの4つの関数を組み合わせて、現在の足の四本値をチャート左上に表示するインジケーターを作ってみましょう。

//+------------------------------------------------------------------+
//|                                              OHLC-Display.mq4    |
//+------------------------------------------------------------------+
#property strict
#property indicator_chart_window
#property indicator_buffers 0

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");//チャート削除後
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int digit = (int)MarketInfo(Symbol(), MODE_DIGITS);

   double op = iOpen(Symbol(), 0, 0);//現在の足の始値
   double cl = iClose(Symbol(), 0, 0);//現在の足の終値(未確定足は現在値と同じ)
   double hi = iHigh(Symbol(), 0, 0);//現在の足の高値
   double lo = iLow(Symbol(), 0, 0);//現在の足の安値

   Comment(
      "----- 現在の足(shift=0)の四本値 -----", "\n",
      "始値(iOpen)  = ", NormalizeDouble(op, digit), "\n",
      "終値(iClose) = ", NormalizeDouble(cl, digit), "\n",
      "高値(iHigh)  = ", NormalizeDouble(hi, digit), "\n",
      "安値(iLow)   = ", NormalizeDouble(lo, digit)
   );
   return(0);
  }
//+------------------------------------------------------------------+
Copy

現在確定していない足(shift=0)は、終値(iClose)が現在値と同じ値になる点に注意してください。確定済みの1本前の足を見たい場合は、shiftを1に変えるだけです。

コピペしてコンパイルが通らないときに確認すること

もしコンパイルエラーが出た場合は、次の点を確認してください。

  • "\n",の後ろに日本語のコメントを書くときは、必ず//を付ける(付け忘れるとコメントの文字が未定義の識別子としてエラーになります)
  • 全角スペースや全角の記号が紛れ込んでいないか(半角に統一してください)

まとめ

今回はローソク足のレートを取得する関数についてでした。

ローソク足を活用する際にはこれらの関数は必須なので、しっかりとマスターしましょう。

関連記事