EA(自動売買)の条件分岐に欠かせないのが演算子(比較記号)です。
「>」「<」「==」といった記号は、if文の“判断基準”として必ず使われる重要要素です。
📘 この記事でわかること
- 演算子(<, >, ==, != など)の基本的な意味
- if文と演算子の組み合わせ方
- よくあるミス(= と == の違い)
本記事はEAプログラミング入門シリーズ「STEP4」です。
STEP3で if文の仕組みを理解したら、次は条件の“ルール”を決める演算子を覚えていきましょう。
🧩 EAプログラミング入門シリーズ(超初心者向け)
ではまず、if文に欠かせない「演算子」の基本から整理していきましょう。
演算子を学ぶ
前回の記事で紹介したif文は、演算子がセットで使われます。
たとえば「a < b」は「aはbより小さい」という意味。
小学校や中学校で習った記号そのままなので、すぐイメージできますよね。
以下がMQL4でよく使う基本の演算子一覧です。
| 演算子 | 例 | 意味 |
|---|---|---|
< | a < b | aがbより小さい |
> | a > b | aがbより大きい |
<= | a <= b | aがb以下 |
>= | a >= b | aがb以上 |
== | a == b | aとbが等しい |
!= | a != b | aとbが等しくない |
特に注意したいのが == の使い方です。
プログラミングで「等しい」を表すのは == で、= は「代入」を意味します。
例えば
a == b→ 「aとbは等しいか?」の判断a = b→ 「bの値をaにセットする」操作
まったく別の意味なので間違えないようにしましょう。
演算子を使いこなそう
では実際に、前回のif文のソースコードの演算子を変えて動きを見てみましょう。
if (Ask >= High[1]) {
Comment("↓:", Ask);
} else {
Comment("↑:", Ask);
}
- Askが100円でHigh[1]が101円の場合 → 「↑」が表示される(else部分)
- Askが100円でHigh[1]が99円の場合 → 「↓」が表示される(if部分)
- Askが100円でHigh[1]が100円の場合 → 「↓」が表示される(if部分)
>= には「イコール(=)」も含まれるため、値が同じ場合もifが実行されます。
次に == の例も試してみましょう。
if (Ask == High[1]) {
Comment("↓:", Ask);
} else {
Comment("↑:", Ask);
}
- Askが100円でHigh[1]が101円の場合 → 「↑」が表示される
- Askが100円でHigh[1]が99円の場合 → 「↑」が表示される
- Askが100円でHigh[1]が100円の場合 → 「↓」が表示される
== は「等しい場合だけ」という条件になるので、値がピッタリ同じ時だけifが実行されます。
✅ まとめ|演算子を味方にしてEAの判断力をアップ!
今回のポイントはこれだけ!
- 演算子は条件のルールを表す記号
>,<,>=,<=,==,!=がよく使う基本演算子- 特に「==」と「=」は意味が違うので注意!
- 演算子を使い分けることでif文での条件判断が広がる
- EA開発にはif文と演算子はセットで必須
演算子を覚えれば、EAが「こう動いてほしい!」という細かい条件を自由に設定できるようになります。
まずは大きい・小さい・等しいの3つの基本演算子をしっかり使えるようにしましょう。
▶ 次回予告
次回は「変数」について解説します。
プログラムの情報を入れる箱を理解して、もっと自由にデータを扱っていきましょう!
🧩 EAプログラミング入門シリーズ(超初心者向け)
- STEP0:EAとは?仕組みとプログラムの基礎
- STEP1:MT4の基本ソースコードを理解する
- STEP2:実際にコードを書いて動かす
- STEP3:if文の仕組みを理解する
- STEP4:演算子で条件分岐を強化する
- STEP5:変数の基礎を理解する
- STEP6:関数でコードを整理する
- STEP7:OrderSendとOrdersTotalの基礎
- STEP8:移動平均線でエントリーする方法












コメント
はじめまして。教えていただいことがありまして。こちらから失礼致します。買いのエントリーしていて、売りのエントリー条件が出たら損切というはどうしたらよろしいでしょうか??
はじめまして、菊地さん!
『買いのエントリーしていて、売りのエントリー条件が出たら損切したい』
という内容ですね。売りエントリー条件が出たら以下のようなif文を入れるとOKだと思いますがわかりますでしょうか?
if(OrderTotal() > 0 && OrderType()==OP_BUY){
ポジション決済
}else{
売りエントリー
}
この場合、以下のような感じになります。
・ロングポジションがある → ロングポジション決済
・ポジションがない → ショートエントリー
・ショートポジションがある → ショートエントリー
ご親切に有り難うございます。
勉強になります。
関数が長くなりすぎて…
損切りは全部固定ピプスで書いていたのですが全部書き直しでしょうか??
固定ピプスはそのままでOKですよ。
お問合せからソースコード送って頂ければ修正方法を具体的に教えられると思います。