今回はEasylanguageのループ処理(For/While)について解説します。
ループ処理は前回の条件分岐処理と並んでよく使う処理なので、ぜひマスターしてください。
もくじ
今回作成するEasylanguageプログラム
<コード>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //Input変数を宣言 Input: kikan(25); //Variable変数を宣言 Variable: heikin(0), goukei(0), count(0); //指定した期間の終値の合計値を計算 goukei = 0; For count = 0 to kikan - 1 begin goukei = goukei + Close[count]; end; //平均値を計算 heikin = goukei/kikan; //平均線の傾きに応じてプロットの色を設定 If heikin > heikin[1] then begin SetPlotColor(1, Red); End; If heikin < heikin[1] then begin SetPlotColor(1, Cyan); End; //移動平均をプロット Plot1(heikin,"移動平均"); |
インジケーターを作成する際はスケール位置の変更を実施してください。
前回と同じ傾きによって色を変える移動平均線インジケーターですが
今回は組み込み関数を使わず、ループ処理を使って平均線の値を計算しています。
今回学習する内容
- ループ処理とは
- ループ処理(For)について
- ループ処理(While)について
解説
ループ処理とは
ループ処理とは特定の条件の間、特定の処理を繰り返すための仕組みです。
ここではEasyLanguagの2つのループ処理(For/While)について解説します。
ループ処理(For)について
ループ処理(For)とは特定の処理を特定の回数繰り返すための仕組みです。
決まった回数だけ処理を実行する場合はForを使のが便利です。
For 変数(カウント用) = 開始値 To 終了値 Begin
実行する処理
End;
変数の開始値を「1」、終了値を「5」に設定した場合、ループするたびに
変数の値が1、2、3・・・と1ずつ加算されながら処理が繰り返され、変数の値が
5になるとループが終了します。(処理は計5回実行されます)
Toの部分をDownToにすることで、変数を1ずつ減算することが出来ます。
また、Breakを使うことでループをカウントの途中でループを終了することが出来ます。
<使用例1>
1 2 3 4 5 6 7 8 9 | Variable: count(0), goukei(0); goukei = 0; //現在値(Close[0])から順に9本前の終値(Close[9])まで計10本分の終値合計を計算 For count = 0 to 9 begin goukei = goukei + Close[count]; End; |
※変数(count)を加算しながらループします
<使用例2>
1 2 3 4 5 6 7 8 9 | Variable: count(0), goukei(0); goukei = 0; //9本前の終値(Close[9])から順に現在値(Close[0])まで計10本分の終値合計を計算 For count = 9 Downto 9 begin goukei = goukei + Close[count]; End; |
※変数(count)を減算しながらループします
<使用例3>
1 2 3 4 5 6 7 8 9 10 11 | Variable: count(0), goukei(0); goukei = 0; For count = 0 to 9 begin goukei = goukei + Close[count]; If count = 4 then begin Break; //count=4になった時点でループを終了 End; End; |
※カウントが4になった時点でループを終了します
ループ処理(While)について
ループ処理(While)とは特定の条件の間、特定の処理を繰り返すための仕組みです。
条件を指定する場合、必ず終了するような条件を指定しないとプログラムが無限ループしてしまいます。
カウント用の変数を用いて条件を指定する場合、変数の加算・減算処理はWhileの中に記載する必要があります。
Forと同様で、Breakを使うことでループを終了することが出来ます。
while 条件 Begin
実行する処理
End;
<使用例1>
1 2 3 4 5 | Value1 = 5; //カウント用の変数 While Value1 > 0 Begin Print(Value1); Value1 = Value1 - 1; //カウント用の変数を減算 End; |
※Value1の値が0より大きい間だけ処理を続けます。
上記のコードでは5回の処理が実行されます。
コードの説明
今回作成したインジケーターのコードの解説です。
1 2 3 | //Input変数を宣言 Input: kikan(25); |
期間をパラメーターとして入力できるようにInput変数を宣言しています。
カッコ内で指定した値(25)が初期値(デフォルト値)となります。
5 6 7 8 9 | //Variable変数を宣言 Variable: heikin(0), goukei(0), count(0); |
プログラム中の計算結果を保存するための変数を宣言しています。
11 12 13 14 15 | //指定した期間の終値の合計値を計算 goukei = 0; For count = 0 to kikan - 1 begin goukei = goukei + Close[count]; end; |
パラメーターで指定された期間の終値の合計値を計算しています。
ループ処理の中でローソク足を指定期間分遡って終値を足し合わせています。
12行目ですが、変数には前回の実行結果が残っているので必ず「0」を代入しなおす必要があります。
このあたりの動きがわかりづらい人は、初心者講座②と初心者講座③を読んでみてください。
17 18 | //平均値を計算 heikin = goukei/kikan; |
合計値を期間で割って平均値を計算し、結果を変数(heikin)に代入しています。
20 21 22 23 24 25 26 | //平均線の傾きに応じてプロットの色を設定 If heikin > heikin[1] then begin SetPlotColor(1, Red); End; If heikin < heikin[1] then begin SetPlotColor(1, Cyan); End; |
平均線の傾きに応じてプロットの色を設定しています。
28 29 | //移動平均をプロット Plot1(heikin,"移動平均"); |
移動平均をプロットしています。
まとめ
今回はEasyLanguageのループ処理について解説しました。
ループ処理自体はそれほど難しくはないと思いますが、コード中でループ処理を使うと
インジケーター動きと合わさって2重ループのような状態になるので
インジケーターの動きをしっかり理解していないと混乱してしまいます。
インジケーターの動きは初心者講座②で詳しく解説していますので、
まだ読まれてない方は、ぜひ一度目を通してみてください。
今回の内容は以上となります。