📄 jszb.c
字号:
#include "jszb.h"#include "gmclient.h"/*技术指标编号和名称*/int curjszbno;char curjszbname[8];int maxjszbnum;JSZBSTRUCT *jszbrec;int jszbInit(){ int i=0; if(!frechtblflag) return -1; maxjszbnum=13; jszbrec=(JSZBSTRUCT *)malloc(sizeof(JSZBSTRUCT)*maxjszbnum); strcpy(jszbrec[i].jszbname,"MACD"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].initflag[2]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].type[2]=JSZBCOLUMETYPE; jszbrec[i].num=3; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)DIFF; jszbrec[i].callback[1]=(JszbFunc)DEA; jszbrec[i].callback[2]=(JszbFunc)MACD; strcpy(jszbrec[i].jszblabel[0],"DIFF"); strcpy(jszbrec[i].jszblabel[1],"DEA"); strcpy(jszbrec[i].jszblabel[2],"MACD"); jszbrec[i].arg[0]=12; jszbrec[i].arg[1]=9; jszbrec[i].arg[2]=12; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; jszbrec[i].jszbdata[2]=NULL; i++; strcpy(jszbrec[i].jszbname,"DMA"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].num=2; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; strcpy(jszbrec[i].jszblabel[0],"DMA"); strcpy(jszbrec[i].jszblabel[1],"AMA"); jszbrec[i].callback[0]=(JszbFunc)DMA; jszbrec[i].callback[1]=(JszbFunc)AMA; jszbrec[i].arg[0]=10; jszbrec[i].arg[1]=10; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; i++; strcpy(jszbrec[i].jszbname,"EXPMA"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].initflag[2]=0; jszbrec[i].initflag[3]=0; jszbrec[i].initflag[4]=0; jszbrec[i].type[0]=JSZBKLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].type[2]=JSZBLINETYPE; jszbrec[i].type[3]=JSZBLINETYPE; jszbrec[i].type[4]=JSZBLINETYPE; jszbrec[i].num=5; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=NULL; jszbrec[i].callback[1]=(JszbFunc)SEMA; jszbrec[i].callback[2]=(JszbFunc)SEMA; jszbrec[i].callback[3]=(JszbFunc)SEMA; jszbrec[i].callback[4]=(JszbFunc)SEMA; strcpy(jszbrec[i].jszblabel[0],""); strcpy(jszbrec[i].jszblabel[1],"EMA5"); strcpy(jszbrec[i].jszblabel[2],"EMA10"); strcpy(jszbrec[i].jszblabel[3],"EMA20"); strcpy(jszbrec[i].jszblabel[4],"EMA60"); jszbrec[i].arg[0]=1; jszbrec[i].arg[1]=5; jszbrec[i].arg[2]=10; jszbrec[i].arg[3]=20; jszbrec[i].arg[4]=60; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; jszbrec[i].jszbdata[2]=NULL; jszbrec[i].jszbdata[3]=NULL; jszbrec[i].jszbdata[4]=NULL; i++; strcpy(jszbrec[i].jszbname,"BRAR"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].num=2; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)AR; jszbrec[i].callback[1]=(JszbFunc)BR; strcpy(jszbrec[i].jszblabel[0],"AR"); strcpy(jszbrec[i].jszblabel[1],"BR"); jszbrec[i].arg[0]=26; jszbrec[i].arg[1]=26; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; i++; strcpy(jszbrec[i].jszbname,"CR"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].initflag[2]=0; jszbrec[i].initflag[3]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].type[2]=JSZBLINETYPE; jszbrec[i].type[3]=JSZBLINETYPE; jszbrec[i].num=4; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)CR; jszbrec[i].callback[1]=(JszbFunc)REFMACR; jszbrec[i].callback[2]=(JszbFunc)REFMACR; jszbrec[i].callback[3]=(JszbFunc)REFMACR; strcpy(jszbrec[i].jszblabel[0],"CR"); strcpy(jszbrec[i].jszblabel[1],"MACR1"); strcpy(jszbrec[i].jszblabel[2],"MACR2"); strcpy(jszbrec[i].jszblabel[3],"MACR3"); jszbrec[i].arg[0]=26; jszbrec[i].arg[1]=5; jszbrec[i].arg[2]=10; jszbrec[i].arg[3]=20; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; jszbrec[i].jszbdata[2]=NULL; jszbrec[i].jszbdata[3]=NULL; i++; strcpy(jszbrec[i].jszbname,"VR"); jszbrec[i].initflag[0]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].num=1; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)VR; strcpy(jszbrec[i].jszblabel[0],"VR"); jszbrec[i].arg[0]=26; jszbrec[i].jszbdata[0]=NULL; i++; strcpy(jszbrec[i].jszbname,"OBV"); jszbrec[i].initflag[0]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].num=1; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)OBV; strcpy(jszbrec[i].jszblabel[0],"OBV"); jszbrec[i].arg[0]=1; jszbrec[i].jszbdata[0]=NULL; i++; strcpy(jszbrec[i].jszbname,"RSI"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].initflag[2]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].type[2]=JSZBLINETYPE; jszbrec[i].num=3; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=1; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)RSI; jszbrec[i].callback[1]=(JszbFunc)RSI; jszbrec[i].callback[2]=(JszbFunc)RSI; strcpy(jszbrec[i].jszblabel[0],"RSI6"); strcpy(jszbrec[i].jszblabel[1],"RSI12"); strcpy(jszbrec[i].jszblabel[2],"RSI24"); jszbrec[i].arg[0]=6; jszbrec[i].arg[1]=12; jszbrec[i].arg[2]=24; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; jszbrec[i].jszbdata[2]=NULL; i++; strcpy(jszbrec[i].jszbname,"W&R"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].num=2; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=1; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; strcpy(jszbrec[i].jszblabel[0],"WR1"); strcpy(jszbrec[i].jszblabel[1],"WR2"); jszbrec[i].callback[0]=(JszbFunc)WR; jszbrec[i].callback[1]=(JszbFunc)WR; jszbrec[i].arg[0]=10; jszbrec[i].arg[1]=20; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; i++; strcpy(jszbrec[i].jszbname,"KDJ"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].initflag[2]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].type[2]=JSZBLINETYPE; jszbrec[i].num=3; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=1; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)K; jszbrec[i].callback[1]=(JszbFunc)D; jszbrec[i].callback[2]=(JszbFunc)J; strcpy(jszbrec[i].jszblabel[0],"K"); strcpy(jszbrec[i].jszblabel[1],"D"); strcpy(jszbrec[i].jszblabel[2],"J"); jszbrec[i].arg[0]=3; jszbrec[i].arg[1]=3; jszbrec[i].arg[2]=3; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; jszbrec[i].jszbdata[2]=NULL; i++; strcpy(jszbrec[i].jszbname,"ROC"); jszbrec[i].initflag[0]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].num=1; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)ROCMA; strcpy(jszbrec[i].jszblabel[0],"ROC"); jszbrec[i].arg[0]=6; jszbrec[i].jszbdata[0]=NULL; i++; strcpy(jszbrec[i].jszbname,"PSY"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].num=2; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; strcpy(jszbrec[i].jszblabel[0],"PSY6"); strcpy(jszbrec[i].jszblabel[1],"PSY12"); jszbrec[i].callback[0]=(JszbFunc)PSY; jszbrec[i].callback[1]=(JszbFunc)PSY; jszbrec[i].arg[0]=6; jszbrec[i].arg[1]=12; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; i++; strcpy(jszbrec[i].jszbname,"BIAS"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].initflag[2]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].type[2]=JSZBLINETYPE; jszbrec[i].num=3; jszbrec[i].spiltlinenum= 3; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)BIAS; jszbrec[i].callback[1]=(JszbFunc)BIAS; jszbrec[i].callback[2]=(JszbFunc)BIAS; strcpy(jszbrec[i].jszblabel[0],"BIAS1"); strcpy(jszbrec[i].jszblabel[1],"BIAS2"); strcpy(jszbrec[i].jszblabel[2],"BIAS3"); jszbrec[i].arg[0]=6; jszbrec[i].arg[1]=12; jszbrec[i].arg[2]=24; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; jszbrec[i].jszbdata[2]=NULL; i++; /* strcpy(jszbrec[i].jszbname,"MA"); jszbrec[i].initflag[0]=0; jszbrec[i].initflag[1]=0; jszbrec[i].initflag[2]=0; jszbrec[i].type[0]=JSZBLINETYPE; jszbrec[i].type[1]=JSZBLINETYPE; jszbrec[i].type[2]=JSZBLINETYPE; jszbrec[i].num=3; jszbrec[i].spiltlinenum= 4; jszbrec[i].gdz=0; jszbrec[i].maxgdz= 100; jszbrec[i].mingdz= 0; jszbrec[i].callback[0]=(JszbFunc)SMA; jszbrec[i].callback[1]=(JszbFunc)SMA; jszbrec[i].callback[2]=(JszbFunc)SMA; strcpy(jszbrec[i].jszblabel[0],"MA1"); strcpy(jszbrec[i].jszblabel[1],"MA2"); strcpy(jszbrec[i].jszblabel[2],"MA3"); jszbrec[i].arg[0]=5; jszbrec[i].arg[1]=10; jszbrec[i].arg[2]=30; jszbrec[i].jszbdata[0]=NULL; jszbrec[i].jszbdata[1]=NULL; jszbrec[i].jszbdata[2]=NULL; i++;*/ curjszbno=0; strcpy(curjszbname,jszbrec[curjszbno].jszbname);// createJszbData(); return 0;}jpointer getJszbZg(int start,int end){ jpointer tmp=0; int i,j; int flag=0; if(start<=0 || end<start) return -1; for(i=0;i<jszbrec[curjszbno].num;i++){ if(!jszbrec[curjszbno].initflag[i]) continue; if(jszbrec[curjszbno].type[i] == JSZBKLINETYPE) continue; if(!flag){ tmp=jszbrec[curjszbno].jszbdata[i][start]; flag = 1; } for(j=0;start+j<=end && start+j<=stocksum;j++){ if(tmp<jszbrec[curjszbno].jszbdata[i][start+j]) tmp=jszbrec[curjszbno].jszbdata[i][start+j]; } } return tmp; }jpointer getJszbZd(int start,int end){ jpointer tmp=0; int i,j; int flag = 0; if(start<=0 || end<start) return -1; tmp=jszbrec[curjszbno].jszbdata[0][start]; for(i=0;i<jszbrec[curjszbno].num;i++){ if(!jszbrec[curjszbno].initflag[i]) continue; if(jszbrec[curjszbno].type[i] == JSZBKLINETYPE) continue; if(!flag){ tmp=jszbrec[curjszbno].jszbdata[i][start]; flag = 1; } for(j=0;start+j<=end && start+j<=stocksum;j++){ if(tmp>jszbrec[curjszbno].jszbdata[i][start+j]) tmp=jszbrec[curjszbno].jszbdata[i][start+j]; } } return tmp; }FUNC_JSZB(getJydate){ jpointer tmp; tmp=(jpointer)stock[point].jydate; return tmp;}FUNC_JSZB(getKpj){ jpointer tmp; tmp=(jpointer)stock[point].kpj; return tmp/100;}FUNC_JSZB(getSpj){ jpointer tmp; tmp=(jpointer)stock[point].spj; return tmp/100;}FUNC_JSZB(getZgj){ jpointer tmp; tmp=(jpointer)stock[point].zgj; return tmp/100;}FUNC_JSZB(getZdj){ jpointer tmp; tmp=(jpointer)stock[point].zdj; return tmp/100;}FUNC_JSZB(getCjl){ jpointer tmp; tmp=(jpointer)stock[point].cjsl; return tmp/100;}FUNC_JSZB(getCjje){ jpointer tmp; tmp=(jpointer)stock[point].cjje; return tmp/100;}FUNC_JSZB(isUp){ if(stock[point].spj>stock[point].kpj) return 1; else return 0;}FUNC_JSZB(isDown){ if(stock[point].spj<stock[point].kpj) return 1; else return 0;}FUNC_JSZB(isEqual){ if(stock[point].spj==stock[point].kpj) return 1; else return 0;}FUNC_JSZBOPR(REF){ return func(point-oprnum,jszbnum);}FUNC_JSZBOPR(HHV){ int i; int s; jpointer tmp; s=((point<stocksum)?point:stocksum); tmp=func(s,jszbnum); for(i=0;i<oprnum && s-oprnum>=1;i++){ if(tmp<func(s-i,jszbnum)) tmp=func(s-i,jszbnum); } return tmp; }FUNC_JSZBOPR(LLV){ int i; int s; jpointer tmp; s=((point<stocksum)?point:stocksum); tmp=func(s,jszbnum); for(i=0;i<oprnum && s-oprnum>=1;i++){ if(tmp>func(s-i,jszbnum)) tmp=func(s-i,jszbnum); } return tmp; }FUNC_JSZBOPR(MA){ int i; jpointer tmp=0; if(point-oprnum<=0) return 0; for(i=0;i<oprnum;i++) tmp+=func(point-i,jszbnum); return tmp/oprnum;}FUNC_JSZBOPR(SUM){ int i; jpointer tmp=0; if(point-oprnum<=0) return 0; for(i=0;i<oprnum;i++) tmp+=func(point-i,jszbnum); return tmp;}FUNC_JSZBOPR(EMA){ float p; if(oprnum<=12) p=0.1538; else p=0.0741; return MA(func,point-1,jszbnum,oprnum)- p*(func(point,jszbnum)-MA(func,point-1,jszbnum,oprnum));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -