今回はEasyLanguageの2種類の条件分岐(If/Switch)について解説します。
条件分岐処理は最もよく使う処理の1つなので、ぜひマスターしてください。
もくじ
今回作成するEasyLanguageプログラム
<コード>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //Input変数を宣言 Input: kikan(25); //Variable変数を宣言 Variable: heikin(0); //指定した期間の終値の移動平均を取得 heikin = Average(Close,kikan); //平均線の傾きに応じてプロットの色を設定 If heikin > heikin[1] then begin SetPlotColor(1, Red); End; If heikin < heikin[1] then begin SetPlotColor(1, Cyan); End; //移動平均をプロット Plot1(heikin,"移動平均"); |
今回作成するのは傾きによって色を変える移動平均線インジケーターです。
インジケーターを作成する際はスケール位置の変更を実施してください。
今回学習する内容
- インデント(字下げ)について
- 条件分岐処理(If)について
- 複数条件分岐処理(Switch)について
解説
インデント(字下げ)について
インデントとはその名の通り字下げ機能のことです。
コード編集領域で「Tab」キーを押すことでインデントを行うことが出来ます。
後述のIfやSwitchの配下の処理をインデントするといった使い方とします。
インデントはコード見やすくするための機能で、必ずしなければいけないという訳ではありません。
「Tab」キーで何文字分インデントするかは、TradeStation開発環境の
「ツール」→「オプション」→「一般」の「タブストップ/インデントサイズ」
で設定することが出来ます。
条件分岐処理(If)について
条件分岐処理(If)とは、指定した条件によって、処理を分けることが出来る仕組みです。
使い方は以下のようになります。
If 条件① Then Begin
条件①に合致した時に実行するコード
End
Else Begin
条件①に合致しないときに実行するコード
End;
条件分岐に使える関係演算子は以下のようになります。
- 「>」 : より大きい
- 「<」 : より小さい
- 「=」 : 等しい
- 「」 : 等しくない
- 「>=」 : より大きいか等しい
- 「」 : より小さいか等しい
- 「Crosses over」 : 現在の足ではより大きいが、前の足ではより小さいか等しい
- 「Crosses under」 : 現在の足ではより小さいが、前の足ではより大きいか等しい
また論理演算子は以下となります
- 「And」 : 複数の条件をアンドで結合します
- 「Or」 : 複数の条件をOr条件で結合します
<使用例1>
1 | If Close > Open then Plot1(Close,"終値"); //陽線の時だけ終値をプロット |
※上記のように1行で記載することが出来ます。その場合、beginとEndは不要になります。
<使用例2>
1 2 3 | If Close > Open And Close = High then begin Plot1(Close,"終値"); //陽線でかつ上髭がない時だけ終値をプロット End; |
※上記のように複数の条件を組み合わせて使用することが出来ます。
<使用例3>
1 2 3 4 5 6 7 8 9 | If Close > Open then begin Plot1(Close,"陽線"); //陽線の時はプロット1に終値をプロット End Else If Close < Open then begin Plot2(Close,"陰線"); //陰線の時はプロット2に終値をプロット End Else If Close = Open then begin Plot3(Close,"同時線");//同時線の時はプロット3に終値をプロット End; |
※上記のように複数パターンに条件分岐することが出来ます。
複数条件分岐処理(Switch)について
複数条件分岐処理(Switch)は複数の条件に処理を分けることが出来る仕組みです。
IFを組み合わせれば複数条件に分岐することが出来ますが、
条件が多い場合はSwitchを使った方がすっきりと記載することが出来ます。
使い方は以下のようになります。
Switch (①判定する値) Begin
Case ②条件:
②条件に合致した時に実行するコード
Default:
②条件に合致しないときに実行するコード
End;
<使用例1>
1 2 3 4 5 6 7 8 9 10 11 12 13 | Value1 = 5; Switch(Value1) Begin Case 1 to 3: //1-3のとき Print("条件1"); Case 4, 7: //4,7のとき Print("条件2"); Default: //上記以外のとき Print("条件3"); End; |
※上記のようにValue1の値によって複数条件に分岐することが出来ます。
コードの説明
今回作成したインジケーターのコードの解説です。
1 2 3 | //Input変数を宣言 Input: kikan(25); |
期間をパラメーターとして入力できるようにInput変数を宣言しています。
カッコ内で指定した値(25)が初期値(デフォルト値)となります。
5 6 7 | //Variable変数を宣言 Variable: heikin(0); |
プログラム中の計算結果を保存するための変数を宣言しています。
9 10 | //指定した期間の終値の移動平均を取得 heikin = Average(Close,kikan); |
パラメーターで指定された期間の終値の平均値を変数(heikin)に代入しています。
12 13 14 15 16 17 18 | //平均線の傾きに応じてプロットの色を設定 If heikin > heikin[1] then begin SetPlotColor(1, Red); End; If heikin < heikin[1] then begin SetPlotColor(1, Cyan); End; |
平均線の傾きに応じてプロットの色を設定しています。
予約語SetPlotColorは以下のように使います。
SetPlotColor(プロットの番号, 色);
今回は「Plot1」の色を変更するので、プロットの番号には「1」を指定します。
20 21 | //移動平均をプロット Plot1(heikin,"移動平均"); |
移動平均をプロットしています。
まとめ
今回はEasyLanguageの2つの条件分岐処理について解説しました。
If文を組み合わせて使えば、Switch文と同じことが実現できるので
まずはIf文を使いこなせるようになるのが良いと思います。
条件分岐処理が使いこなせるようになれば、「インジケーターを使って
特定の条件に合致する銘柄を探す」といったことが簡単に出来るようになるので
ぜひマスターしてください。
今回の内容は以上となります。