次に start です。
今回は説明を1つの記事に詰め込むのは難しいので、
主に流れを説明して、次回以降にさらに細かく分けて説明していきます。(^_^;)
1から3行目はinitと同様にコメント行で、作成した時点で自動的に挿入されます。
4行目で start 関数の宣言をしています。
6行目は
int counted_bars=IndicatorCounted();
で、このように設定するものを変数と呼びます。
変数は数字を入れる箱のようなもので、入れた数字を覚えていて、
必要に応じて計算したり、数字を入れ替えたりします。
宣言項目のところでバッファーを設定しましたが、
バッファーは箱の中が小さく分かれていて、沢山の数値を管理することができますが、
変数に入れることができるのは1つだけです。\(゜□゜)/
最初の方にある int は、変数の種類で、整数を扱う設定です。
counted_bars が変数の名前です。
変数に使用できる名前には少し制限があります。
IndicatorCounted() は変化していないローソク足の数を数えるコマンドです。
チャートには通常、複数のローソク足が表示されています。
例えば100本のローソク足が表示されていても、過去の足の値は変わることはなく、
変わるのは一番新しいローソク足だけです。
毎回全てのローソク足に対して再計算をし直すと、処理がとても重くなってしまうため、
最新のローソク足だけを計算するために用意されたコマンドです。
= の意味は、= の右側の数値を、左側に代入するという意味です。
この行では、counted_bars という整数の変数を用意して、
IndicatorCounted の値を代入すると言う命令になります。
8行目は、
int limit=Bars-counted_bars-1;
で、Bars は表示されているローソク足の数です。
この行では、limit という整数の変数を用意して、
ローソク足の数 - 変化していないローソク足の数 - 1 を計算して代入するという命令になります。
9行目は
for(int i=0; i<limit; i++)
で、繰り返しの命令となります。
for(初期値;条件式;後処理) と記述します。
条件式が条件を満たしていると、次の行以下の処理を行い、
それが終わった後に後処理を行い、条件式の判定をします。
条件式を満たさなくなった時点で終了します。
10行目は
ExtMapBuffer1[i]=iMA(NULL,0,10,0,MODE_SMA,PRICE_CLOSE,i);
で、バッファーにiMAの値を代入しています。
見るとなんとなくわかると思いますが、iMAは移動平均線の計算をするコマンドです。
iMA(通貨ペア、時間足、移動平均の期間、移動平均線をシフトする数、移動平均線の種類、
価格種類、ローソク足の位置)
価格種類、ローソク足の位置)
となっています。
この例では、10本のローソク足の終値で単純移動平均線を計算します。
バッファーに入った数値は自動的にチャートに描写されます。
13行目は、
return(0);
で、initのところでも説明しましたが、おまじないなのでそう書いておいてください。
今回のプログラムは、
ローソク足の数を数えて、最新の移動平均線を計算する。
という流れです。
常に新しい移動平均線を計算しています。
今回は、新しい言葉が色々出てきてよくわからなかったと思いますので、
次回以降に詳しく説明していきたいと思います。(*^ー^)ノ