7 プログラムメイン部分現状
11ヶ月ぶりに記事書いてますw
ほぼ自分用の記事
suQ2/main/simxp8trsu_nobug2.c
/* * 業種別を取り込む準備⇒廃止 * 分割処理 1/500まで拡張 * 分割時の代金バグを修正 * mt_rule対応 * 表示用dispda[][] * 2016/6/25 出力をdispda[][]⇒owa[][] * simxp7->8 * 出力を根本的に変える(一つずれる) * * 2016/8/11 * char* c_cfg=".\\code\\code.cfg"; を * SHIJOUが定義されていたら変更する * * 2016/09/10 * Zday=\t%d\t Yson=\t%5.2f * * 2016/11/05 * msys2 移行 * UTF-8 LF * 2017/1/17 * daiの出力+- * * 2017/1/22 BUG定義時の修正 * 2017/2/5 DAYSON 定義の廃止 * 2017/2/11 分割の正規対応try開始 * 2017/3/19 平均乖離率の平均を計算 hei75 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h> #include "sub/env.h" #include "sub/check0.h" #include "sub/read_kd2.h" #include "sub/matome.h" #include "sub/sngrx.h" #include "sub/common_y.h" #include "sub/output.h" #include "sub/bnkt.h" uint8_t dt[DATEMAX][11]; //use output uint8_t code[DATAMAX][8]; //use output main int gys[DATAMAX]; //read_kd2 double hjm[DATAMAX][DATEMAX]; //use output double tak[DATAMAX][DATEMAX]; //use output double yas[DATAMAX][DATEMAX]; //use output double owa[DATAMAX][DATEMAX]; //use output double da[DATAMAX][DATEMAX];//daiから変更 int bnk[DATAMAX]; //株式分割 double dispda[DATAMAX][DATEMAX];//表示用のdaikin(分割バグ無関係)// output //で使用 double suii[DATEMAX][XDAYMAX2]; //購入後の損益推移(安値→高値) // use output double pfm[100]; double pfmmax; double pfmson; double pfmm[50]; double pfmall[100][100]; double dispda[DATAMAX][DATEMAX];//表示用のdaikin(分割バグ無関係) int ck[DATAMAX][DATEMAX]; //フラグ 1 int CodeMax; int DtMax; int Jkc=0; double Pmax[PM]; int Lr[PM]; int Ms[PM]; int fm=0; //output format 0 or 1 //int bncode[BNKTMAX]; //分割データcode //int bnj[BNKTMAX]; //分割データj //double bnkt[BNKTMAX]; //分割データ分割比率 ////// #include "mt/mt_rule.c" ////// #ifndef _YSON_ double Yson=-70.0; //損切% 必要に応じて変える #endif #ifndef _ZDAY_ int Zday=5; //損切ライン 必要に応じて変える #endif int main (void) { //2016/8/11 市場切り替え対応 #ifdef SHIJOU uint8_t* c_cfg=SHIJOU; #else uint8_t* c_cfg="./code/code.cfg"; #endif // uint8_t* d_cfg="data.cfg"; uint8_t* rksg="./output/rksg.txt"; //利確損切を別ファイルに uint8_t filename[40]; uint8_t buf[40]; double brk; double pmax; int i,k,n; //2017/1/22 add int bug=0; //int lr,ms; //2017/2/11 add int bncnt; //読み込んだ分割データの総数 int bnflg=0;//0なら今までの分割チェックをしない FILE *fp; //code fileの読み込み fp = fopen(c_cfg, "rt"); if ( fp ){ i=0; while ( fgets(buf,40,fp)!=NULL) { n=check0(buf); if (n!=0) { strcpy(code[i],buf); //printf("%d %s \n",i,code[i]); i++; } } CodeMax=i; } fclose(fp); fprintf(stderr,"read code file\n"); #ifdef BUG bug=1; #endif //data file の読み込み fp = fopen(d_cfg, "rt"); if ( fp ){ // d_cfg data読込作業 i=0; while ( fgets(filename,40,fp)!=NULL) { n=check0(filename); if (n!=0) { //#コメント以外 @は除外 //2017/1/22 read_kd2(filename,i,bug,bnflg); // i++; } } DtMax=i; fclose(fp); } #ifdef _DEBUG_ for (k=0;k<CodeMax;k++) {if(strncmp(code[k],"9830",5)==0)break;} //j=29 fprintf(stderr,"test %s %d %f %f\n",code[k],k,hjm[k][29],hjm[k][30]); #endif fprintf(stderr,"\nread data file\n"); //分割データ読み込み if (bnflg==0){ bncnt=bnkt_read(bug); fprintf(stderr,"read bnkt.dat %d\n",bncnt); } #ifdef _DEBUG_ fprintf(stderr,"test %s %d %f %f\n",code[k],k,hjm[k][29],hjm[k][30]); #endif maxxday(); minxday(); //calc25(); calc(); check(); #ifdef _OUTPUT_FMT_ fm=_OUTPUT_FMT_; #endif output(fm); fp=fopen(rksg,"w"); fprintf(fp,"----\tXd0\t%d\t----\tXdd\t%d\t-----\t%d\t---------------------------\n",Xd0,Xdd,DtMax); fprintf(fp,"利確\t損切\n"); matome(); pmax=-100.0; for (k=0;k<PM;k++) { if (Pmax[k]!=pmax && Lr[k]!=0){ fprintf(fp,"%d\t%d\t%6.3lf\t%8.2lf\n",Lr[k]+1,-Ms[k]-1,Pmax[k],Pmax[k]*Jkc); pmax=Pmax[k]; } } fclose(fp); }
現在はこんな感じ
ビルド前に定義する部分だけ抜き出すと
#ifndef _YSON_
double Yson=-30.0; //損切% 必要に応じて変える
#endif
簡易損切:_YSON_ を明示的に定義しなかった場合のデフォルト設定が-30%
#ifndef _ZDAY_
int Zday=5; //損切ライン 必要に応じて変える
#endif
時間切れ損切:_ZDAY_を明示的に定義しなかった場合のデフォルト設定が5日
#ifdef SHIJOU
uint8_t* c_cfg=SHIJOU;
#else
uint8_t* c_cfg="./code/code.cfg";
#endif
市場ファイル:銘柄コード群が記載されたファイルを指定
#ifdef BUG
bug=1;
#endif
read_kd2(filename,i,bug,bnflg);
かつてデータ読み込みにbugがあったのだが、その方が成績良かったのでそのbugを残す際に定義
#ifdef _DEBUG_
デバッグ用にデータをプリント
#ifdef _OUTPUT_FMT_
fm=_OUTPUT_FMT_;
#endif
output(fm);
出力フォーマットを指定
あと気づいたけど
int bnflg=0;//0なら今までの分割チェックをしない
で固定になってる
もしProtraが使えなくなって元の簡易分割推定処理に戻すならここを弄ること