MetaTrader 4 プログラム入門編

MetaTrader 4 プログラム入門 part4 If文 複数の条件分岐



----------------------------------------------------------------

MetaTrader 4のバージョンアップにより仕様が変わってきた部分がありますので、 記事を新しい仕様で書き直しております。この注意書きが書かれていないページは 旧仕様の記事になります。旧仕様の記事でも一部を除き基本的にはシステムの制作に問題はありません。

----------------------------------------------------------------


 今回は前回に引き続きIf文の複数の条件分岐について説明します。


 前回よりも難しいと思いますが、少しずつ理解して行けばそこまで難しくはないので、頑張って下さい。


 では、前回と同じようにMetaEditorを起動して下さい。


 名前はifbunn2にして置いて下さい。


 まず前回と同じように、void OnTick()の真上に、下のコードを書いてください。



int aaa = 0;

 前回と同じく、真上ですので間違えないで下さい。


 次に、void OnTick()の中に次のコードを書いてください。


 今回は、分けると逆にややこしくなるので、一度に全部書きます。



if((aaa < 10 || aaa >20) && aaa <30)
{
  Print("aaa=0~9 or aaa=21~29 aaa=",a);
}
else if(aaa >= 10 && aaa <= 20)
{
  Print("aaa=10~20 aaa=",aaa);
}
else
{
  Print("aaa=30 aaa=",aaa);
  aaa=0;
}


aaa++;



 意味が分からないと思いますが、とりあえずこの通りに書いてください。


 書けましたか?


 では、少しずつ説明して行きます。


 まず、if((aaa < 10 || aaa >20) && aaa <30)ですが、基本的には前回やったIf文と同じです。


 ただ、条件分岐が複数になっただけです。


 ||がorで、&&がandです。


 日本語で訳すと次のようになります。


 もし、aaaが10未満、もしくはaaaが21以上(20は含まないので)で30未満の場合。


 こういう意味になります。


 この複数の条件分岐を使うことによって、より細かく条件を指定出来るようになります。


 また、細かく条件分岐をする場合は、||と&&がどれとどれを示しているのかややこしくなりますので、()で纏めると良いです。


 こうすると余計なミスがかなり減ります。


 Print()は、分かり易いように内容を書いてます。


 次に、else if(aaa >= 10 && aaa <= 20)です。


 一度、Ifを使った後にelseを使うと、前に使ったIf以外という意味を付ける事が出来ます。


 日本語にすると次のような意味になります。


 前のIf以外で、もしaaaが10以上で、20以下だった場合。


 このような意味になります。


 最後のelseですが、単体で書くと今までのIf以外の条件という意味になります。


 今回は、aaaが30以上の場合という意味です。


 aaaが30以上だった場合、Print()をした後、aaaを0にしています。


 
 その後、If文の後で、時間足が変わるたびにaaaに+1しています。


 今回のプログラミングはこれで終了です。


 今回は使いませんでしたが、If文は他に入り子式に使うことも出来ます。


if(aaa >= 10)
{
  if(aaa <= 20)
  {

  }
}


 これで、aaaが10以上で20以下の場合という条件が出来ます。


 if(aaa >= 10 && aaa <= 20)でも意味は同じですが、入り子式にすると10以上の場合に何か処理をしてから、10以上で20以下の場合の処理もすることが出来ます。


 よく分からない人は、使って行く内になんとなく使い方が分かってきますので、こういうやり方もあると覚えて置いてください。



 では、最後にまとめて書きます。








int aaa=0;
void OnTick()
{

 if((aaa < 10 || aaa >20) && aaa <30)
 {
   Print("aaa=0~9 or aaa=21~29 aaa=",aaa);
 }
 else if(aaa >= 10 && aaa <= 20)
 {
   Print("aaa=10~20 aaa=",aaa);
 }
 else
 {
   Print("aaa=30 aaa=",aaa);
   aaa=0;
 }


 aaa++;

}



 今回のプログラムは、aaaの値によってコメントを変えて行き、時間足が更新する度にaaaに+1をして、aaaが30以上になったら0に戻すというものです。


 では、いつもと同じようにコンパイルのボタンを押してください。


 エラーが出てきた場合は、半角になっているか、;を付け忘れていないか、{}を付け忘れていないか、{}の数は合っているかを確認して下さい。


 特に、今回はIf文を多く使ったので、{}をよくチェックして下さい。


 一応エラーが出た場合は、下のほうのDescriptionの所にエラー内容が書いてます。


 エラーが出なかったら、MetaTrader 4のバックテストでifbunn2を選んで、スタートして下さい。


 終わったら、操作履歴をみて下さい。




操作履歴




 メッセージの一番右端に、条件分岐によってaaaのコメントが書かれていて、その後にaaaの値が書いてますね。


 今回はこれで終了です。


 多分、プログラム初心者の方には分かり辛かったと思います。


 If文が難しいと思った方は、紙にフローチャートを作ると良いと思います。



 条件1 Yes→
     No→


 こんな感じのものです。


 作業量は増えますが、途中で分からなくなることは少なくなります。



 次回は、for文というものを説明して行きます。



----------------------------------注意---------------------------------

 このサイトは半角のスペースが認識されない為、コードを見易くするために全角で書いている場合があります。実際にプログラムにコードを書くときは、コピー&ペーストせずに半角で書いて行って下さい。

<< If文 | TOP | for文 >>

トップページ プロフィール ブログ リンク オーダーシステム 利用規約 問い合わせ