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

Google




BLOG
PICASAWEB
Panoramio