joda!!

jodaによるプログラミング芸

初心者向けmql5 構造体

どうもjodaです。

マネーロンダリングのせいで銭洗弁天風評被害受けてるのではないかと気になっているこの頃です。

 

本日の内容は、

初心者向けmql5。構造体です。

初心者向けmql5では、主にmql4 からの移行で気をつけないといけないこと、基礎的なことを書いていきます。

 

今回は、

MQL4とMQL5の違い 構造体偏
です。

早速内容に入ります。
MQL4になかった機能として、MQL5には構造体が追加されました。
MQL5ではこの構造体の理解が必須です。

というのも、
MQL4でEA作成する際に頻用した、OrderSend()関数、OrderModify()関数、などの
トレード関数があります。
それぞれ用途ごとに、
OrderSend()関数であれば注文の送信、OrderModify()関数であれば待機注文や約定した注文の変更(指値指値など)のような役割を持っています。
これらの関数は、トレードに関する指示を行うので、EAに必須です。

しかし、MQL5ではこれらのトレード関数が統合され、
すべてOrderSend()関数で行うようになりました。
そしてMQL5のOrderSend()関数では、構造体を使用してコードを記述します。

トレード関数をひとまとめにすると、必要なパラメーターが増えてしまい、
記述がめんどくさい、かつ、見にくいコードになるので、構造体を使用したのだと思われます。

それでは構造体についてです。
構造体とは、複数の異なるデータ型をまとめて一つの変数として扱うものです。
構造体の書式は以下の通りです。

struct 構造体のタグ名
{
データ型1 メンバー名1;
データ型2 メンバー名2;      

};

まず、タグ名は、そのまま構造体の名前です。
わかりやすい名前を付けることが大切です。
また、構造体は文として扱われるので、}の後に文の終わりのセミコロンが必要です。
MQL5を使用する際、自分で構造体を定義することはないでしょうが、
あるとしたら確実に付け忘れる自信があります。

そして、
データ型 メンバー名;
の書式で、データの型と、名前を与えます。

これだけです。
例として、
int型のデータ、double型のデータをまとめた構造体を定義するとします。
名前は、kouzoutai
int型のデータのメンバー名はi、double型のデータのメンバー名はdとします。
そうすると、構造体の宣言はこのようになります。

struct kouzoutai
{
int i;
double d;
};

構造体は以下のように使用します。

kouzoutai a,b; //①
a.i=1;     //②
a.d=0.5;    //③

解説すると、
まず①でkouzoutai型の変数a,bを宣言。
②構造体aのiというメンバーに1を代入。
④ 構造体aのdというメンバーに0.5を代入。

といった感じです。
また、同じ構造体であれば、代入もできます。
a=b;
とすることで、
b.i=1 b.d=0.5
となります。

これを理解することで、ようやくMQL5のOrderSend()関数を使用することができます。
MQL5のOrderSend()関数については後日。