Data(7/17 : 日経225先物1限月(2009/09)(1分足)  (出典:株価データダウンロードサイト)
/* 移動平均(moving average) 1h ... 60 4h ... 240 */ #include#include #include #define Count 493 main(void) { FILE *fpin,*fpout1,*fpout2; double x[Count],ave,ave2,ave3,ave4; int nx = sizeof(x)/sizeof(x[0]); int cnt=0; double val=0.0; if((fpin= fopen("temp2.dat","r"))==NULL){ printf("ファイルが見つかりません。 --- temp2.dat\n"); exit( EXIT_FAILURE); } if((fpout1= fopen("1-ave.dat","w"))==NULL ){ printf( "ファイルが見つかりません。 --- 1-ave.dat\n"); exit( EXIT_FAILURE); } if((fpout2= fopen("4-ave.dat","w"))==NULL ){ printf( "ファイルが見つかりません。 --- 4-ave.dat\n"); exit( EXIT_FAILURE); } for(cnt=0;cnt<Count;cnt++){ fscanf(fpin,"%lf",&val); x[cnt]=val; } for(cnt=0;cnt<60;cnt++){ ave+=x[cnt]; } /*printf("%d %f\n", cnt, ave/60.0);*/ for(cnt=60;cnt<Count;cnt++){ /*printf("%d %f\n", cnt, ave/60.0);*/ fprintf(fpout1,"%d %f\n", cnt, ave/60.0); ave2=ave+x[cnt]-x[cnt-60]; ave=ave2; } for(cnt=0;cnt<240;cnt++){ ave3+=x[cnt]; } for(cnt=240;cnt<Count;cnt++){ /*printf("%d %f\n", cnt, ave/240.0);*/ fprintf(fpout2,"%d %f\n", cnt, ave3/240.0); ave4=ave3+x[cnt]-x[cnt-240]; ave3=ave4; } fclose(fpin); fclose(fpout1); fclose(fpout2); return EXIT_SUCCESS; }
出力結果
赤(RED):始値、高値、安値、終値を1分ごとに表示。緑(GREEN)・・・1時間の移動平均(終値)、紫(PURPLE)・・・4時間の移動平均(終値)。
注)取引が成立しなかった場合は、1分前の終値として扱った。
Back to C Language