移動平均値を求める関数です。
平均値を求める領域を確保する
例えば。
double buffer[5];
以下の関数の引数にbufferの先頭アドレスとサイズを渡す。
別途chart1でデータを取得する際に1日ごとにループすると思うが
そのループカウンターと取得した株価データを関数に渡してあげればOKです。
5日移動平均値を求める場合
4回目までは、0が帰ってきます。
5回目(日目)から、5分の平均値が帰ってきます。
double movingAverage(/*buffer*/double* buf ,/*buffer size*/const size_t bufSize ,/*what's day average*/const size_t dateCount ,const double stockPrice){
double sum;
if(dateCount \u0026lt; bufSize - 1){
*(buf + dateCount) = stockPrice;
return 0;
}else if(dateCount == bufSize -1){
sum = *(buf + (bufSize - 1)) = stockPrice;
}else{
for(size_t i = 1;i \u0026lt; bufSize;++i){
*(buf + (i - 1)) = *(buf + i);
}
sum = *(buf + (bufSize - 1)) = stockPrice;
}
for(size_t i = 0;i \u0026lt; bufSize - 1;++i){
sum += *(buf + i);
}
return sum / bufSize;
}