変数はプログラミングの一般的な知識ですが、EasyLanguageでは変数が更新されるタイミングや
予約語Intrabarpersistなど、独特な仕様を理解していないと戸惑うことがあります。
基礎講座③ではEasyLanguageの変数について詳しく解説していきたいと思います。
もくじ
今回作成するEasyLanguageプログラム
<コード>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //Variable変数を宣言 Variable: hensuu1(0), Intrabarpersist hensuu2(0); //変数をカウントアップ hensuu1 = hensuu1 + 1; hensuu2 = hensuu2 + 1; //変数を印刷ログに出力 Print("変数1:", hensuu1, "/変数2:", hensuu2); //終値をプロット Plot1(Close,"終値"); |
このコードは処理が実行されるたびに2つの変数をカウントアップして
印刷ログに出力するプログラムです。
また、処理が実行された位置がわかりやすいように終値をプロットしています。
今回はこのインジケーターを適用してEasyLanguageの変数について説明したいと思います。
今回学習する内容
- コメントについて
- 四則演算について
- 変数について
変数の解説の前に、まずはコード中で使用している「コメント」と
「四則演算」について簡単に解説をします。
解説
コメントとは
コメントとは、プログラムのコード中にメモを書くための機能です。
コード中に直接メモを書いてしまうと、プログラムが動かなくなってしまうのですが、
コメント部分はプログラムのコードとしては認識されなくなるので
好きな内容を書いておくことが出来ます。
自分で書いたコードでも時間が経つと何をやっているか分からなくなることがあるので
積極的にコメントを入れることをお勧めします。
EasyLanguageでは2種類のコメントが使えます
<行コメント>
1 | // 以降の行が1行だけコメントアウトされる |
<ブロックコメント>
1 2 3 4 5 | { カッコで囲まれた行が 全てコメントアウトされる } |
※ブロックコメントのカッコは必ず閉じるようにしましょう。
また、コメントは
1 2 | Plot1(Close,"終値"); //Plot2(Open,"始値"); |
このようにコードをコメントすることによって、その部分を実行しないように
するといった使い方も出来ます。
四則演算とは
四則演算とは、足し算・引き算・掛け算・割り算のことです。
EasyLanguageで使う演算子は以下のようになります。
- 「*」 : 乗算(掛け算)
- 「/」 : 除算(割り算)
- 「+」 : 加算(足し算)
- 「-」 : 減算(引き算)
計算の順序は一般的な算数と同じで、「カッコ()内」→「乗算・除算」→「加算・減算」の順となります。
計算結果を後述の変数に代入する場合には「=」を用いますが、変数を「=」の左側に持ってくる必要があります。
<具体例>
1 2 3 | hensuu = 1 + 2 * 3; //hensuuに7が代入される hensuu = (hensuu + 3) / 2; //変数に5が代入される |
変数について
変数とは
変数とは値を保存するための名前の付いた箱のようなものです。
プログラム中で変数を使うためには、まず箱を作っておく必要があります。
この箱を作る作業のことを、変数の宣言といいます。
変数の名前は日本語でもOKですが、Closeのような予約語を
変数名にすることは出来ません。
ここではEasyLanguageで宣言できる2つの変数について説明します。
Variable変数
プログラム内で使用される一般的な変数です。
Variable : 変数名(初期値);
といった形で宣言します。
複数の変数を宣言する場合は、カンマ(,)区切りで追加してくことが出来ます。
途中で改行しても問題ありませんが、全ての変数の宣言が終わった後には
必ずセミコロン(;)を付ける必要があります。
Variableの部分を「Var」、「Vars」、「Variables」と記載しても
全く同じ意味になります。
変数名 = 値;
といった形で変数に値を代入することが出来ます。
また、EasyLanguageには事前宣言変数というものがあり、Value0~Value99という変数は
宣言しなくても使用することが出来ます。
<使用例>
1 2 3 4 5 6 7 8 | Var: aaa(0), bbb(1), 日本語(5), ddd(-5); aaa = 1; bbb = 2; 日本語 = 3; ddd = 4; Value2 = 5; |
Input変数
インジケーターの設定から入力値を受け取ることが出来る変数です。
Input : 変数名(初期値);
といった形で宣言します。
複数の変数を宣言する場合は、カンマ(,)区切りで追加してくことが出来ます。
途中で改行しても問題ありませんが、全ての変数の宣言が終わった後には
必ずセミコロン(;)を付ける必要があります
Inputの部分を「Inputs」と記載しても全く同じ意味になります。
この変数にプログラム中で値を代入することは出来ません。
Input変数の値はインジケーターの入力パラメーターとして
設定できるようになります。
<使用例>
1 2 | Input : aaa(0), bbb(1), 日本語(5), ddd(-5); |
変数が更新されるタイミング
EasyLanguageでは変数はローソク足が確定したタイミングで値が更新されます。
今回作成したEasyLanguageプログラムを使って詳しく解説していきます。
前回と同じように計11本(確定10本、未確定1本)のローソク足が表示されたチャートに
このインジケーターを適用してみます。
<印刷ログの出力>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 変数1: 1.00/変数2: 1.00 変数1: 2.00/変数2: 2.00 変数1: 3.00/変数2: 3.00 変数1: 4.00/変数2: 4.00 変数1: 5.00/変数2: 5.00 変数1: 6.00/変数2: 6.00 変数1: 7.00/変数2: 7.00 変数1: 8.00/変数2: 8.00 変数1: 9.00/変数2: 9.00 変数1: 10.00/変数2: 10.00 //これ以降が最後の足で実行された処理 変数1: 10.00/変数2: 11.00 //ここからはTick更新で実行された処理 変数1: 10.00/変数2: 12.00 変数1: 10.00/変数2: 13.00 変数1: 10.00/変数2: 14.00 変数1: 10.00/変数2: 15.00 |
今回のインジケーターは処理が実行されるたびに2つの変数をカウントアップして
印刷ログに出力するインジケーターです。
ここで変数1の値に注目して頂きたいですが、変数1は10行目以降カウントが止まっています。
先ほども記載した通り、EasyLanguageの変数は通常ローソク足が確定したタイミングで更新されます。
確定済みのローソク足で処理を実行している9回目までは変数の値が1,2,3・・・と更新されていき
9回目の処理が終わった時点で「hensuu1=9」の状態になります。
しかし、10回目以降は未確定の足での処理になるので、変数の値が更新されず「9+1」の処理が
毎回実行されている状態になっています。
確かに、過去のローソク足では処理(=変数の更新)が1回ずつしか行われないことを考えると、
このような動きになるのはとても納得がいきます。
予約語:Intrabarpersist
インジケーターによっては、Tick更新ごとに変数の値を更新したい場合があります。
そのような場合に使用するのが予約語の「Intrabarpersist」です。
hensuu2のように変数の宣言時に「Intrabarpersist」をつけると、Tickを受け取るたびに
変数の値が更新されるようになります。
まとめ
今回はEasyLanguageの変数について詳しく解説しました。
- Variable変数
- Input変数
- 変数の更新されるタイミング
上記について理解していただければOKです。
今回は以上となります。