MQL5超入門(1)/データ型/整数と実数
MT5 のリリースまで、まだまだ時間が掛かる気がする...のですが、来たるべき日に備えて、MQL4 とMQL5 の違いを解説(妄想?)して行きます。(早すぎ…?笑
プログラミング言語は「慣れ」が大切なので、毎日少しずつ、知識を増やしていけば、移行しやすいと思うのですよ..。
一応、MQL4を知っていて、C,C++は知らない人が、自作EA を少しの手間でMQL5 に移植できることを目標にします。
どんな言語でも、データの型の種類だけは知っておかないと、サンプルソースを読み解けないので、まずは型を説明します。
MQL4 での整数型は、char, bool, int, color, datetime だけでしたが11種類に増えています。実数型は2種類です。
整数型
型 | サイズ(byte) | 最小値 | 最大値 | C++での表現 |
char | 1 | -128 | 127 | char |
uchar | 1 | 0 | 255 | unsigned char, BYTE |
bool | 1 | 0(false) | 1(true) | bool |
short | 2 | -32 768 | 32 767 | short, wchar_t |
ushort | 2 | 0 | 65 535 | unsigned short, WORD |
int | 4 | - 2 147 483 648 | 2 147 483 647 | int |
uint | 4 | 0 | 4 294 967 295 | unsigned int, DWORD |
color | 4 | -1 | 16 777 215 | int, COLORREF |
long | 8 | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 | __int64 |
ulong | 8 | 0 | 18 446 744 073 709 551 615 | unsigned __int64 |
datetime | 8 | 0 (1970.01.01 0:00:00) | 32 535 244 799 (3000.12.31 23:59:59) | __time64_t |
実数型
型 | サイズ(byte) | 最小値 | 最大値 | 精度 | C++での表現 |
float | 4 | 1.175494351e-38 | 3.402823466e+38 | 7桁 | float |
double | 8 | 2.2250738585072014e-308 | 1.7976931348623158e+308 | 15桁 | double |
この表で留意すべきは、最小値〜最大値です。整数型の中には、負の数を表現できない型があることにも注意です。
int 型では40億という数値は扱えませんが、正の数だけでよければ、uint 型を使うことで表現できます。
さらに、大きな整数を扱いたければ、long, ulong を使うことになりますが、その分だけサイズ(=消費メモリ)が増えてしまいます。
ただ、移植する上では、特に整数と実数の新しいデータ型を使う必要はないと思います。
余談ですが…
for(char ch=-128;ch<128;ch++) { Print("ch=",ch); }
型によって表現できる範囲があることを忘れると、このコードのバグに気づきません。
どこにもバグがあるとは思えない人は、MT5 で動かしてみてください。多分、泣きたくなります..orz