EAにボタン、テキストボックス、ラベルを配置する方法



今回は、EAにボタン、テキストボックス、ラベルの配置方法と使い方を説明します。

 

ボタンの配置方法

OnInit()に以下のコードを書きます。

1行目 「ObjectCreate」でオブジェクトを作ります。最初の引数「btnTest」は、オブジェクトの識別用の名前です。好きな名前を付けることが出来ます。二つ目の引数はオブジェクトの種類で「OBJ_BUTTON」はボタンです。三つ目の引数はメインウィンドウ、サブウインドウの選択です。サブウィンドウとはRSIなどを表示しているウィンドウのことです。0はメインウィンドウで1以上はサブウィンドウになります。4つ目と5つ目の引数はオブジェクトの位置の調整なのですがオブジェクトの種類によっては、ここで調整できないのかもしれません。ここでは、2行目と3行目で位置の調整をしています。

2行目 「ObjectSet」でオブジェクトのプロパティを設定します。二つ目の引数「OBJPROP_XDISTANCE」でボタンのX軸の位置(左右)を選択して、三つ目の引数で位置を設定しています。

3行目 二つ目の引数「OBJPROP_YDISTANCE」でY軸の位置(上下)を選択して、三つ目の引数で位置を設定しています。

4行目 二つ目の引数「OBJPROP_XSIZE」は、ボタンの幅の選択です。三つ目の引数で幅を設定します。

5行目 二つ目の引数「OBJPROP_YSIZE」は、ボタンの高さの選択です。三つ目の引数で高さを設定します。

6行目 「OBJPROP_CORNER」は、位置の調整をする時の基準になる場所で、0=左上 1=右上 2=左下 3=右下になります。

7行目 「OBJPROP_FONTSIZE」は、フォントサイズです。

8行目 「OBJPROP_COLOR」は、フォントの色の設定です。

9行目 「OBJPROP_BGCOLOR」は、ボタンの色の設定です。

10行目 ここでは、ボタンに表示するテキストを設定しています。設定する値が文字列のため「ObjectSet」ではなく「ObjectSetString」を使用しています。
一つ目の引数は、チャート識別子で0は現在のチャートです。

11行目 フォントの種類の設定です。

 


テキストボックスの配置方法

テキストボックスの配置方法も、ボタンの配置方法とほとんど同じです。

ボタンの配置方法と違うところだけ説明をしていきます。

1行目 一つ目の引数「txtTest」はオブジェクトの識別用の名前なので好きな名前を付けてください。二つ目の引数「OBJ_EDIT」でテキストボックスを選択しています。(OBJ_EDITなのでエディットボックスなのかもしれません。)

11行目 初期状態ではテキストボックスに「Edit」と表示されるので、これを消すために空文字を入れています。

 


ラベルの配置方法

ラベルの配置方法も、ボタンやテキストボックスとほとんど同じですが、フォントサイズがそのままラベルの大きさになるようです。

 


オブジェクトの削除

OnDeinit(const int reason)に以下のコードを書きます。

「ObjectDelete」は、指定したオブジェクトを削除します。カッコ内はオブジェクトの名前です。

今回は、上の説明で作ったボタン、テキストボックス、ラベルを削除しています。ここで削除処理をしないとEAを削除した時にチャート上にオブジェクトが残ったままになってしまいます。

 


ボタン、テキストボックス、ラベルの使い方

ボタンを押すとラベルにテキストボックスの内容が表示されるプログラムを作ってみます。

上で説明したボタン、テキストボックス、ラベルを配置して、OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)に以下のコードを書きます。

 

1行目 「sparam」は、「OnChartEvent」の4番目の引数です。チャートイベントが発生すると、対応するオブジェクトがあれば「sparam」にオブジェクト名が入っているので、ここでボタンが押されたかの判断が出来ます。
if文で「btnTest」ボタンが押された時に処理をするようにしています。

3行目 「s」という名前の文字列の変数を宣言しています。

4行目 テキストボックス内の値を変数「s」に代入しています。

5行目 変数「s」の値をラベルに表示させています。

6行目と7行目 EAで使えるボタンは、押すと凹んだ状態になり、もう一度押すと元に戻るタイプのボタンです。
7行目で凹んだ状態から元に戻しています。6行目は、ボタンが押されたように見せるためスリーブを入れています。

 

完成するとこんな感じになります。

EAをチャートにセットすると、テキストボックス、ボタン、ラベルが表示されます。

 

テキストボックスに何か入力します。ここではテストと入力しています。

ボタンを押すとテキストボックスの内容が下のラベルに表示されます。

 


全コード

 


おすすめ記事

リアル口座のトレード収支結果です。   EA名:KonohaUSDJPY 通貨ペア:USDJPY 使用FX業者:OANDA JAPAN(東京サーバー) バージョン:1.00 パラメーター:すべて初期値 約定日時…

EAの長期間のバックテストをするにはMT4にヒストリカルデータを入れる必要があります。 今回は、一番簡単にできるMetaQuotes社のヒストリカルデータの入れ方と、FXDDのヒストリカルデータをダウンロードしてインポー…

関連記事

今回は、「全決済ボタンをEAで作ってみる」で説明したEAに、通貨ペアとマジックナンバーの処理を追加します。   目次 通貨ペアの処理を追加するマジックナンバーの処理を追加するパラメーターの追加マジックナンバーの…

今回は、マジックナンバー別の口座履歴をcsvファイルに出力させるスクリプトの作り方を説明します。   目次 スクリプトのテンプレートの作り方口座履歴を出力するスクリプトの作り方今回説明するスクリプトの仕様ファイ…

MT4の標準機能では、複数のボジションを一度に全部決済することが出来ないようです。ないものは作れば良いというのがMT4の最大の特徴ではないでしょうか? 今回は、チャート上にボタンを配置して、そのボタンを押すと保有している…

MT4にはMQLと言うプログラム言語が装備されていて、それを扱うためのメタエディターが付属しています。このメタエディター使うことで自動売買に必要なEAやインジケーター、スクリプトなども作ることが出来ます。 目次 メタエデ…

前回の「全決済ボタンのEAに通貨ペアとマジックナンバーの処理を追加する」で説明した全決済ボタンのEAに、売りボタンと買いボタンをつけてみます。 売り注文や買い注文は、MT4の標準機能で出来るので、ボタンを作る意味はあまり…