超初心者向けEAプログラミング入門④

EA
スポンサーリンク

ここではEAプログラミング未経験者や超初心者といった方向けに、if文等で使う演算子について説明します。

※if文って何?という方はこちら

演算子

入門③にて、if文について記載しましたがif文はセットで必ず演算子を覚える必要があります。 小学校?か中学校で学ぶ大なり(>)・小なり(<)と全く一緒というかそのものです。

MQL4の基本的な演算子の種類はこれだけあります。

演算子内容
< a < b aがbより小さい場合
> a > b aがbより大きい場合
<= a <= b aがb以上の場合
>= a >= b aがb以下の場合
== a == baとbが等しい場合
!= a != b aとbが等しくない場合

前回、「<」を使いましたがその部分を「>=」等に書き換えることによって動きが変わってきます。では、実際に前回のソースコードで動きを確認してみましょう。「<」だった所を、「>=」に変えました。

34行目:   if(Ask >= High[1])
35行目:   {
36行目:      Comment("↓:",Ask);
37行目:   }
38行目:   else
39行目:   {
40行目:      Comment("↑:",Ask); 
41行目:   }

この状態で、 前回の例を踏まえてどのマーカー色の部分が実行されるかを考えてみましょう。正解はこうなります。

  1. Askが100円でHigh[1]が101円の場合・・・「赤マーカー」部分が実行される
  2. Askが100円でHigh[1]が99円の場合・・・「黄マーカー 」部分が実行される
  3. Askが100円でHigh[1]が100円の場合・・・「黄マーカー 」部分が実行される

プログラムとして実行される場所はちゃんとわかりましたでしょうか。3については「>=」とイコールがあるため100円が含まれます。

この要領で、「==」もやってみましょう。

34行目:   if(Ask == High[1])
35行目:   {
36行目:      Comment("↓:",Ask);
37行目:   }
38行目:   else
39行目:   {
40行目:      Comment("↑:",Ask); 
41行目:   }
  1. Askが100円でHigh[1]が101円の場合・・・「赤マーカー」部分が実行される
  2. Askが100円でHigh[1]が99円の場合・・・「赤マーカー 」部分が実行される
  3. Askが100円でHigh[1]が100円の場合・・・「黄マーカー 」部分が実行される

AskとHigh[1]が同じ値の時だけ黄色マーカーの部分がプログラムとして実行され、それ以外は全て赤マーカーの部分が実行されるということになります。

※注意点として、==と書かずに=と書いてしまう事が良くありますがこれは誤りです。等しいという際は必ず==と書くようにしましょう。

最後に

演算子については、シンプルにこんな感じで説明を終わります。

演算子を使い分けることで、if文で様々な判断を行う事が可能になります。EAにおいて、if文と演算子は必須ですので必ず覚えるようにしましょう。

大きい場合、小さい場合、等しい場合という最悪3パターンの演算子さえ覚えていればたいていの処理は実現できちゃいます。
※等しくない場合「!=」は、要するに「==」のelse側なのであまり書かなくてよかったりします

次回、入門⑤ではプログラミングの整理には欠かせない変数について書いています。

コメント

  1. 菊地 より:

    はじめまして。教えていただいことがありまして。こちらから失礼致します。買いのエントリーしていて、売りのエントリー条件が出たら損切というはどうしたらよろしいでしょうか??

  2. りょう りょう より:

    はじめまして、菊地さん!

    『買いのエントリーしていて、売りのエントリー条件が出たら損切したい』
    という内容ですね。売りエントリー条件が出たら以下のようなif文を入れるとOKだと思いますがわかりますでしょうか?

    if(OrderTotal() > 0 && OrderType()==OP_BUY){
     ポジション決済
    }else{
     売りエントリー
    }

    この場合、以下のような感じになります。
    ・ロングポジションがある → ロングポジション決済
    ・ポジションがない → ショートエントリー
    ・ショートポジションがある → ショートエントリー

  3. 菊地 より:

    ご親切に有り難うございます。
    勉強になります。
    関数が長くなりすぎて…
    損切りは全部固定ピプスで書いていたのですが全部書き直しでしょうか??

タイトルとURLをコピーしました