Bars
IndicatorCounted()
を使用します。
Bars はチャートに描写されているローソク足の本数です。
最初、100本あれば Bars は 100 で、
時間が進んで、101本になれば Bars は 101 になります。
IndicatorCounted() は変化していないローソク足の本数です。
チャートにインジケーターをセットした直後は、そのインジケーターにとっては初めて処理するので、
全てが新しいローソク足となり、変化していないローソク足の本数は 0 です。
一度処理されると、新しい足は現値の足だけになりますので、
チャートに100本表示されている時は、
IndicatorCounted() は 99 になります。
ma01で、
int limit=Bars-counted_bars-1;
という処理をしました。
チャートにセットしてすぐの時は、
int limit=Bars-counted_bars-1;
は
int limit=100-0-1;
となり、limit は 99 です。
ローソク足が100本あれば、現値の足を0と数えますので、一番過去の足が 99 となり
for(int i=0; i<limit; i++)
の処理を 0 から始めると、一番過去の足まで処理できます。
一度この処理を終えた後は、
IndicatorCounted() は 99 になりますので、
int limit=Bars-counted_bars-1;
は
int limit=100-99-1;
となり、limit は 0 です。
for(int i=0; i<limit; i++)
の処理は、現値の 0 の足の処理だけで繰り返しが完了します。
過去の足は値の変化がありませんので、最初に一度計算しておいて値を覚えておくと、
次からは現値のローソク足の計算の処理だけでよくなります。
毎回全ての過去足の値を再計算すると処理が重くなりますので、
とても合理的でよく考えられているな~と感じます。 ('-'*)(,_,*)('-'*)(,_,*)