« プログラムの作成 練習2-3 条件分岐 | メイン | あけましておめでとうございます »
プログラムの作成 練習2-4 繰り返しフォー
次は繰り返し処理を行なう方法です。
"Hello"と10回表示させたい時、
Print("Hello"); を10回書いてもいいですが、このようにfor()を使うと楽にできます。
int i;
for(i=0; i<10; i++){
Print("Hello"); // *
}
*の行が10回繰り返し実行されます。
for(i=0; i<10; i++){ ~ } を翻訳(?)すると、
「①始めに i=0をセットします。そしてi<10なら、{}の処理を行いなさい。
②{}の処理が終わったら、i++(iを1増やす)を行ない、
③それでも i<10なら{}の処理を行いなさい。
(以下、②③のくりかえし)
」
こんな感じです。
最初は、i=0なので i<10 ( 0<10 )となり、*のPrint文が実行されます。
それが終わったところで、i++ で iが1になりますが、それでも i<10 ( 1<10 )なので、*のPrint文が実行されます。
そして、i=2、3、4・・・と繰り返していって、iが9の時、*のPrint文を実行したあと最初に戻り、
i++をすると、iは10になります。
i=10だと i<10 の条件を満たさなくなるので、forの処理は終了です。
つまり、i=0からi=9まで合計10回、処理が行なわれるわけです。
この実行結果を見ると分かりやすいと思います。
int i;
Print("forの前");
for(i=0;i<10;i++){
Print("Hello i="+i);
}
Print("forの後");
結果は、
「forの前」
「Hello i=0」
「Hello i=1」
・・・
「Hello i=9」
「forの後」
となります。
for( ) は入れ子式にすることもできます。
int I,J;
for(I=0; I<10; I++){
for(J=0; J<10; J++){
Print("I="+I+ ",J="+J);
}
}
Print("end");
結果は、
I=0,J=0
I=0,J=1
・・・
I=0,J=8
I=0,J=9
I=1,J=0
I=1,J=1
・・・
I=1,J=9
I=2,J=0
・・・
・・・
I=9,J=9
end
応用として、
このようにするとティック更新の度に、直近10足分の始値が出力されます。
int start(){
int i;
for(i=0; i<10; i++){
Print("Open["+i+"]="+ Open[i]);
}
}
結果は
Open[0]=114.40
Open[1]=114.23
Open[2]=114.30
...
Open[9]=114.89
Open[ ]はMT4に備わっている機能で、指定した本数分 前の足の始値を得るものです。
Open[0]は現在の足、Open[1]なら一つ前の足の始値になります。
上の例だと新しいものから順に出力されますが、古い順に出力したい場合には、
Print("Open["+i+"]="+ Open[i]);
のiを下のように(9-i)に変えます。
Print("Open["+(9-i)+"]="+ Open[9-i]);
もしくは、
int start(){
int i;
for(i=9; i>-1; i--){
Print("Open["+i+"]="+ Open[i]);
}
}
のように、繰り返しのたびにiを減らしていくように、for文を変更するといいでしょう。
( i=9,8,7,,,1,0 と変化していきます)
結果
Open[9]=114.89
Open[8]=114.80
Open[7]=114.20
...
Open[0]=114.40
« プログラムの作成 練習2-3 条件分岐 | メイン | あけましておめでとうございます »
トラックバック
このエントリーのトラックバックURL:
http://kawarobo.com/motp/mt-tb.cgi/339
このリストは、次のエントリーを参照しています: プログラムの作成 練習2-4 繰り返しフォー:
» はじめました from 為替システムトレード with MetaTrader
というわけで、はじめました。どうぞよろしくお願いします。 メインページはこちらで [続きを読む]
トラックバック時刻: 2006年04月17日 13:40
» 為替システムトレード with MetaTrader from 為替システムトレード with MetaTrader
というわけで、はじめました。どうぞよろしくお願いします。 メインページはこちらで [続きを読む]
トラックバック時刻: 2006年04月17日 13:53