はじめに
ここではEAプログラミング未経験者や超初心者といった方向けに、if文等で使う演算子について解説していきます。
殆どの演算子は算数で学ぶものなので、わりと簡単な章だと思います。
演算子を理解すると、if文で条件分岐できる幅が広がるので頑張って覚えて行きましょう!
前回の記事
前回は、if文について学びました。まだの方は是非こちらもご確認下さい。
演算子を学ぶ
前回、if文について記載しましたがif文はセットで必ず演算子を覚える必要があります。 小学校?か中学校で学ぶ大なり(>)・小なり(<)と全く一緒というかそのものです。
MQL4の基本的な演算子の種類はこれだけあります。
演算子 | 例 | 内容 |
---|---|---|
< | a < b | aがbより小さい場合 |
> | a > b | aがbより大きい場合 |
<= | a <= b | bがa以上の場合 |
>= | a >= b | bがa以下の場合 |
== | a == b | aとbが等しい場合 |
!= | a != b | aとbが等しくない場合 |
よく間違えるのは、『==』イコールイコールで等しい時という所です。
- a==b で「aとbが等しい場合」
- a=b で「bの値をaにセット」
と全く違う意味になるので注意しましょう!
演算子を使いこなそう
前回、「<」を使いましたがその部分を「>=」等に書き換えることによって動きが変わってきます。では、実際に前回のソースコードで動きを確認してみましょう。「<」だった所を、「>=」に変えました。
34行目: if(Ask >= High[1]) 35行目: { 36行目: Comment("↓:",Ask); 37行目: } 38行目: else 39行目: { 40行目: Comment("↑:",Ask); 41行目: }
この状態で、 前回の例を踏まえてどのマーカー色の部分が実行されるかを考えてみましょう。正解はこうなります。
- Askが100円でHigh[1]が101円の場合・・・「赤マーカー」部分が実行される
- Askが100円でHigh[1]が99円の場合・・・「黄マーカー 」部分が実行される
- Askが100円でHigh[1]が100円の場合・・・「黄マーカー 」部分が実行される
プログラムとして実行される場所はちゃんとわかりましたでしょうか。3については「>=」とイコールがあるため100円が含まれます。
この要領で、「==」もやってみましょう。
34行目: if(Ask == High[1]) 35行目: { 36行目: Comment("↓:",Ask); 37行目: } 38行目: else 39行目: { 40行目: Comment("↑:",Ask); 41行目: }
- Askが100円でHigh[1]が101円の場合・・・「赤マーカー」部分が実行される
- Askが100円でHigh[1]が99円の場合・・・「赤マーカー 」部分が実行される
- Askが100円でHigh[1]が100円の場合・・・「黄マーカー 」部分が実行される
AskとHigh[1]が同じ値の時だけ黄色マーカーの部分がプログラムとして実行され、それ以外は全て赤マーカーの部分が実行されるということになります。
※注意点として、==と書かずに=と書いてしまう事が良くありますがこれは誤りです。等しいという際は必ず==と書くようにしましょう。
最後に
演算子については、シンプルにこんな感じで説明を終わります。
演算子を使い分けることで、if文で様々な判断を行う事が可能になります。EAにおいて、if文と演算子は必須ですので必ず覚えるようにしましょう。
大きい場合、小さい場合、等しい場合という最悪3パターンの演算子さえ覚えていればたいていの処理は実現できちゃいます。
※等しくない場合「!=」は、要するに「==」のelse側なのであまり書かなくてよかったりします
次回、入門⑤ではプログラミングの整理には欠かせない変数について書いています。
コメント
はじめまして。教えていただいことがありまして。こちらから失礼致します。買いのエントリーしていて、売りのエントリー条件が出たら損切というはどうしたらよろしいでしょうか??
はじめまして、菊地さん!
『買いのエントリーしていて、売りのエントリー条件が出たら損切したい』
という内容ですね。売りエントリー条件が出たら以下のようなif文を入れるとOKだと思いますがわかりますでしょうか?
if(OrderTotal() > 0 && OrderType()==OP_BUY){
ポジション決済
}else{
売りエントリー
}
この場合、以下のような感じになります。
・ロングポジションがある → ロングポジション決済
・ポジションがない → ショートエントリー
・ショートポジションがある → ショートエントリー
ご親切に有り難うございます。
勉強になります。
関数が長くなりすぎて…
損切りは全部固定ピプスで書いていたのですが全部書き直しでしょうか??
固定ピプスはそのままでOKですよ。
お問合せからソースコード送って頂ければ修正方法を具体的に教えられると思います。