MetaTraderでFX自動売買研究所
4. よく使う演算子
前の章では、MetaEditorに限らず、プログラミングにおいて重要な概念である「変数」について説明しました。そこでこの章では、実際にそんな変数を使ってプログラミングする際に必ず必要な、「演算子」について解説します。
なんだかものすごく難しく聞こえる「演算子」という言葉ですが、何のことはありません。数学で言うところの「+」や「÷」といった記号を、プログラム中で表現するだけです。
1. 代数演算子
代数演算子はその名のとおり、基本的に加減乗除の計算を表すものです。それぞれ次のように表されます。
- int number = 3 + 4; // [加法]numberは7になります
- int number = 3 - 4; // [減法]numberは-1になります
- int number = 3 * 4; // [乗法]numberは12になります
- double number = 3 / 4; // [除法]numberは0.75になります
4行目の変数numberの型が、double(小数)になっていることに気をつけてください。
次に、プログラミングでよく使われる代数演算子を紹介します。
一つ目は"%"です。"a % b"は、「aをbで割った余り」を表します。(数学的にはa (mod b)と合同な正整数のうち、最小のものです)
二つ目は厳密には代数演算子ではないですが、"."です。これは2つの文字列をつなげるときに使われます。
- int number = 16 % 3; // numberは1になります
- string example = "It is " + "fine today."; // exampleは"It is fine today."となります
2. 条件分岐
投資プログラム(に限りませんが)を作っていると、ほぼ必ず登場するものが、条件分岐です。
たとえば「EURUSDが直前5時間の高値を上回ったら、ロングポジションを持つ」の、「たら」の部分が、条件分岐になっています。
このような条件分岐は、プログラム中では"if"を使って表します。
上の例を実際にMetaEditorのプログラムにしてみましょう。
- double max=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,5,1)];
- if(max < High[0]){
- OrderSend(Symbol(),OP_BUY,Lots,Ask,3,NULL,NULL,NULL,0,0,Blue);
- }
1行目では、変数maxに、直前5時間の高値を代入しています。
3行目では、変数maxと現在の高値を比較し、後者の値がより大きければ、4行目で注文が発注されます。
もちろん現時点で1行目と3行目の詳細はわからないと思いますが、条件分岐についてなんとなくご理解いただけたでしょうか?
3. 比較演算子
さて、上の例の3行目では、変数maxと現在の高値を比較しているわけですが、こういった比較を表す演算子を、比較演算子と呼びます。
論理演算子には、次のようなものがあります。
- a > b // aよりbが小さい
- a >= b // aよりbが小さいまたは等しい
- a < b // aよりbが大きい
- a <= b // aよりbが大きいまたは等しい
- a == b // aとbが等しい
- a != b // aとbとが等しくない
これらの演算子は、その性質上if()のカッコ内に記述されることが多いです。