🔰 はじめに|if文=「もし~なら~する」から始めよう
今回は、FX自動売買EAを自作したいプログラミング初心者向けに、「if文(条件分岐)」の基本をわかりやすく解説します。
「もし◯◯なら〜して、そうでなければ〜する」といった指示をプログラムに伝えるのがif文の役割です。
日常の例えや実際のソースコードを交えて、読む力・書く力の両方を身につけましょう!
🔗 前回の記事:
▶ 超初心者向けEAプログラミング入門②|EAの基本構造と作り方
🧠 if文とは?|日常会話で理解する「条件分岐」
● 例え話:「パスタがあればパスタで、なければカレーで」
if(パスタがあれば)
{
パスタ買って
}
else{
カレー買って
}
このように、「条件に応じて違う行動をとる」仕組みをif文と呼びます。
FXの世界でも、
- 「レートが前回高値より上がったら買い」
- 「下がったら売り」
といった判断を自動化するために、if文を使います。
💻 プログラムで書くとこうなる
if(Ask < High[1])
{
Comment("↓:", Ask);
}
else{
Comment("↑:", Ask);
}
Ask
:現在の買値High[1]
:1本前のローソク足の高値Comment
:チャート上に文字表示する命令
このコードでは、「現在の買値が前回の高値より低ければ↓マーク、それ以外なら↑マーク」をチャート上に表示します。
💡「<」は“より小さい”という演算子です。次回の記事で詳しく解説します。
🛠 if文のバリエーション
1. if だけ(条件を満たす時だけ処理)
if(Ask < High[1])
{
Comment("↓:", Ask);
}
// 条件に合わない場合は何もしない
まず、if文でこの(elseを書かない)書き方ができます。
if + else(どちらかを選択)
if(Ask < High[1])
{
Comment("↓:", Ask);
}
else
{
Comment("↑:", Ask);
}
この書き方が一番オーソドックスな書き方です。プログラミング初心者のうちはこの書き方を心がけましょう!
if + else if + else(複数の選択肢)
if(パスタがあれば)
{
パスタ買って
}
else if(カレーがあれば)
{
カレー買って
}
else
{
何も買わなくていい
}
パスタ以外に他に条件をつけ足したい場合、else ifを使います。この場合、パスタが無ければカレーを、カレーもなければ友達は何も買ってきません。
さらに、else ifの応用です。
if(パスタがあれば) { パスタ買って } else { if(カレーがあれば) { カレー買って } else { 何も買わなくていい } }
この書き方、実は先ほどのelse ifと全く同じ結果になります。パスタが無ければカレーを、カレーもなければ友達は何も買ってきません。
※この書き方でも、else if でもどちらでも使いやすいほうを使って頂いてかまいません(最初はこっちの方がわかりやすいかも)
⚠️ if文のネストに注意しよう
if文の中にさらにif文を書いていくと、**「ネストが深くなる」**と言います。
以下のようにif文の中にどんどんif文を書いていくと、非常に分かり辛いソースコードになりプログラマーには嫌われます。
if(パスタがあれば) { パスタ買って } else { if(カレーがあれば) { カレー買って } else { if(おにぎりがあれば) { おにぎり買って } else { if(カップラーメンがあれば) { カップラーメン買って } else { 何も買わなくていい } } } }
このようにifが入れ子状に増えすぎると、読みにくくてバグの温床になります。
可能なら else if
を使って整理しましょう。
🧪 実践:MT4でのif文の使い方
さて、if文の説明はこれぐらいにして実際にFXに沿ったソースコードを書いてみましょう。書く場所は、前回説明した 「OnTick()」の34行目です。前回書いた「Comment」は一旦削除して(34行目)に以下の文を書いてみてください。 ※今回は記号が多いので1行ずつコピー&ペーストでもOKです
31行目:void OnTick() 32行目: { 33行目://--- 34行目: if(Ask < High[1]) 35行目: { 36行目: Comment("↓:",Ask); 37行目: } 38行目: else 39行目: { 40行目: Comment("↑:",Ask); 41行目: } 42行目: }
以下の点に注意してください。
- 半角英数で書いていること
- 先頭にスペースを入れる場合は半角スペースであること
- 最後に;があること(ifとelseと{と}には無い事)
- High、Ask、Commentの先頭が大文字であること
これは、もし(if)現在の買値(Ask)が前回バー(ローソク)の最高値(High[1])よりも小さかった場合は「↓:買値」を表示する。それ以外(else)の場合は「↑:買値」を表示するというソースコードになります。前回バーというのは現在ローソク足の1個前のローソク足です。
※2個前のバーの最高値と比べたい場合はHigh[2]となります

現在の買値の方が 前回ローソク足の最高値より低かったら↓矢印と買値が表示され、それ以外の場合は↑矢印と買値が表示されます。要は、現在の値段が前回のローソク足の最高値よりも高い状態の場合↑が表示されて、低い場合は↓が表示されるというプログラムになります。
では実例を踏まえてもう少し詳しく説明します。 値段は凄い大雑把ですが、例えば現在の買値が100円で1個前のローソク足の最高値が101円の場合はどうでしょうか。この場合、黄色マーカーの部分だけがプログラムとして実行されて、赤色マーカーの部分はスキップされます。
34行目: if(Ask < High[1]) 35行目: { 36行目: Comment("↓:",Ask); 37行目: } 38行目: else 39行目: { 40行目: Comment("↑:",Ask); 41行目: }
よって、 「↓:買値」 という文字が出るんですね。
次は、現在の買値が100円で1個前のローソク足の最高値が99円の場合はどうでしょうか。この場合は逆に、黄色マーカーの部分はスキップされて、赤色マーカーの部分だけがプログラムとして実行されます。
よって、 「↑:買値」という文字が出るんですね。
では、現在の買値が100円で1個前のローソク足の最高値が100円の場合はどうでしょうか。この場合は、黄色マーカーの部分はスキップされて、赤色マーカーの部分だけがプログラムとして実行されます。「Ask < High[1]」の「<」は「より小さい」という意味なので、値が同じ場合はelse側が実行されるという形です。
ちなみに「<」のことをプログラム用語で「演算子」と言います。演算子は「<」の他にもあります。
✅ まとめ:if文を理解すればEA作成の幅が一気に広がる!
お疲れ様でした。これがif文を使った読み書き(条件分岐)になります。
- if文は「条件によって処理を変える」ための基本構文
- else や else if を使って分岐の数を増やせる
- ネストを深くしすぎず、読みやすいコードを意識しよう
- 実際にMT4で動かして体感するのが理解の近道!
if文をマスターするとプログラミングでやりたい事が飛躍的に実現可能になります。ただ、if文をマスターするには先ほどにもありました通りセットで演算子を覚える必要があります。
▶ 次回予告
次は、if文の理解に欠かせない**「演算子(<, >, == など)」**について解説します!
コメント