![見出し画像](https://assets.st-note.com/production/uploads/images/64377274/rectangle_large_type_2_b3b45a12f2ca027563a2ead903288eda.png?width=1200)
Block EA 今日のワンポイント:変数の宣言
これからBlock EAの使い方のコツについて、思い出した順にメモしていこうと思います。
今日は「変数の宣言」についてです。
Block EAでは、「変数」に関するツールボックスが二つあります。
Block EAは、GoogleのBlocklyを使って開発しているので、プログラミングの共通部分はBlocklyの機能をそのまま使っています。「変数の作成」は、Blocklyに最初から実装されている機能です。
最初は何もないのですが、「変数の作成」で適当な変数を作ると、変数のブロックが現れます。
標準のBlocklyでブロックから変換可能なプログラミング言語は、「JavaScript」「Python」「PHP」「Lua」「Dart」の5つです。いずれも変数を宣言しなくてもいいか、してもデータ型で区別する必要のない言語です。
なので、変数を作成するだけで対応するコードに変換されます。
ところが、MQL4、MQL5はC、C++に準拠している言語で、変数の型を明示して宣言する必要があります。
そこで、Block EAでは、MQL変数というツールボックスに変数の宣言をするブロックを作りました。
いくつかブロックがありますが、今回は、赤で囲んだ普通の変数の宣言を行うブロックを紹介します。
このブロックをワークスペースに挿入すると、下のようになります。
データ型は「int」「double」「string」「datetime」「bool」の中から選べるようになっています。「整数型」「実数型」とかにしてもよかったのですが、MQLではデータ型は重要なので、そのままにしました。
他にも「char」「long」「float」とか色々データ型はありますが、初心者の使用頻度の低いものは外しました。
変数名のところも選択ができます。
既に「変数の作成」で作成している変数を選ぶこともできるし、最初に設定されている「sig」という変数は仮のものなので、これを変えることもできます。(このブロックを挿入する度に「sig」ができるので、変えておいた方がいいかもしれません。)
この状態でMQLコードを表示させると、
void Tick()
{
int sig;
}
と、int型の変数「sig」の宣言だけ行います。
変数の初期化を行いたい場合は、「MQL変数」のツールボックスにある以下のようなブロックを使います。
このブロックは、数値定数、文字列定数、日時定数、論理定数を表します。適当な値をセットして初期値のところにくっつけると、変数の宣言と同時に初期値の代入ができます。
void Tick()
{
int sig = 0;
}
もう一つ、標準のBlocklyと違う点は、変数を宣言する場所を指定できるということです。標準のBlocklyでは、変数はすべて外部変数として宣言されますが、Block EAでは、変数の宣言ブロックを置いたところで変数が宣言されます。
つまり、上のようにティック時実行関数の中で宣言すると、Tick()関数内のみで有効となる内部変数として宣言されますが、以下のように関数の外で宣言することもできます。
すると、このコードは、
int sig = 0;
void Tick()
{
}
となり、変数「sig」は外部変数として宣言したことになります。
もちろん変数の作成だけでも変数を使ったブロックは作れてしまいますが、変数の宣言がないとMQLプログラムとしてはコンパイルエラーとなってしまいます。
ブロックを作る過程では文法のエラーまではチェックできないので注意してください。
以上、Block EAの「変数の宣言」に関するメモでした。