📄 jszb.c
字号:
FUNC_JSZB(SMA){ if(point-num<=0) return 0; return MA(getSpj,point,0,num); }FUNC_JSZB(SEMA){ if(point-num<=0) return 0; return EMA(getSpj,point,0,num); }FUNC_JSZB(AR){ jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; tmp1=SUM(getZgj,point,0,num)- SUM(getKpj,point,0,num); tmp2=SUM(getKpj,point,0,num)- SUM(getZdj,point,0,num); if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp; }FUNC_JSZB(BR){ int i; jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; for(i=0;i<num;i++){ tmp1+=MAX(0,(getZgj(point-i,0)-REF(getSpj,point-i,0,1))); tmp2+=MAX(0,(REF(getSpj,point-i,0,1)-getZdj(point-i,0))); } if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp; }FUNC_JSZB(MID){ return (getZgj(point,num)+getZdj(point,num)+getSpj(point,num))/3;}FUNC_JSZB(CR){ int i; jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; if(jszbrec[curjszbno].initflag[0] == 1) return jszbrec[curjszbno].jszbdata[0][point]; else{ for(i=0;i<num;i++){ tmp1+=MAX(0,(getZgj(point-i,0)-REF(MID,point-i,0,1))); tmp2+=MAX(0,(REF(MID,point-i,0,1)-getZdj(point-i,0))); } if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp; }}FUNC_JSZB(MACR){// int i;// jpointer tmp=0;// if(jszbrec[curjszbno].jszbdata[0] == NULL) return 0; if(point-num<=0) return 0;/* for(i=0;i<num;i++) tmp+=jszbrec[curjszbno].jszbdata[0][point-i]; return tmp/num;*/ return MA(CR,point,26,num);}FUNC_JSZB(REFMACR){ return REF(MACR,point,num,(int)(num/2.5+1));}FUNC_JSZB(BIAS){ jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; tmp2=MA(getSpj,point,0,num); tmp1=getSpj(point,0)-tmp2; if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp; }FUNC_JSZB(RSI){ int i; jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; for(i=0;i<num;i++){ tmp1+=MAX(0,(getSpj(point-i,0)-REF(getSpj,point-i,0,1))); tmp2+=ABS(getSpj(point-i,0)-REF(getSpj,point-i,0,1)); } if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp; }FUNC_JSZB(WR){ jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; tmp1=HHV(getZgj,point,0,num); tmp2=LLV(getZdj,point,0,num); if((tmp1-tmp2)!=0) tmp=((getSpj(point,0)-tmp2)*100)/(tmp1-tmp2); return tmp;}FUNC_JSZB(RSV){ jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; tmp1=getSpj(point,0)-LLV(getZdj,point,0,num); tmp2=HHV(getZgj,point,0,num)-LLV(getZdj,point,0,num); if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp; }FUNC_JSZB(K){ if(point-num<=0) return 0; if(jszbrec[curjszbno].initflag[0] == 1) return jszbrec[curjszbno].jszbdata[0][point]; else return MA(RSV,point,9,num);}FUNC_JSZB(D){ if(point-num<=0) return 0; if(jszbrec[curjszbno].initflag[1] == 1) return jszbrec[curjszbno].jszbdata[1][point]; else return MA(K,point,3,num);}FUNC_JSZB(J){ return 3*K(point,num)-2*D(point,num);}FUNC_JSZB(ROC){ jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; tmp1=getSpj(point,0)-REF(getSpj,point,0,num); tmp2=REF(getSpj,point,0,num); if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp;}FUNC_JSZB(ROCMA){ return MA(ROC,point,12,num);}FUNC_JSZB(VR){ int i; jpointer tmp=0,tmp1=0,tmp2=0; if(point-num<=0) return 0; for(i=0;i<num;i++){ tmp1+=(getSpj(point-i,0)>REF(getSpj,point-i,0,1))? getCjl(point-i,0):0; tmp2+=(getSpj(point-i,0)<=REF(getSpj,point-i,0,1))? getCjl(point-i,0):0; } if(tmp2!=0) tmp=(tmp1/tmp2)*100; return tmp; }FUNC_JSZB(DMA){ return MA(getSpj,point,0,num)-MA(getSpj,point,0,num*5);}FUNC_JSZB(AMA){ return MA(DMA,point,10,num);}FUNC_JSZB(OBV){ jpointer tmp=0,tmp1=0; if(point < 1) return 0; if(point == 1) return getCjl(point,0); tmp1=getSpj(point,0)-REF(getSpj,point,0,1); if(tmp1>0) tmp=jszbrec[curjszbno].jszbdata[0][point-1]+getCjl(point,0); else if(tmp1<0) tmp=jszbrec[curjszbno].jszbdata[0][point-1]-getCjl(point,0); else tmp=jszbrec[curjszbno].jszbdata[0][point-1]; return tmp;}FUNC_JSZB(PSY){ int i; jpointer tmp=0; if(point-num<=0) return 0; for(i=0;i<num;i++){ if((getSpj(point-i,0)-REF(getSpj,point-i,0,1))>0) tmp++; } if(num!=0) tmp=(tmp/num)*100; return tmp; }FUNC_JSZB(DIFF){ if(point-num<=0) return 0; if(jszbrec[curjszbno].initflag[0] == 1) return jszbrec[curjszbno].jszbdata[0][point]; else return EMA(getSpj,point,0,num)-EMA(getSpj,point,0,2*num+2);}FUNC_JSZB(DEA){ if(point-num<=0) return 0; if(jszbrec[curjszbno].initflag[1] == 1) return jszbrec[curjszbno].jszbdata[1][point]; else return EMA(DIFF,point,12,num);}FUNC_JSZB(MACD){ return 2*(DIFF(point,12)-DEA(point,9));}void createJszbData(void){ int i; int j; if(!frechflag) return; releaseJszbData(); for(i=0;i<jszbrec[curjszbno].num && i<MAXJSZBLINENUM;i++){ jszbrec[curjszbno].jszbdata[i]=(jpointer *) malloc(sizeof(long)*(stocksum+10)); if(jszbrec[curjszbno].type[i] == JSZBKLINETYPE){ jszbrec[curjszbno].initflag[i]=1; continue; } for(j=1;j<=stocksum;j++){ jszbrec[curjszbno].jszbdata[i][j]= jszbrec[curjszbno].callback[i](j,jszbrec[curjszbno].arg[i]); } jszbrec[curjszbno].initflag[i]=1; }}void releaseJszbData(void){ int i; for(i=0;i<jszbrec[curjszbno].num;i++){ if(!jszbrec[curjszbno].initflag[i]) continue; free(jszbrec[curjszbno].jszbdata[i]); jszbrec[curjszbno].initflag[i] = 0; } }int changeJszb(int num){ if(num<0 && num>maxjszbnum) return FAIL; releaseJszbData(); curjszbno=num; strcpy(curjszbname,jszbrec[curjszbno].jszbname); createJszbData(); return SUCCESS;}int findNextJszb(void){ int tmp=curjszbno; if(tmp>=(maxjszbnum-1)) tmp=0; else tmp++; return changeJszb(tmp);}int findPreJszb(void){ int tmp=curjszbno; if(tmp<=0) tmp=(maxjszbnum-1); else tmp--; return changeJszb(tmp);}int findJszb(char *name){ int i; for(i=0;i<maxjszbnum;i++){ if(!strcmp(name,jszbrec[i].jszbname)) return changeJszb(i); } return FAIL;}int getAreazgj(int areastart,int areaend){ int i; int tmpzgj; if(frechflag == 0) return 0; if(areastart<=0 || areaend<areastart) return 0; tmpzgj=(stocksum>0)?stock[areastart].zgj:100; for(i=0;areastart+i<=areaend && areastart+i<=stocksum;i++){ if(tmpzgj<stock[areastart+i].zgj) tmpzgj=stock[areastart+i].zgj; } // areazgj=tmpzgj; return tmpzgj;}int getAreazdj(int areastart,int areaend){ int i; int tmpzdj; if(frechflag == 0) return 0; if(areastart<=0 || areaend<areastart) return 0; tmpzdj=(stocksum>0)?stock[areastart].zdj:0; for(i=0;areastart+i<=areaend && areastart+i<=stocksum;i++){ if(tmpzdj>stock[areastart+i].zdj) tmpzdj=stock[areastart+i].zdj; } // areazdj=tmpzdj; return tmpzdj;}long getAreacjl(int areastart,int areaend){ int i; long tmpcjl; if(frechflag == 0) return 0; if(areastart<=0 || areaend<areastart) return 0; tmpcjl=(stocksum>0)?stock[areastart].cjsl:10; for(i=0;areastart+i<=areaend && areastart+i<=stocksum;i++){ if(tmpcjl<stock[areastart+i].cjsl) tmpcjl=stock[areastart+i].cjsl; } // areacjl=tmpcjl; return tmpcjl;}long getAreacjlTotal(int areastart,int areaend){ int i; long tmpcjl=0; if(frechflag == 0) return 0; if(areastart<=0 || areaend<areastart) return 0; for(i=0;areastart+i<=areaend && areastart+i<=stocksum;i++){ tmpcjl+=stock[areastart+i].cjsl; } return tmpcjl;}long getAreacjjeTotal(int areastart,int areaend){ int i; long tmpcjje=0; if(frechflag == 0) return 0; if(areastart<=0 || areaend<areastart) return 0; for(i=0;areastart+i<=areaend && areastart+i<=stocksum;i++){ tmpcjje+=stock[areastart+i].cjje; } return tmpcjje;}int getAverageLine(int addr,int num){ int i; int tmp; if(!frechflag) return -1; if(addr-num<=0) return 0; tmp = 0; for(i=0;i<num && addr-i>=1;i++){ tmp+=stock[addr-i].spj; } tmp=tmp/num; return tmp; }long getAverageColume(int addr,int num){ int i; long tmp; if(!frechflag) return -1; if(addr-num<=0) return 0; tmp = 0; for(i=0;i<num && addr-i>=1;i++){ tmp+=stock[addr-i].cjsl; } tmp=tmp/num; return tmp; }int getMaxFsColume(){ int i; int tmpcjl; if(frechfsflag == 0) return 0; tmpcjl=(fssum>0)?fs[0].colume:10; for(i=0;i<fssum && i<MAXFSLINENUM;i++){ if(tmpcjl<fs[i].colume) tmpcjl=fs[i].colume; } // areacjl=tmpcjl; return tmpcjl;}int getFsPriceZgj(){ int i; int tmpzgj; if(frechfsflag == 0) return 0; tmpzgj=(fssum>0)?fs[0].price:200; for(i=0;i<fssum && i<MAXFSLINENUM;i++){ if(tmpzgj<fs[i].price) tmpzgj=fs[i].price; } // areazgj=tmpzgj; return tmpzgj;}int getFsPriceZdj(){ int i; int tmpzgj; if(frechfsflag == 0) return 0; tmpzgj=(fssum>0)?fs[0].price:0; for(i=0;i<fssum && i<MAXFSLINENUM;i++){ if(tmpzgj>fs[i].price) tmpzgj=fs[i].price; } // areazgj=tmpzgj; return tmpzgj;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -