基礎から学ぶシステムトレード
シストレブログ人気ランキング  

シストレ徹底攻略シストレマスターへの道ワールド・トレーディング・エッジ基礎から学ぶシステムトレードシストレニュースシストレツールシストレナビTOPへ

 

2010年08月03日(火)

MQL5でよく出てくる構造体 [MetaTrader5]



今回はプログラミングの基礎に戻ってデータ型と構造体の話です。

C言語やMQL4では、

int a;
double b;

のように書くと、a、bという変数をそれぞれ、int(整数)型、double(実数)型として宣言したことになり、その後、そのプログラム中で使えるようになります。

MQL4の場合、データ型といっても、int、double、string、bool、color、datetime の6種類しかなかったので、覚えるのもそんなに苦ではなかったと思います。

MQL5でも同じデータ型は使えますが、さらに増えたものもあります。

特に整数を表す型が、char、short、int、long、uchar、ushort、uint、ulongの8種類と増えています。

また実数はdouble、float の2種類に増え、さらにenumという列挙型が追加されています。

ただ、これらのデータ型をすべて使いこなさなくてはいけないというわけではなく、特に数値の表現範囲や精度にこだわらなければ、整数はint実数はdoubleと覚えておけば大丈夫です。

ところで、前回、Bid、Ask を調べた際に
MqlTick tick;

のようなコードが出てきました。

これをそのまま読むと、tickという変数をMqlTick 型として宣言したという意味になります。

しかし、MQL5には、「MqlTick」 というデータ型はありません。

では、これは何かというと、「構造体」というデータ構造として定義されたデータ型の一種なのです。

そもそも「構造体」という考え方はC言語にあるもので、複数のデータをまとめて一つのデータとして扱うためのものです。

ただ、複数のデータと言っても色々なバリエーションがあるので、それぞれの構造体を区別するために名前が付いています。

MQL5で予め定義されている構造体の一つが、「MqlTick」 であり、次のように定義されています。

struct MqlTick
{
datetime time;
double bid;
double ask;
double last;
ulong volume;
};
構造体の定義はこれだけなのですが、ここで、
MqlTick tick;

としてtickという変数を宣言すると、tickには、datetime型のデータ1つ、double型のデータ3つ、ulong型のデータ1つの計5つのデータがまとめて格納されることになるのです。

そして、それぞれのデータはどのようにして区別するかというと、各データにはtime、bid、ask などの名前(メンバ名)が付いているので、tick.bid、tick.ask のように、変数名とメンバ名を「.」でつないで表します。

但し、この構造体変数は宣言するだけでBid、Askの値が代入されるわけではなく、SymbolInfoTick()という関数を介すことで実際のBid、Ask値が代入されます。

この関数は2つの引数を取り、最初の引数がシンボル名、二つ目の引数がMqlTick型の変数です。
MqlTick tick; 
SymbolInfoTick(_Symbol, tick);

のようにSymbolInfoTick()関数を呼ぶことで、tick という変数に最新のティックの情報を返します。

最後にMqlTick型のデータを使ってBid、Askの値を表示させるプログラムは以下のようになります。
void OnStart() 
{
MqlTick tick;
SymbolInfoTick(_Symbol, tick);
double Bid = tick.bid;
double Ask = tick.ask;
Print("Bid=", Bid);
Print("Ask=", Ask);
}

このような構造体の考え方は、この後も、チャートの四本値やトレード関数などに頻繁に出てきますので、扱い方を覚えておくとよいでしょう。


>>“基礎から学ぶシステムトレード”全記事バックナンバーはこちらから




Posted at 12時09分


ページのトップへ ページのトップへ

Sponsor AD

2010/8

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

プロフィール

豊嶋久道

2003年よりFX取引を始め、システムトレードの道へ。最近ではFXオプション取引も含めたトレーディングシステムの研究を行っている。システムトレードを基礎から正しく理解するための情報を発信する予定。

PHOTO

ランダムウォークとランダムトレード(4)

ランダムウォークとランダムトレード(4)

カテゴリーリスト

最近の記事

検索


当サイトコメントについて

当コメントは情報提供のみを目的として作成されたものであり、投資に関してはご自身でご判断くださいますようお願い致します。また、当資料は著作物であり著作権法により保護されております。無断で全文または一部を転載することはできません。

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2008 PhiConcept,Inc. All rights reserved.