メタトレーダー講義 第8回 変数
こんにちわ。FXボーイです。
今回の講義が終われば、残す基礎知識はプロパリティー一つとなりました!
あと少しなので気合いをいれて頑張りましょう!
この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)
メタトレーダー講座
Coders'guru
www.forex-tsd.com
-8-
変数
MQL4変数の講義へようこそ。
前回の講義は楽しんでいただけましたでしょうか。そしてあなたが変数の難関に立ち向かう準備ができていることを祈ります。
変数は大変難関な講義内容になりますので、データタイプの記事を復習しておくことをお勧めします。
それでは変数を楽しみましょう。
変数って何?
以前にこの秘密をあなたにお話したように、変数とは、データを保存すべき記憶貯蔵庫の場所はどれかを指定する行為の名称です。
このことが鮮明にわかる助けになるように、記憶貯蔵庫は一連のサイズの違う箱であるとイメージしてください。箱の大きさは記憶容量単位(バイト)が要求する記憶貯蔵庫収容空間の大きさです。
・データを貯める箱を使うために、その箱は名前をつけられなくてはなりません。この過程を、
declaration(宣言)といいます。
・宣言の過程において、あなたはコンピューターにどのような種類か、そしてどのようなサイズ
の箱が使いたいかを知らせる言葉を使わなくてはなりません。そのコンピューターに伝える
言葉をキーワードといいます。キーワードを使って宣言してるわけですね。
・もしあなたが情報の種類と関係がある意義のある名称を箱につけたなら、そのデータをより
簡単に見つけられるようになります。その箱につけた名称のことを変数名(識別子とほぼ同
義)といいます。
・データは、箱にいれられるときに、振り分けられながら箱にいれられます。
・あなたが作った箱に価値を付けたとき、同じ行であなたは計量値を宣言しています。この過
程を(変数生成時に指定された値である初期値を格納することになるので)initialization(初
期化)といいます
私たちが変数を作るとき、私たちの変数に、特定の記憶貯蔵庫の長さ(大きさ)を割り振ってほしいとコンピューターに告げています。文字列や、簡単な数字、文章、大きな数字は同じ記憶貯蔵庫の場所に入れておくことができないので、コンピューターはどのような種類のデータで、どのくらいの長さのデータなのだと私たちに聞くわけです。これがデータタイプの意味です。
例えば、もし私たちがこのコード文をコンピューターに言う時、
int MyVaraible=0;
これは、私たちはコンピューターに4バイトの長さの単位を私たちのつけた変数名称であるMy Variableに与えてくれと頼んでいるわけです。
いま使用した例を使って説明すると
int ←キーワード
int ←Integer data type
int ←Declaration(宣言)
MyVaraible←変数名
=0←初期化
MQL4で、これらはデータタイプの種類です。
・Integer(int) 整数
・Boolean(bool)論理型
・Character(char)文字
・String(string)文字列
・Floating-point number(double) 浮動小数点数(小数点が動くので少数と整数に対応)
・Datetime(datetime)
以前のデータタイプ講義の中から数行コピーしておきました。復習になりましたでしょうか。
さて、今から変数をどのように宣言するかについてから始めましょう。
宣言
変数の宣言の意味は、その世界への紹介と、変数タイプの指定です。宣言は、あなたがデータタイプで学んだキーワード(int,double,char,bool,string,color and datetime)と、あなたがその変数のために選んだ名前を使うことによって行います。
例
int MyVaraible;
今あなたはMyVaraibleと名付けた整数タイプの変数を宣言しました。そして宣言する前に、MyVaraibleをあなたのコードに使うことはできません。もしも宣言なしで使用すれば、MQL4コンパイラは不平を漏らし、あなたに'MyVaraible'-varaible not defind.1 error(s),0 warning(s)とこのようなことを言うでしょう。
初期化
変数の初期化の役割は、ある一つの値を代入することです。例:MyVaraible=0;
宣言と同じ行で変数の初期化をすることもできます。 例:int MyVaraible=0;
そして、変数の宣言をある場所でして、初期化を他の場所で宣言することもできます。このように。
int MyVaraible
...
...
MyVaraible=5;
それでも、宣言は初期化の前に行わなければならないということは忘れないでください。
宣言の有効範囲
変数の有効範囲には二つの種類があります。 ローカル(局部)とグローバル(全体)です。
有効範囲の意味は、どの部分のコードが、変数を感知し、使用することができることというものです。
ローカル変数は、変数が宣言された外の世界は見られないものになっています。たとえば、関数の中で宣言された変数は、その関数ブロックのコードの一部になります。そして、コードのループや分岐ブロックのコードの中で宣言された変数はそれらのブロックの一部になり、外からはその変数を使うことはできません。
例えば、
double my_func(double a,double b,double c)
{
int d;
return(a*b+c);
}
d=10 ←こういうことはできません。
上記の例では、変数a,b,c,dはローカル変数になります。そしてそれは、関数ブロック(大括弧 { } の中に入っているものをブロックと呼びます)のコードの中でのみ使うことができます。そして、外のコードによって使われることはできません。ですので、上述のように、私たちは関数の後にd=10;等のような文を書くことはできません。なぜなら、関数の次の行からは、関数の外の存在になるので、dの変数を見ることができないからです。
第二の有効範囲はグローバル変数です。グローバル変数は、どのブロックコードにも属さず、ブロックコードの外側で宣言されたもので、あなたのコードのすべての場所から見られることができます。
例
int Global_Variable;
double my_func(double a,double b, double c)
{
return(a*b+c+Global_variable);
}
ここでは、Gloval_Variable変数が関数の外側で宣言されていますので、プログラムの中のすべての関数によって使われることができます。
グローバル変数は、もしあなたが初期値を設定しなければ、自動的にゼロにセットされます。
Extern変数(外部変数)
externキーワードは特別な種類の関数の宣言のために使われます。このような関数は、プログラムデータを入力するのを決める時に使われます。そして外部変数はエキスパートアドバイザーやカスタムインディケーターのプロパティから値を指定することができます。
例
extern color Indicater_color=C'0x00,0x00,0xff'; //青
int init()
{
...
}
ここにIndicator_color変数がextern変数として定義されました。これはあなたが最初に見るときは自分のインディケーター(もしくはEA)をメタトレーダーチャートに貼り付ける時になります。貴方はプロパティシートウィンドウで変えることができます。 これをみてください。

