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