メッシです。
前回はメタエディタの構成~コード入力のルールに関して説明しましたが、今回は変数を扱っていきたいと思います。
※前回の内容はこちらからどうぞ → 第2回 FX初心者でも作れるEA(自動売買)の自作方法とは?今さら聞けない基礎的なことから解説
難しい計算式などを何度も入力する必要がある場合、変数を使用することにより簡単に入力することができるようになりますよ。
ということで今回は、データ(値)の入れ物(箱)である変数に関して説明していきたいと思います。
変数とは?
変数とは箱のようなもので、式やデータ(値)など好きなものを入れることができます。
※イメージはこんな感じ
変数を使う際は、「この文字を変数として登録すしますよ」といった感じで始めに宣言しなければなりません。
宣言の例を見ていきましょう。
例えば int abc と入力すると、abc を変数として宣言したことになります。(※intというのは、変数を宣言する時に入力するワードです)
1 2 3 4 5 |
void OnTick() { int abc; } |
これでabcを変数として宣言したので、次からはこのabcを変数として利用することができるということになります。
変数に値や式を代入してみよう
変数に値や式を代入する際は、 = を使用します。
これは右辺を左辺に代入するという意味であって、プログラミングでは等しい(イコール)という意味ではありません。
次の例を見てみましょう。
1 2 3 4 5 6 7 |
void OnTick() { int abc; abc = 5; Print(abc); } |
abc=5とありますが、先ほど説明した通り abc と5が等しいという意味ではなく、5を abc に代入するという意味になります。
要するにこれは、変数 abc に5を代入し、5が代入された abc を Print で出力するということです。
コンパイルしてエラーがなければ、MT4の方を見てみましょう。
ナビゲータのエキスパートアドバイザからtestをドラッグ&ドロップでチャートに入れてみると、ターミナルに5が表示されているのがわかると思います。
次の例を見てみましょう。
先ほどは変数 abc に5を代入しましたが、今度は 2+3 を代入します。
1 2 3 4 5 6 7 8 |
void OnTick() { int abc; abc = 2+3; Print(abc); } |
コンパイルしてエラーが無ければ、ナビゲータのエキスパートアドバイザからtestをドラッグ&ドロップでチャートに入れてみると、ターミナルに先ほどと同様に5が表示されているのがわかると思います。
これは、2+3という数式で計算した答えをabcに代入しているので、先ほど5を代入した時と同じ結果になって同じ5が表示されるということです。
※
前回は、Hello Worldという文字を表示させるために Print(“Hello World”); といった感じで Hello World をダブルクォーテーションで挟みましたね。
しかし、今回の Print(abc); に関しては abc をダブルクォーテーションで挟んでいません。
なぜこのように違うのかというと、ダブルクォーテーションで挟むと文字列として認識されるため、変数扱いにならなくなってしまうからです。
要するに文字として表示する場合はダブルクォーテーションで挟み、変数として表示する場合はダブルクォーテーションで挟まないということを押さえておきましょう。
2つの値を出力してみよう
次の例を見てみましょう。
下のコードがどういうことを意味しているかわかるでしょうか?
1 2 3 4 5 6 7 8 |
void OnTick() { int abc; abc = 2+3+4; Print("2+3+4=",abc); } |
この入力が意味しているのは、
int abc; は、abcを変数として宣言
abc = 2+3+4; は、abcに2+3+4を代入
Print(“2+3+4=”, abc); は、2+3+4= の結果と abcに代入されたものを表示
ということになります。
()内に値や変数など2つのものを入力する場合、カンマ , で区切ることを忘れないようにしましょう。
コンパイルしてエラーが無いことを確認してMT4のターミナルを見てみると、以下の表示になっているはずです。
※Print(“2+3+4=”, abc); がいまいちわからない場合は、分けて考えるとわかりやすくなります。
Print(“2+3+4=”, abc); を細かく見ていくと、Print(“2+3+4=”); と Print(abc);に分けることができます。
Print(“2+3+4=”);は()内をダブルクオーテーションで挟んでいるので、文字列として扱われるため、そのまま2+3+4=が表示されるわけです。
一方の Print(abc); は、ダブルクォーテーションで挟んでいないため変数として扱われ、先ほど abc = 2+3+4; で 2+3+4 を代入しているので、2+3+4の結果が計算され、9が反映されてるということになります。
変数を宣言する時に扱うものによって頭に来る言葉が違う
変数を宣言する時に扱うものによって最初に入力する言葉が違います。
よく使う3つがあるので、紹介しておきましょう。
int → intは整数を扱う時に入力
double → double は小数点第一位までの数字扱う時に入力
bool → bool は true や falseを扱う時に入力(※trueやfalseに関しては別の機会に解説します)
例を見ていきましょう。
例えば先ほどは abc を変数として宣言する際に int を頭に入力しましたが、小数点の数字を変数として宣言する場合は、double を行の頭に入力することになります。
変数abcに 1.1+3.4 を代入する場合はどうなるのかというと、以下のように入力をします。
コンパイルして Print(“1.1+3.4=”, abc); の結果をMT4で見てみると、ターミナルには 1.1+3.4=4.5 と表示されていますね。
まとめ
abcを変数として宣言し、2+3 や 2+3+4 など簡単な数式を代入してきましたが、「こんな簡単な計算を代入してやる必要なくね?」と、こう思われる方も多いと思います。
確かに簡単な計算なので、変数を宣言して数式を代入している方が手間がかかっているように感じますね。
しかし、難しい計算式や複雑な計算式になった場合に、それをプログラミング上で何回も入力していくのは非常に大変な作業になります。
そうならないようにするために、最初からabcなどの簡単な変数に代入し、難しい計算式や複雑な計算式をいつでも簡単に呼び出せるようにしておきましょうということです。
More from my site

利益を上げ続けるために
逆算して身に付けていく3つのポイントとは?
Midas FX公式メルマガでは一つ一つポイントを絞ってわかりやすくお伝えしています
さらに「Trade Workbook」&「レンジブレイクアウト攻略法」で
より具体的なスキル(手法やマルチタイムフレーム分析力)を身に付けることが可能です
※「Trade Workbook」と「レンジブレイクアウト攻略法」は
メルマガ登録後すぐ手に入ります
Midas FX公式メルマガ登録【今なら無料】
この記事へのコメントはありません。