これらの
%K_period,%D
period,Slowing,
price_field,
移動平均の種別,
下限設定,
上限設定変数が、externキーワードを使って定められた変数になります。ですのでプロパティーシートに現われました。
貴方の作るプログラムで変更可能な変数をつくりたいと思いましたら、extern変数を使えばどれでも可能です。
楽しんでいただけましたでしょうか。
それでは。
Coders'Guru
メタバイザーによる補足説明
今回の講義は大変分りやすかったので特に解説するところは無さそうだ。
何か質問があれば、メタバイザーの放課後まで遊びに来てほしい。
人気ブログランキングに参加している。

もしよろしければ応援してほしい。どうもありがとう。
ちなみにブログをやっているメタトレーダー仲間は
から見ることができる。
最後までお読み頂いたことに感謝する。
今回の講義が終われば、残す基礎知識はプロパリティー一つとなりました!
あと少しなので気合いをいれて頑張りましょう!
この文章はCodersGuruさんのMQL4Lesson4の訳文です。(翻訳しての転載に本人の許可はとってあります)
メタトレーダー講座
Coders'guru
www.forex-tsd.com
-8-
変数
MQL4変数の講義へようこそ。
前回の講義は楽しんでいただけましたでしょうか。そしてあなたが変数の難関に立ち向かう準備ができていることを祈ります。
変数は大変難関な講義内容になりますので、データタイプの記事を復習しておくことをお勧めします。
それでは変数を楽しみましょう。
変数って何?
以前にこの秘密をあなたにお話したように、変数とは、データを保存すべき記憶貯蔵庫の場所はどれかを指定する行為の名称です。
このことが鮮明にわかる助けになるように、記憶貯蔵庫は一連のサイズの違う箱であるとイメージしてください。箱の大きさは記憶容量単位(バイト)が要求する記憶貯蔵庫収容空間の大きさです。
・データを貯める箱を使うために、その箱は名前をつけられなくてはなりません。この過程を、
declaration(宣言)といいます。
・宣言の過程において、あなたはコンピューターにどのような種類か、そしてどのようなサイズ
の箱が使いたいかを知らせる言葉を使わなくてはなりません。そのコンピューターに伝える
言葉をキーワードといいます。キーワードを使って宣言してるわけですね。
・もしあなたが情報の種類と関係がある意義のある名称を箱につけたなら、そのデータをより
簡単に見つけられるようになります。その箱につけた名称のことを変数名(識別子とほぼ同
義)といいます。
・データは、箱にいれられるときに、振り分けられながら箱にいれられます。
・あなたが作った箱に価値を付けたとき、同じ行であなたは計量値を宣言しています。この過
程を(変数生成時に指定された値である初期値を格納することになるので)initialization(初
期化)といいます
私たちが変数を作るとき、私たちの変数に、特定の記憶貯蔵庫の長さ(大きさ)を割り振ってほしいとコンピューターに告げています。文字列や、簡単な数字、文章、大きな数字は同じ記憶貯蔵庫の場所に入れておくことができないので、コンピューターはどのような種類のデータで、どのくらいの長さのデータなのだと私たちに聞くわけです。これがデータタイプの意味です。
例えば、もし私たちがこのコード文をコンピューターに言う時、
int MyVaraible=0;
これは、私たちはコンピューターに4バイトの長さの単位を私たちのつけた変数名称であるMy Variableに与えてくれと頼んでいるわけです。
いま使用した例を使って説明すると
int ←キーワード
int ←Integer data type
int ←Declaration(宣言)
MyVaraible←変数名
=0←初期化
MQL4で、これらはデータタイプの種類です。
・Integer(int) 整数
・Boolean(bool)論理型
・Character(char)文字
・String(string)文字列
・Floating-point number(double) 浮動小数点数(小数点が動くので少数と整数に対応)
・Datetime(datetime)
以前のデータタイプ講義の中から数行コピーしておきました。復習になりましたでしょうか。
さて、今から変数をどのように宣言するかについてから始めましょう。
宣言
変数の宣言の意味は、その世界への紹介と、変数タイプの指定です。宣言は、あなたがデータタイプで学んだキーワード(int,double,char,bool,string,color and datetime)と、あなたがその変数のために選んだ名前を使うことによって行います。
例
int MyVaraible;
今あなたはMyVaraibleと名付けた整数タイプの変数を宣言しました。そして宣言する前に、MyVaraibleをあなたのコードに使うことはできません。もしも宣言なしで使用すれば、MQL4コンパイラは不平を漏らし、あなたに'MyVaraible'-varaible not defind.1 error(s),0 warning(s)とこのようなことを言うでしょう。
初期化
変数の初期化の役割は、ある一つの値を代入することです。例:MyVaraible=0;
宣言と同じ行で変数の初期化をすることもできます。 例:int MyVaraible=0;
そして、変数の宣言をある場所でして、初期化を他の場所で宣言することもできます。このように。
int MyVaraible
...
...
MyVaraible=5;
それでも、宣言は初期化の前に行わなければならないということは忘れないでください。
宣言の有効範囲
変数の有効範囲には二つの種類があります。 ローカル(局部)とグローバル(全体)です。
有効範囲の意味は、どの部分のコードが、変数を感知し、使用することができることというものです。
ローカル変数は、変数が宣言された外の世界は見られないものになっています。たとえば、関数の中で宣言された変数は、その関数ブロックのコードの一部になります。そして、コードのループや分岐ブロックのコードの中で宣言された変数はそれらのブロックの一部になり、外からはその変数を使うことはできません。
例えば、
double my_func(double a,double b,double c)
{
int d;
return(a*b+c);
}
d=10 ←こういうことはできません。
上記の例では、変数a,b,c,dはローカル変数になります。そしてそれは、関数ブロック(大括弧 { } の中に入っているものをブロックと呼びます)のコードの中でのみ使うことができます。そして、外のコードによって使われることはできません。ですので、上述のように、私たちは関数の後にd=10;等のような文を書くことはできません。なぜなら、関数の次の行からは、関数の外の存在になるので、dの変数を見ることができないからです。
第二の有効範囲はグローバル変数です。グローバル変数は、どのブロックコードにも属さず、ブロックコードの外側で宣言されたもので、あなたのコードのすべての場所から見られることができます。
例
int Global_Variable;
double my_func(double a,double b, double c)
{
return(a*b+c+Global_variable);
}
ここでは、Gloval_Variable変数が関数の外側で宣言されていますので、プログラムの中のすべての関数によって使われることができます。
グローバル変数は、もしあなたが初期値を設定しなければ、自動的にゼロにセットされます。
Extern変数(外部変数)
externキーワードは特別な種類の関数の宣言のために使われます。このような関数は、プログラムデータを入力するのを決める時に使われます。そして外部変数はエキスパートアドバイザーやカスタムインディケーターのプロパティから値を指定することができます。
例
extern color Indicater_color=C'0x00,0x00,0xff'; //青
int init()
{
...
}
ここにIndicator_color変数がextern変数として定義されました。これはあなたが最初に見るときは自分のインディケーター(もしくはEA)をメタトレーダーチャートに貼り付ける時になります。貴方はプロパティシートウィンドウで変えることができます。 これをみてください。

これらの
%K_period,%D
period,Slowing,
price_field,
移動平均の種別,
下限設定,
上限設定変数が、externキーワードを使って定められた変数になります。ですのでプロパティーシートに現われました。
貴方の作るプログラムで変更可能な変数をつくりたいと思いましたら、extern変数を使えばどれでも可能です。
楽しんでいただけましたでしょうか。
それでは。
Coders'Guru
メタバイザーによる補足説明
今回の講義は大変分りやすかったので特に解説するところは無さそうだ。
何か質問があれば、メタバイザーの放課後まで遊びに来てほしい。
人気ブログランキングに参加している。

もしよろしければ応援してほしい。どうもありがとう。
ちなみにブログをやっているメタトレーダー仲間は

最後までお読み頂いたことに感謝する。