【MQL4勉強プログラミング】オブジェクトを作成・生成する方法!

ザフナーラボブログ

ObjectCreate()関数は、オブジェクトを作成・生成するために使用します。

ObjectCreate()関数は、以下のように定義されています。

bool ObjectCreate(
string object_name,
ENUM_OBJECT object_type,
int sub_window,
datetime time1,
double price1,
datetime time2=0,
double price2=0,
datetime time3=0,
double price3=0
);

各引数の意味は、以下のとおりです。

  • string object_name
    描画させるオブジェクトの名前を指定します。
    名前は、オブジェクトを描画させる同じチャートウィンドウ(サブウィンドウを含む。)内において、複数のオブジェクト間で重複しないようにします。
  • ENUM_OBJECT object_type
    以下の表に従って、描画させるオブジェクトの種類を指定します。

    オブジェクトの種類

    定 数
    内 容
    OBJ_VLINE 垂直線
    OBJ_HLINE 水平線
    OBJ_TREND トレンドライン
    OBJ_TRENDBYANGLE 角度によるトレンドライン
    OBJ_CYCLES サイクルライン
    OBJ_CHANNEL チャネル
    OBJ_STDDEVCHANNEL 標準偏差チャネル
    OBJ_REGRESSION 線形回帰
    OBJ_PITCHFORK アンドリュース・ピッチフォーク
    OBJ_GANNLINE ギャンライン
    OBJ_GANNFAN ギャンファン
    OBJ_GANNGRID ギャングリッド
    OBJ_FIBO フィボナッチリトレースメント
    OBJ_FIBOTIMES フィボナッチタイムゾーン
    OBJ_FIBOFAN フィボナッチファン
    OBJ_FIBOARC フィボナッチ円弧
    OBJ_FIBOCHANNEL フィボナッチチャネル
    OBJ_EXPANSION フィボナッチ拡張
    OBJ_RECTANGLE 長方形
    OBJ_TRIANGLE 三角形
    OBJ_ELLIPSE 楕円
    OBJ_ARROW_THUMB_UP サムズアップ
    OBJ_ARROW_THUMB_DOWN サムズダウン
    OBJ_ARROW_UP 上矢印
    OBJ_ARROW_DOWN 下矢印
    OBJ_ARROW_STOP ストップサイン
    OBJ_ARROW_CHECK チェックサイン
    OBJ_ARROW_LEFT_PRICE 価格ラベル(左側)
    OBJ_ARROW_RIGHT_PRICE 価格ラベル(右側)
    OBJ_ARROW_BUY 買いサイン
    OBJ_ARROW_SELL 売りサイン
    OBJ_ARROW 矢印
    OBJ_TEXT テキスト
    OBJ_LABEL ラベル
    OBJ_BUTTON ボタン
    OBJ_BITMAP ビットマップ
    OBJ_BITMAP_LABEL ビットマップラベル
    OBJ_EDIT 編集枠
    OBJ_EVENT 経済指標カレンダーに反応するイベントオブジェクト
    OBJ_RECTANGLE_LABEL カスタムグラフィカルインターフェースを作成したりデザインするオブジェクト
  • int sub_window
    オブジェクトを描画させるウィンドウのウィンドウ番号を指定します。
    メインのチャートウィンドウにオブジェクトを描画させたい場合は「0」と記述します。
    ウィンドウ番号は、「0」以上「WindowsTotal()関数(詳細は「こちら」を参照してください。)で取得される値」未満となります。
    オブジェクトを表示させるウィンドウが存在しない場合は、ObjectCreate()関数は、戻り値として「false」を返します。
  • datetime time1
    オブジェクトの1点目の位置(X軸の位置)を時間で指定します。
  • double price1
    オブジェクトの1点目の位置(Y軸の位置)を価格で指定します。
  • datetime time2
    オブジェクトの2点目の位置(X軸の位置)を時間で指定します。
  • double price2
    オブジェクトの2点目の位置(Y軸の位置)を価格で指定します。
  • datetime time3
    オブジェクトの3点目の位置(X軸の位置)を時間で指定します。
  • double price3
    オブジェクトの3点目の位置(Y軸の位置)を価格で指定します。

戻り値

オブジェクトが正常に生成された場合は「true」を返し、エラーが生じた場合は「false」を返します。

エラーの情報を取得したい場合は、GetLastError()関数(詳細は「こちら」を参照してください。)を使用します。

オブジェクトがすでに生成されている場合は、ObjectCreate()関数は、その座標を変更しようとします。

注意点

オブジェクトの名前は、63文字を超えることはできません。また、オブジェクトの名前は、ラテン文字を使用することが強く推奨されます。

「OBJECT_LABEL」タイプのオブジェクトは、座標を無視するので、当該オブジェクトの描画位置を指定するためには、ObjectSet()関数(詳細は「こちら」を参照してください。)を使用します。

メインのチャートウィンドウのウィンドウ番号は「0」となり、インジケーターが描画されているサブウィンドウのウィンドウ番号は「1」から始まります。

オブジェクトが描画される座標は、「時間」と「価格」のペアで指定されなければなりません。例えば、「OBJ_VLINE」タイプは、「時間」を指定するだけで位置を指定することはできますが、「価格」(どのような値でも可)も併せて渡さなければなりません。