ローソク足の本数の処理 | メタトレーダー4でプログラムを作ってみよう

メタトレーダー4でプログラムを作ってみよう

無料のトレードソフトであるメタトレーダー4のプログラムを作るコツをアップします。初心者がインジケーターとEAのプログラムを作成できるのを目指します。

ローソク足の本数を処理するのに

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 の足の処理だけで繰り返しが完了します。

過去の足は値の変化がありませんので、最初に一度計算しておいて値を覚えておくと、

次からは現値のローソク足の計算の処理だけでよくなります。

毎回全ての過去足の値を再計算すると処理が重くなりますので、

とても合理的でよく考えられているな~と感じます。 ('-'*)(,_,*)('-'*)(,_,*)