最高値と最安値のインジケーターのコーディングにおいてもインプットや変数に置き換えるように癖をつけましょう。
これらでコード内の数字を置き換えると後で簡単に変更することができるため、後々ストラテジーをコードするときにはバックテスト時に最適値を計算するのに非常に便利になります。
ある期間の最高値と最安値を表す関数における”期間”と”価格”を描画してみる
ある期間の最高値、最安値はそれぞれ関数があらかじめEasyLanguageに登録されています。それぞれHighest(価格, 期間)、Lowest(価格, 期間)です。ここでは期間の初期値を8とします。
Input: HiPrice(High), LoPrice(Low), Len(8);
Vars: HiLine(0), LoLine(0);
HiLine = Highest(Hiprice, Len);
LoLine = Lowest(Loprice, Len);
Plot1(HiLine, “最高値”);
Plot2(LoLine, “最安値”);
HighとLowはあえてInputにしなくてもよさそうですが練習として置き換えてみました。このインジケーターを実際にトレードステーションで表示してみるとこのようになります。
新高値、新安値を表示するには?
上記のチャートをよく見るとローソク足とインジケーターは交わっていないことが分かります。当たり前ですが現在の足を含めて計算していますので最高値や最低値を超えることはないからです。
もし、現在の足が高値や安値を更新して新高値や新安値をつけたときにインジケーターと現在のローソク足が交わるようにしたい場合には、1つ前の足までのインジケーターを作って現在の足を計算に含めないようにすればいいことになります。1足前までの計算は単純に先ほどの最高値と最低値のラインの関数に[1]を付けるだけです。
Input: HiPrice(High), LoPrice(Low), Len(8);
Vars: HiLine(0), LoLine(0);
HiLine = Highest(Hiprice, Len)[1];
LoLine = Lowest(Loprice, Len)[1];
Plot1(HiLine, “最高値”);
Plot2(LoLine, “最安値”);
先ほどのコードの当該部位をこれに置き換えると現在足が新高値や新安値を付けたときにインジケーターと交わりそれ以降は新高値や新安値が更新されていることが確認できるでしょう。
参考文献: