MQL4入門(1) – データ型(変数)

拙作「FXメタトレーダー入門」では、サンプルプログラムをもとにして、その理解に必要な項目だけをその都度解説する形式をとっています。初心者が手っ取り早くプログラムを理解するにはこの方法がいいと思ったからです。
ただ、ある程度色々なことがわかってくると、それらをつなぎ合わせるための系統だった理解が必要でしょう。このような内容も本書に盛り込みたかったのですが、下手をすると単にレファレンスマニュアルの和訳だけになってしまいかねないこともあり、採用にはいたりませんでした。
その代わりといっては何ですが、本書の内容を補足する記事を 「MQL4入門」ということでブログに掲載していきたいと思います。一応、「FXメタトレーダー入門」の読者向けのサービスですので、本を片手にご覧いただけると幸いです。
まずは、データ型からです。
MQL4ではデータを表す型として以下のような種類があります。
 ・Integer (int)
 ・Boolean (bool)
 ・Literals (char)
 ・Strings (string)
 ・Floating-point number (double)
 ・Color (color)
 ・Date and time (datetime)
ただし、プログラム中に変数として使う型は
 ・Integer (int)
 ・Boolean (bool)
 ・Strings (string)
 ・Floating-point number (double)
の4つに絞られます。今回の記事はこれらの4つの型についてです。
int型とdouble
「FXメタトレーダー入門」では、まず、数値を表す型として int(整数型)とdouble(実数型)を紹介しました。(128ページ参照)
基本的に数値計算ができればカスタム指標は作れます。
ただ、全く説明しないのもなんなので、残りの string(文字列型)と bool(論理型)もサンプルプログラムに登場させて簡単に説明しています。ここでは、もうちょっと説明を追加しておきます。
string
string(文字列型)は、データウィンドウに指標のラベルを表示させる部分で簡単に説明しています。(192ページ参照)
文字列を表す型はC言語にはないので、MQL4独自の型というわけです。これがプログラミング言語的にいいのかどうかわかりませんが、初心者にとっては結構扱いやすい便利な仕様になっています。
文字列を扱う関数もいくつか用意されています(358ページ参照)が、よく使うのが、文字列の連結だと思います。これが「+」の記号でできるのは便利です。
“ABC”+”XYZ”
と書くと、二つの文字列が連結されて “ABCXYZ” となります。さらに意外だったのが、数値を連結すると、勝手に文字列に変換されて連結される点です。
つまり、
int Period=21;
string label=”ABC”+Period+”XYZ”;
と書くと、labelが “ABC21XYZ” と数値部分まで連結されるのです。この機能は初心者にとってはそんなに意外なことではないでしょうが、個人的にはちょっとびっくりしました。ただ、本書では、このように著者が動揺したことについては触れていません(^^;
いずれにしろ、「+」で文字列や数値データまで連結できると覚えておいて問題ありません。ただ、もし、大量のデータを連結(そういうケースがあるかどうかわかりませんが)する場合などで、動作がおかしくなったときに、次のようにStringConcatenate()という関数を使う手があるということも覚えておくといいかと思います。
string label=StringConcatenate(“ABC”, Period, “XYZ”);
この書き方は276ページで説明している Alert()関数のパラメータの書き方と同じです。内部では同じルーチンを使っているのだと思います。
MQL4のヘルプによると、「+」で連結するより、StringConcatenate()関数を使う方が「高速で使用メモリが少ない」とあります。一応、ご参考まで。
bool
最後にbool型です。
bool型についても、221ページ、322ページで簡単な使用例を紹介しています。二つの状態を二者択一で表すものです。
bool型というのは論理型と言って、if文中で出てくる AND(&&)とか OR(||) とかの論理演算を使った論理代数を提唱したブールさんという人名から名づけられたものです。
と言っても、そう難しく考える必要はありません。
簡単に言うと、bool型で宣言したときに代入される値は、false=0、true=1 と同じことなのです。
じゃあ、わざわざbool型にしなくても int 型で0と1を使えばいいじゃないかと思う方も多いでしょう。(私もプログラムを始めた頃はそういう使い方をしてました)
確かにint型で表しても間違いじゃありません。なぜ、boolを使うかと言うと、「プログラムの間違いを少なくするための工夫」と言ったところでしょうか。
プログラム中には数値としての0、1もよく現れます。その中で二者択一を表す場合にも0、1を使うと、プログラムを見直すときに0、1の意味が数値なのか、二者択一なのか、いちいち考えなくてはいけなくなります。
それを一目でわかるようにするためにbool型として true、false という記号を使うというわけです。
最初はよくわからなくても構いません。プログラミングに慣れてくると、どういう場面で bool型を使えばいいかがわかってくることでしょう。
にほんブログ村 為替ブログへ上位ランキングのブログ記事はこちら
マネポケ金融投資ブログランキングここにも為替ブログ記事が満載!



コメントは受け付けていません