📄 choicestock.c
字号:
#include <stdio.h>#include "gmclient.h"static GtkWidget *tmpentry0;static GtkWidget *tmpentry1;static GtkWidget *tmpentry2;static GtkWidget *tmpentry3;static GtkWidget *tmpentry4;static GtkWidget *tmpentry5;static GtkWidget *tmpentry6;static GSList *reclist;int zs=0,shzs=0,szzs=0;int cgs=0,shcgs=0,szcgs=0;int bl=0,shbl=0,szbl=0;typedef struct{ char code[7]; int date; //日期 int kpj; int spj; int zgj; int zdj; int cjl; int lbts; //量比天数 int avgcjl; //区间均量 int lbfd; //量比幅度 int drzf; //当日涨幅 int hpts; //横盘天数 int hpfd; //横盘区间震幅 int zf; // 放量後涨幅 int flag; //成功标志 SUCCESS-成功 FAIL--失败 int addr; //选股标志位址}REC;static void endProgram1(GtkWidget *widget,gpointer data);static void choiceoneok_clicked(GtkWidget *widget,gpointer data);void endProgram1(GtkWidget *widget,gpointer data){ GSList *node; for(node=reclist;node;node=node->next) g_free(node->data); g_slist_free(reclist); gtk_widget_destroy(widget); }void selectRow(GtkWidget *list,gint c,gint r){ GSList *node; REC *rec; // strcpy(str,getClist(list));// printf("c:%d r:%d %s\n",c,r,str); node=g_slist_nth(reclist,c); rec=(REC *)node->data; if(frechStock(rec->code) == 0){ return; } if(strlen(rec->code) == 6) codeToName(SHBZ,rec->code); else codeToName(SZBZ,rec->code); areastart=(rec->addr-6)>0?(rec->addr-6):1; Repaint(); }static void total_clicked(GtkWidget *widget,gpointer data){ char str[1500]; zs=shzs+szzs; cgs=shcgs+szcgs; bl=cgs*100/zs; shbl=shcgs*100/shzs; szbl=szcgs*100/szzs; sprintf(str,"统计总数: %d 成功数: %d 比率: %d% 上海总数: %d 成功数: %d 比率: %d% 深圳总数: %d 成功数: %d 比率: %d%", zs,cgs,bl,shzs,shcgs,shbl,szzs,szcgs,szbl); showMessage("统计结果",str); }static void save_clicked(GtkWidget *widget,gpointer data){ char filename[80]; createFilenameDialog("保存检索结果"); strcpy(filename,getFilename()); printf("%s",filename); }void choiceoneok_clicked(GtkWidget *widget,gpointer data){ GtkWidget *tmpwin; GtkWidget *tmpvbox; GtkWidget *i_box2,*i_but; GSList *gslist; int d,i,j,k,qsrq,lbts,lbfd,drzf,hpts,hpfd,zf;// int tmpzgj,tmpzdj,tmpkpj,tmpspj,tmpcjl; int tmpavgcjl,tmplbfd,tmpdrzf,tmphpfd,tmpzf; char strentry[50]; GtkWidget *tmplist; REC *rec; gchar *tmprec[5]; gchar str0[88]; gchar str1[88]; gchar str2[88]; gchar str3[88]; gchar str4[88]; tmprec[0]=str0; tmprec[1]=str1; tmprec[2]=str2; tmprec[3]=str3; tmprec[4]=str4;
reclist=NULL; /* --- Call the timer. --- */
strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry0)));// strentry[4]='\0'; qsrq=atoi(strentry); strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry1)));// strentry[4]='\0'; lbts=atoi(strentry); strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry2)));// strentry[4]='\0'; lbfd=atoi(strentry); strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry3))); drzf=atoi(strentry); strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry4))); hpts=atoi(strentry); strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry5))); hpfd=atoi(strentry); strcpy(strentry,gtk_entry_get_text(GTK_ENTRY(tmpentry6))); zf=atoi(strentry); gtk_widget_destroy(widget); StartProgress ("正在检索成交量,请稍候...");
// n=0; k=0;// m=0; for(i=1;i<=shstocksum;i++){ if(shtbl[i].code[0]!='6' && shtbl[i].code[0]!='5'){ continue; } if(frechStock(shtbl[i].code) == 0){ continue; } for(j=1;j<=stocksum;j++){ if(stock[j].jydate<qsrq) continue; tmpavgcjl=getAverageColume(j,lbts); if(tmpavgcjl <= 0) continue; tmplbfd = stock[j].cjsl*100/tmpavgcjl; if(tmplbfd < lbfd) continue; if(stock[j].kpj == 0 || stock[j].spj == 0) continue; tmpdrzf = (stock[j].spj-stock[j].kpj)*100/stock[j].kpj; if(tmpdrzf < drzf) continue; d=(j-hpts>0)?(j-hpts):1; tmphpfd = (stock[j].spj-stock[d].spj)*100/stock[j].spj; if(tmphpfd > hpfd) continue; /* tmpzgj=stock[j].zgj; tmpzdj=stock[j].zdj; tmpkpj=stock[j].kpj; tmpspj=stock[j].spj; tmpcjl=stock[j].cjsl;*/ d = getAreazgj(j,j+40); tmpzf=(d-stock[j].spj)*100/stock[j].spj; rec=(REC *)g_malloc(sizeof(REC)); strcpy(rec->code,stockcode); rec->date=stock[j].jydate; rec->kpj=stock[j].kpj; rec->spj=stock[j].spj; rec->zdj=stock[j].zdj; rec->zgj=stock[j].zgj; rec->cjl=stock[j].cjsl; rec->lbts=lbts; rec->avgcjl=tmpavgcjl; rec->lbfd=tmplbfd; rec->drzf=tmpdrzf; rec->hpts=hpts; rec->hpfd=tmphpfd; rec->zf=tmpzf; rec->addr=j; reclist=g_slist_append(reclist,rec); shzs++; if(tmpzf >= zf){ rec->flag = SUCCESS; shcgs++; }else{ rec->flag = FAIL; } } if(k>=shstocksum/10){ UpdateProgress (i,shstocksum); k=0; } else{ k++; } }
for(i=1;i<=szstocksum;i++){ if(sztbl[i].code[0]!='4' && sztbl[i].code[0]!='0'){ continue; } if(frechStock(sztbl[i].code) == 0){ continue; } for(j=1;j<=stocksum;j++){ if(stock[j].jydate<qsrq) continue; tmpavgcjl=getAverageColume(j,lbts); if(tmpavgcjl <= 0) continue; tmplbfd = stock[j].cjsl*100/tmpavgcjl; if(tmplbfd < lbfd) continue; if(stock[j].kpj == 0 || stock[j].spj == 0) continue; tmpdrzf = (stock[j].spj-stock[j].kpj)*100/stock[j].kpj; if(tmpdrzf < drzf) continue; d=(j-hpts>0)?(j-hpts):1; tmphpfd = (stock[j].spj-stock[d].spj)*100/stock[j].spj; if(tmphpfd > hpfd) continue; /* tmpzgj=stock[j].zgj; tmpzdj=stock[j].zdj; tmpkpj=stock[j].kpj; tmpspj=stock[j].spj; tmpcjl=stock[j].cjsl;*/ d = getAreazgj(j,j+40); tmpzf=(d-stock[j].spj)*100/stock[j].spj; rec=(REC *)g_malloc(sizeof(REC)); strcpy(rec->code,stockcode); rec->date=stock[j].jydate; rec->kpj=stock[j].kpj; rec->spj=stock[j].spj; rec->zdj=stock[j].zdj; rec->zgj=stock[j].zgj; rec->cjl=stock[j].cjsl; rec->lbts=lbts; rec->avgcjl=tmpavgcjl; rec->lbfd=tmplbfd; rec->drzf=tmpdrzf; rec->hpts=hpts; rec->hpfd=tmphpfd; rec->zf=tmpzf; rec->addr=j; reclist=g_slist_append(reclist,rec); szzs++; if(tmpzf >= zf){ rec->flag = SUCCESS; szcgs++; }else{ rec->flag = FAIL; } } if(k>=szstocksum/10){ UpdateProgress (i,szstocksum); k=0; } else{ k++; } }
zs=shzs+szzs; EndProgress ();
if(zs == 0){ showMessage("提示","未检索到符合结果."); return; } tmpwin=createWindow("当前股票检索结果",480,300,0,0,2, GTK_SIGNAL_FUNC(endProgram1)); gtk_window_set_policy(GTK_WINDOW(tmpwin),FALSE,FALSE,TRUE); tmpvbox=createBox(tmpwin,VERTICAL,0); tmplist=createClist(tmpvbox,5,GTK_SIGNAL_FUNC(selectRow)); setupClist(tmplist,0,"股票代码",64); setupClist(tmplist,1,"日期",64); setupClist(tmplist,2,"量比",64); setupClist(tmplist,3,"当日涨幅",64); setupClist(tmplist,4,"后涨幅",48); i=0; for(gslist=reclist;gslist || i<zs;gslist=gslist->next){ rec=(REC *)gslist->data;// printf("%s %d %d %d %d %d\n",rec->code,rec->zdjdate,// rec->zdj,rec->zgj,rec->zdf,rec->addr); strcpy(tmprec[0],rec->code); sprintf(tmprec[1],"%d",rec->date); sprintf(tmprec[2],"%d%",rec->lbfd); sprintf(tmprec[3],"%d%",rec->drzf); sprintf(tmprec[4],"%d%",rec->zf); insertClist(tmplist,tmprec); i++; } i_box2 = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(i_box2), SPREAD); gtk_button_box_set_spacing(GTK_BUTTON_BOX(i_box2), 10); gtk_box_pack_start(GTK_BOX(tmpvbox), i_box2, FALSE, FALSE, 0); gtk_widget_show(i_box2); i_but = gtk_button_new_with_label("统计"); gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked", GTK_SIGNAL_FUNC(total_clicked),GTK_OBJECT(tmpwin)); gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0); gtk_widget_show(i_but); i_but = gtk_button_new_with_label("保存"); gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked", GTK_SIGNAL_FUNC(save_clicked),GTK_OBJECT(tmpwin)); gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0); gtk_widget_show(i_but); i_but = gtk_button_new_with_label("退出"); gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked", GTK_SIGNAL_FUNC(endProgram1),GTK_OBJECT(tmpwin)); gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0); gtk_widget_show(i_but);// gtk_grab_add(tmpwin);}void choiceOne(){ GtkWidget *tmpwin; GtkWidget *tmpvbox; GtkWidget *i_box2,*i_but; if(!frechflag) return; tmpwin = createWindow("选股方案一",300,380,0,0,20, GTK_SIGNAL_FUNC(endProgram)); tmpvbox = createBox(tmpwin,VERTICAL,0); createLabel(tmpvbox,"扫描起始日期(yyyymmdd)"); tmpentry0=createEntry(tmpvbox,"19960101"); createLabel(tmpvbox,"选择成交量扫描区间(天数)"); tmpentry1=createEntry(tmpvbox,"20"); createLabel(tmpvbox,"输入成交量放大比率(>%)"); tmpentry2=createEntry(tmpvbox,"100"); createLabel(tmpvbox,"输入成交量放大日股价涨幅比率(>%)"); tmpentry3=createEntry(tmpvbox,"5"); createLabel(tmpvbox,"输入成交量放大前横盘整理时间(天数)"); tmpentry4=createEntry(tmpvbox,"120"); createLabel(tmpvbox,"输入横盘整理区间波动幅度(正负%)"); tmpentry5=createEntry(tmpvbox,"20"); createLabel(tmpvbox,"成功标志(放量后40天内涨幅>%)"); tmpentry6=createEntry(tmpvbox,"50"); createLabel(tmpvbox," "); i_box2 = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(i_box2), SPREAD); gtk_button_box_set_spacing(GTK_BUTTON_BOX(i_box2), 10); gtk_box_pack_start(GTK_BOX(tmpvbox), i_box2, FALSE, FALSE, 0); gtk_widget_show(i_box2); i_but = gtk_button_new_with_label("OK"); gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked", GTK_SIGNAL_FUNC(choiceoneok_clicked),GTK_OBJECT(tmpwin)); gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0); gtk_widget_show(i_but); i_but = gtk_button_new_with_label("Cancel"); gtk_signal_connect_object(GTK_OBJECT(i_but), "clicked", GTK_SIGNAL_FUNC(endProgram),GTK_OBJECT(tmpwin)); gtk_box_pack_start(GTK_BOX(i_box2), i_but, TRUE, TRUE, 0); gtk_widget_show(i_but); gtk_grab_add(tmpwin);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -