【MQL4】チャートに自作「ボタン」を作成する方法

MT4でチャート上に「ボタン」を作成したい場合があります。

「ボタンが押されたら、処理を実行する」みたいな使い方が想定されますね。

ボタンを自作できたら、便利だな~

今回は、ボタンを作成する方法をご紹介します。

スポンサーリンク

ボタンを作成するメリット

MT4では、元々用意されているトレードパネル(発注ボタン)があります。

それを使って、売り買いの発注が可能です。

では、何故、わざわざボタンを自作して発注処理をするのか?

それは、ボタン1つで同時に色々できることがあるからです。

例えば、

・ロスカット(STOP)を設定できる
・利確(T/P)を設定できる
・ロットサイズを設定できる
・複数の処理を一括処理できる
・マジックナンバーを設定できる
・コメントを設定できる

などでしょうか。

発注時の「チャートをキャプチャする」なんていうのも良いかも知れません。

それぞれは、自分で個別に設定・処理できるので、面倒じゃなければ必要ないかも知れませんが、中には、MQLコードでしか設定できないものもあります。

・マジックナンバーを設定できる
・コメントを設定できる

特に、マジックナンバーは、EAには必須です。
どのEAによるオーダーかを識別するのが、マジックナンバーです。

複数EAを稼働してる場合、オーダーを識別できないと対象ではないオーダーに対して処理を実行してしまったりと不都合が発生するためです。

ボタンを作成する理由は、色々あると思いますが「処理を自動化できる」のが、大きなメリットになります。

ボタンは、オブジェクト

オブジェクトは、チャートに描画できる「ライン」や「図形」のようなものを指します。
部品みたいな感じでしょうか。

そのオブジェクトの一つとして「ボタン」を作成できます。

他にも、「ラベル」「ライン」「矢印」などもオブジェクトとして作成できます。

オブジェクトを作成する「ObjectCreate」

では、実際どうやって作るのか?

MQL4では、オブジェクトを作成するための「ObjectCreate」関数が用意されています。

ObjectCreate

オブジェクトを作成します。

bool  ObjectCreate(
   long          chart_id,    // 表示するチャートID
   string        object_name, // オブジェクトを識別する名前
   ENUM_OBJECT   object_type, // オブジェクトの種類
   int           sub_window,  // 表示するサブウィンドウNo
   datetime      time1,       // 時間指定がある場合に設定(垂直線など)
   double        price1,      // 価格指定がある場合に設定(水平線など)
   ...
   datetime      timeN=0,     // 時間指定(複数)がある場合に設定(トレンドラインなど)
   double        priceN=0     // 価格指定(複数)がある場合に設定(トレンドラインなど)
   );

ObjectSetInteger

オブジェクトのプロパティ値を設定します。

bool  ObjectSetInteger(
   long     chart_id,    // 表示するチャートID
   string   object_name, // オブジェクトを識別する名前
   int      prop_id,     // プロパティの種類
   long     prop_value   // プロパティの設定値
   );

ObjectSetString

オブジェクトの文字に関するプロパティ値を設定します。

bool  ObjectSetString(
   long     chart_id,    // 表示するチャートID
   string   object_name, // オブジェクトを識別する名前
   int      prop_id,     // プロパティの種類
   string   prop_value   // プロパティの設定値
   );

ボタンを作成するコード

それでは、実際にボタンを作成してみましょう。

コード例)

//現在のチャートにボタンを作成
ObjectCreate(0,"BUYbtn",OBJ_BUTTON,0,0,0);

//文字色
ObjectSetInteger(0,"BUYbtn",OBJPROP_COLOR,clrWhite);
//背景色
ObjectSetInteger(0,"BUYbtn",OBJPROP_BGCOLOR,clrRed);

//ボタンの位置指定
ObjectSetInteger(0,"BUYbtn",OBJPROP_CORNER,CORNER_LEFT_UPPER); //左上を基準にする
ObjectSetInteger(0,"BUYbtn",OBJPROP_XDISTANCE,5);  //左上からの横位置(座標)
ObjectSetInteger(0,"BUYbtn",OBJPROP_YDISTANCE,30); //左上からの縦位置(座標)

//ボタンのサイズを指定
ObjectSetInteger(0,"BUYbtn",OBJPROP_XSIZE,55); //横幅
ObjectSetInteger(0,"BUYbtn",OBJPROP_YSIZE,30); //縦幅

//フォント
ObjectSetString(0,"BUYbtn",OBJPROP_FONT,"MS ゴシック"); //フォント
ObjectSetInteger(0,"BUYbtn",OBJPROP_FONTSIZE,9);        //フォントサイズ

//テキスト
ObjectSetString(0,"BUYbtn",OBJPROP_TEXT,"▲BUY "); //ボタンに表示する文字

あくまで一例ですので、自分の好みに合わせて、設定値は変更して下さい。

上記のコードを実行すると、こんなボタンが左上あたりに表示されます。

これでボタンの作成が出来ました!!

ただし、このボタンを押しても何も反応しません。

ボタンを押したときの動作は、別途プログラミングしてあげる必要があるからです。

これは、また次回に説明します。

タイトルとURLをコピーしました