変数の宣言場所 | メタトレーダー4でプログラムを作ってみよう

メタトレーダー4でプログラムを作ってみよう

無料のトレードソフトであるメタトレーダー4のプログラムを作るコツをアップします。初心者がインジケーターとEAのプログラムを作成できるのを目指します。

前回までの説明で変数の宣言の方法はわかったと思いますが、

変数を宣言する場所で、変数の役割が少し変わってきます。


具体的には、宣言項目で宣言する場合と、関数内で宣言する場合で、

変数の扱いが変わります。


宣言項目で宣言する場合

宣言項目で変数を宣言した場合、

宣言された変数はそのプログラム内のどこでも有効になります。

また、変数に入力された値は引き継がれます。



関数内で宣言する場合

関数内で変数を宣言した場合、

宣言された変数は宣言された関数内だけで有効になり、

他の関数等で使用することはできません。


文章だけだとわかりにくいと思いますので、例を挙げて説明します。


宣言項目で宣言する場合


int a=10;
int init()
{ 
  a--;
}
int start()
{ 
  a++;
}


このような変数の使われ方をした場合、

最初の宣言項目では a の値は 10 です。

init に来た時には a 10 のままですが、init 内で 1 を引く計算をしていますので、

init の終わりでは 9 になっています。

start に来た時には a 9 ですが、start 内で 1 を足す計算をしていますので、

start の終わりでは 10 になっています。

そして、ティックが進むごとに start が実行されるので、

1 ティック進むと a の値は 1 ずつ増えていき、これが繰り返されます。



関数内で宣言する場合

int init()
{
 int a=10;
  a--;
}
int start()
{
  int a;
  a++;
}


このような変数の使われ方をした場合、

init で宣言した a10 ですが、init 内で 1 を引く計算をしていますので、

init の終わりでは 9 になっていますが、

init 内で宣言しているので、init の処理が終わると変数 a そのものが無くなります。


start a だけ宣言していますが、init の値は引き継がれません。

宣言だけした場合は 0 が自動的に入ります。

ですので、start の最初の a 0 です。

start 内で 1 を足す計算をしていますので、start の終わりでは 1 になっています。

そして、ティックが進むごとに start が最初から実行されます。

先ほどは、1 ティック進むと a の値は 1 ずつ増えていきましたが、

この場合は、start が終わった時点で、変数 a 自体が無くなっていますので、

a の値は 0 から始まります。

そして start の終わりの時点で 1 になっていて、

start の処理が終わると変数 a 自体が無くなります。


プログラム全体を通して使用したい変数は、最初の宣言項目で宣言し、

関数内でしか使用しないものは関数内で宣言して使用します。


どちらがいい悪いはありませんので、使いやすいように使ってください。 (^-^)ノ~~