EasyLanguage の変数は、一般的なプログラミング言語とは少し異なる性質を持っています。
EasyLanguage でユーザー変数を定義するときは、次のように var:
を使います(variables:
でも OK)。
このように定義した変数 hoge
は、次のような性質を持ちます。
- チャートにアタッチしたときのみ初期化される(上記の例では 0 に初期化される)。
- 変数に代入した値は、次の足の処理に引き継がれる。
hoge[n]
とすると、n 本前の足の最終的な値を参照できる。hoge[0]
はhoge
と同じ意味になる。
この振る舞いは、次のようなサンプルコードを実行してみるとよく分かります。
このプログラムでは、初期値 0 の数値変数 hoge
を定義し、各足の処理ごとにインクリメントしています。
そして最後に、現在の hoge
の値と、1 つ前、2 つ前の足での hoge
の値を出力しています。
hoge
に代入された値は次の足へと引き継がれていくため、1、2、3、4、5 とひとつずつ増えていきます。
最初の足の処理で、hoge[1]
、hoge[2]
のように過去の足の値を参照した場合は、初期値で設定している 0 が得られます。
このような変数の性質を理解していると、過去の足での計算結果を再利用した、効率的なコードを記述できるようになります。
ちなみに、このように各足ごとに Print
を実行すると、大量にログが出力されてしまうので、チャート上で 10 bars <Enter>
のように入力して、足の数を絞っておくと見やすくなります。