⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zplinewidget.ui.h

📁 股票分析系统
💻 H
📖 第 1 页 / 共 3 页
字号:
    float DDIN[Days];		float SDIN[Days];    float DX[Days];		        for(int i=1;i<Days;i++)    {	float A=fabs((data+i)->close()-(data+i)->low());	float B=fabs((data+i)->high()-(data+i-1)->close());	float C=fabs((data+i)->low()-(data+i-1)->close());		TR1[i]=(A>B)? A:B;  TR1[i]=(TR1[i]>C)? TR1[i]:C;	PDM[i]=(data+i)->high()-(data+i-1)->high();	PDM[i]=(PDM[i]>0)? PDM[i]:0;	NDM[i]=(data+i-1)->low()-(data+i)->low();	NDM[i]=(NDM[i]>0)? NDM[i]:0;    }        const int N=7;    for(int i=N;i<Days;i++)    {	TRN[i]=0;		PDMN[i]=0;	NDMN[i]=0;		for(int j=0;j<N;j++)	{	    TRN[i]+=TR1[i-j]; 	    PDMN[i]+= PDM[i-j]; 	    NDMN[i]+= NDM[i-j];	}		PDIN[i]=PDMN[i]/TRN[i];	NDIN[i]=NDMN[i]/TRN[i];	DDIN[i]=PDIN[i]-NDIN[i];	SDIN[i]=PDIN[i]+NDIN[i];	DX[i]=SDIN[i]-DDIN[i];       }        float ADX[Days];    float ADXR[Days];    ADX[N*2]=0;    for(int i=N ;i<2*N ;i++)  ADX[N *2]+= DX[i]/N;	    for(int i=2*N+1;i<Days;i++)    {	ADX[i]=(ADX[i-1]*6+DX[i])/7;    }        for(int i=3*N;i<Days;i++)    {	ADXR[i]=(ADX[i]+ADX[i-N])/2;    }	        float MAX=PDIN[N];float MIN=NDIN[N];        for(int i=N;i<Days;i++)    {	MAX=(MAX>PDIN[i])? MAX:PDIN[i];	MIN=(MIN<PDIN[i])? MIN:PDIN[i];	MAX=(MAX>NDIN[i])? MAX:NDIN[i];	MIN=(MIN<NDIN[i])? MIN:NDIN[i];    }    for(int i=2*N;i<Days;i++)    {	MAX=(MAX>ADX[i])? MAX:ADX[i];	MIN=(MIN<ADX[i])? MIN:ADX[i];    }        for(int i=3*N;i<Days;i++)    {	MAX=(MAX>ADXR[i])? MAX:ADXR[i];	MIN=(MIN<ADXR[i])? MIN:ADXR[i];    }    drawMaxMin(p,0,0,x,h,ht,MAX,MIN,5);    zw->setWorld(x,y,w,h,-0.5,MIN,((float)(Days)-0.5),MAX);        for(int i=N+1;i<Days;i++)    {	p->setPen(Avr1Color);	p->drawLine(zw->x(i-1),zw->y(PDIN[i-1]),zw->x(i),zw->y(PDIN[i]));	p->setPen(Avr2Color);	p->drawLine(zw->x(i-1),zw->y(NDIN[i-1]),zw->x(i),zw->y(NDIN[i]));    }    p->setPen(Avr3Color);    for(int i=2*N+1;i<Days;i++)    {	p->drawLine(zw->x(i-1),zw->y(ADX[i-1]),zw->x(i),zw->y(ADX[i]));    }    p->setPen(Avr4Color);    for(int i=3*N+1;i<Days;i++)    {	p->drawLine(zw->x(i-1),zw->y(ADXR[i-1]),zw->x(i),zw->y(ADXR[i]));    }    }void ZPLineWidget::drawEMV(QPainter* p,int x,int y,int w,int h,int ht){    int Days=(*pDaysTel)->getDays();    ZDaysStruct* data=(*pDaysTel)->getDay(0);    float EMV[Days];  float MID[Days]; float BRO[Days];     float EMVA[Days];        for(int i=1;i<Days;i++)    {	float A=((data+i)->high()+(data+i)->low())/2;	float B=((data+i-1)->high()+(data+i-1)->low())/2;	MID[i]=A-B;	BRO[i]=(data+i)->count() / ((data+i)->high()-(data+i)->low());    }        int N1=14;        for(int i=N1;i<Days;i++)    {	EMV[i]=0;	for(int j=0;j<N1;j++)EMV[i]+=(MID[i-j] / BRO[i-j])/ N1;	    }        int N2=9;    for(int i=N1+N2-1;i<Days;i++)    {	EMVA[i]=0;	for(int j=0;j<N2;j++)EMVA[i]+=EMV[i-j] / N2;	    }        float MAX=EMV[N1];float MIN=EMV[N1];    for(int i=N1;i<Days;i++)    {	MAX=(MAX>EMV[i])?MAX:EMV[i];	MIN=(MIN<EMV[i])?MIN:EMV[i];    }    for(int i=N1+N2-1;i<Days;i++)    {	MAX=(MAX>EMVA[i])?MAX:EMVA[i];	MIN=(MIN<EMVA[i])?MIN:EMVA[i];    }        drawMaxMin(p,0,0,x,h,ht,MAX,MIN,5,5);    zw->setWorld(x,y,w,h,-0.5,MIN,((float)(Days)-0.5),MAX);        p->setPen(Avr1Color);    for(int i=N1+1;i<Days;i++)    {	p->drawLine(zw->x(i-1),zw->y(EMV[i-1]),zw->x(i),zw->y(EMV[i]));    }        p->setPen(Avr2Color);    for(int i=N1+N2;i<Days;i++)    {	p->drawLine(zw->x(i-1),zw->y(EMVA[i-1]),zw->x(i),zw->y(EMVA[i]));    }}void ZPLineWidget::drawEXPMA(QPainter* p,int x,int y,int w,int h,int ht){    int Days=(*pDaysTel)->getDays();    ZDaysStruct* data=(*pDaysTel)->getDay(0);    float EXPMA1[Days]; float EXPMA2[Days];      int N1=12;int N2=50;    EXPMA1[1]=((data+1)->close()-(data)->close())*2.0/ (N1+1)+(data)->close();    EXPMA2[1]=((data+1)->close()-(data)->close())*2.0/ (N2+1)+(data)->close();        for(int i=2;i<Days;i++)    {	EXPMA1[i]=((data+i)->close()-EXPMA1[i-1])*2.0/ (N1+1)+EXPMA1[i-1];	EXPMA2[i]=((data+i)->close()-EXPMA2[i-1])*2.0/ (N2+1)+EXPMA2[i-1];    }            float MAX=EXPMA1[1];float MIN=EXPMA2[1];    for(int i=1;i<Days;i++)    {	MAX=(MAX>EXPMA1[i])?MAX:EXPMA1[i];	MIN=(MIN<EXPMA1[i])?MIN:EXPMA1[i];	MAX=(MAX>EXPMA2[i])?MAX:EXPMA2[i];	MIN=(MIN<EXPMA2[i])?MIN:EXPMA2[i];    }    for(int i=0;i<Days;i++)    {	MAX=(MAX>(data+i)->high())?MAX:(data+i)->high();	MIN=(MIN<(data+i)->low())?MIN:(data+i)->low();    }        drawMaxMin(p,0,0,x,h,ht,MAX,MIN,5);    zw->setWorld(x,y,w,h,-0.5,MIN,((float)(Days)-0.5),MAX);       for(int i=0;i<Days;i++)    {	ZDaysStruct *k=data+i;	if(k->open() <= k->close())	{	    p->setPen( UpColor );	    p->setBrush(UpColor);	}	else	{	    p->setPen( DownColor );	    p->setBrush(DownColor);	}	drawRectF(p,(-0.4+i),(k->close()),(0.4+i),(k->open())); 	p->drawLine(zw->x(i),zw->y(k->low()),zw->x(i),zw->y(k->high()));    }    p->setPen(Avr1Color);    for(int i=1;i<Days;i++)    {	p->drawLine(zw->x(i-1),zw->y(EXPMA1[i-1]),zw->x(i),zw->y(EXPMA1[i]));    }        p->setPen(Avr2Color);    for(int i=1;i<Days;i++)    {	p->drawLine(zw->x(i-1),zw->y(EXPMA2[i-1]),zw->x(i),zw->y(EXPMA2[i]));    }}void ZPLineWidget::drawKDJ(QPainter* p,int x,int y,int w,int h,int ht){    int Days=(*pDaysTel)->getDays();    ZDaysStruct* data=(*pDaysTel)->getDay(0);    float RSV[Days]; float K[Days]; float D[Days]; float J[Days];      int N1=9;int N2=3; int N3=3;        for(int i=N1-1;i<Days;i++)    {	float Ln=0;float Hn=0;	for(int j=0;j<N1;j++)	{	    Ln+=(data+i-j)->low()/N1;	    Hn+=(data+i-j)->high()/N1;	}	RSV[i]=((data+i)->close()-Ln)/ (Hn-Ln)*100.0;    }        K[N1-1]=RSV[N1-1];    for(int i=N1;i<Days;i++)    {	K[i]=K[i-1]*(N2-1)/ N2+RSV[i]/ N2;	    }        D[N1-1]=RSV[N1-1];    for(int i=N1;i<Days;i++)    {	D[i]=D[i-1]*(N3-1)/ N3+K[i]/ N3;	    }        for(int i=N1-1;i<Days;i++)    {	J[i]=D[i]*3-K[i]*2;    }        float MAX=K[N1-1];float MIN=K[N1-1];    for(int i=N1-1;i<Days;i++)    {	MAX=(MAX>K[i])?MAX:K[i];	MIN=(MIN<K[i])?MIN:K[i];	MAX=(MAX>D[i])?MAX:D[i];	MIN=(MIN<D[i])?MIN:D[i];	MAX=(MAX>J[i])?MAX:J[i];	MIN=(MIN<J[i])?MIN:J[i];    }        drawMaxMin(p,0,0,x,h,ht,MAX,MIN,5);    zw->setWorld(x,y,w,h,-0.5,MIN,((float)(Days)-0.5),MAX);       for(int i=N1;i<Days;i++)    {	p->setPen(Avr1Color);	p->drawLine(zw->x(i-1),zw->y(K[i-1]),zw->x(i),zw->y(K[i]));	p->setPen(Avr2Color);	p->drawLine(zw->x(i-1),zw->y(D[i-1]),zw->x(i),zw->y(D[i]));	p->setPen(Avr3Color);	p->drawLine(zw->x(i-1),zw->y(J[i-1]),zw->x(i),zw->y(J[i]));    }}void ZPLineWidget::drawMIKE(QPainter* p,int x,int y,int w,int h,int ht){    int Days=(*pDaysTel)->getDays();    ZDaysStruct* data=(*pDaysTel)->getDay(0);    float TPX[Days]; float TPY[Days];     float WR[Days]; float MR[Days]; 		float SR[Days];    float WS[Days]; float MS[Days]; 	float SS[Days];       int N1=10;int N2=12;        for(int i=0;i<Days;i++)    {	TPX[i]=((data+i)->high()+(data+i)->low()+(data+i)->close())/3;    }    for(int i=N1-1;i<Days;i++)    {	TPY[i]=0;	for(int j=0;j<N1;j++)	{	    TPY[i]+=TPX[i-j]/ N1;	}    }        float Hn[Days];float Ln[Days];    for(int i=N2-1;i<Days;i++)    {	Hn[i]=0;	Ln[i]=0;	for(int j=0;j<N2;j++)	{	    Hn[i]+=(data+i-j)->high()/ N2;	    Ln[i]+=(data+i-j)->low()/ N2;	}    }        for(int i=N2-1;i<Days;i++)    {	WR[i]=TPY[i]+(TPY[i]-Ln[i]);	MR[i]=TPY[i]+(Hn[i]-Ln[i]);	SR[i]=2*Hn[i]-Ln[i];    }        for(int i=N2-1;i<Days;i++)    {	WS[i]=TPY[i]-(Hn[i]-TPY[i]);	MS[i]=TPY[i]-(Hn[i]-Ln[i]);	SS[i]=2*Ln[i]-Hn[i];    }        float MAX=WR[N2-1];float MIN=WR[N2-1];    for(int i=N2-1;i<Days;i++)    {	MAX=(MAX>WR[i])?MAX:WR[i];	MIN=(MIN<WR[i])?MIN:WR[i];	MAX=(MAX>MR[i])?MAX:MR[i];	MIN=(MIN<MR[i])?MIN:MR[i];	MAX=(MAX>SR[i])?MAX:SR[i];	MIN=(MIN<SR[i])?MIN:SR[i];		MAX=(MAX>WS[i])?MAX:WS[i];	MIN=(MIN<WS[i])?MIN:WS[i];	MAX=(MAX>MS[i])?MAX:MS[i];	MIN=(MIN<MS[i])?MIN:MS[i];	MAX=(MAX>SS[i])?MAX:SS[i];	MIN=(MIN<SS[i])?MIN:SS[i];    }        drawMaxMin(p,0,0,x,h,ht,MAX,MIN,5);    zw->setWorld(x,y,w,h,-0.5,MIN,((float)(Days)-0.5),MAX);       for(int i=N2;i<Days;i++)    {	p->setPen(Line1Color);	p->drawLine(zw->x(i-1),zw->y(WR[i-1]),zw->x(i),zw->y(WR[i]));	p->setPen(Line2Color);	p->drawLine(zw->x(i-1),zw->y(MR[i-1]),zw->x(i),zw->y(MR[i]));	p->setPen(Line3Color);	p->drawLine(zw->x(i-1),zw->y(SR[i-1]),zw->x(i),zw->y(SR[i]));	p->setPen(Line4Color);	p->drawLine(zw->x(i-1),zw->y(WS[i-1]),zw->x(i),zw->y(WS[i]));	p->setPen(Line5Color);	p->drawLine(zw->x(i-1),zw->y(MS[i-1]),zw->x(i),zw->y(MS[i]));	p->setPen(Line6Color);	p->drawLine(zw->x(i-1),zw->y(SS[i-1]),zw->x(i),zw->y(SS[i]));    }}void ZPLineWidget::drawMACD(QPainter* p,int x,int y,int w,int h,int ht){    int Days=(*pDaysTel)->getDays();    ZDaysStruct* data=(*pDaysTel)->getDay(0);    float DIF[Days]; float DEA[Days]; float BAR[Days];    float EMA1[Days]; float EMA2[Days];     int N1=12;int N2=26;	int N3=10;        EMA1[0]=(data)->close();    EMA2[0]=(data)->close();    for(int i=1;i<Days;i++)    {	EMA1[i]=(data+i)->close()* 2/ (N1+1)+ EMA1[i-1] * (N1-1)/ (N1+1) ;	EMA2[i]=(data+i)->close()* 2/ (N2+1)+ EMA2[i-1] * (N2-1)/ (N2+1) ;	    }        for(int i=0;i<Days;i++)    {	DIF[i]=EMA1[i]-EMA2[i];    }        for(int i=N3-1;i<Days;i++)    {	DEA[i]=0;		for(int j=0;j<N3;j++)	{	    DEA[i]+=DIF[i-j]/ N3;	}	BAR[i]=(DIF[i]-DEA[i])*2;    }            float MAX=BAR[N3-1];float MIN=BAR[N3-1];    for(int i=N3-1;i<Days;i++)    {	MAX=(MAX>BAR[i])?MAX:BAR[i];	MIN=(MIN<BAR[i])?MIN:BAR[i];	MAX=(MAX>DEA[i])?MAX:DEA[i];	MIN=(MIN<DEA[i])?MIN:DEA[i];    }    for(int i=0;i<Days;i++)    {	MAX=(MAX>DIF[i])?MAX:DIF[i];	MIN=(MIN<DIF[i])?MIN:DIF[i];    }    MAX=fabs(MAX); 	MIN=fabs(MIN);    MAX=(MAX>MIN)?MAX:MIN;    MIN=-MAX;        drawMaxMin(p,0,0,x,h,ht,MAX,MIN,5,2);    zw->setWorld(x,y,w,h,-0.5,MIN,((float)(Days)-0.5),MAX);       for(int i=1;i<Days;i++)    {	p->setPen(Line1Color);	p->drawLine(zw->x(i-1),zw->y(DIF[i-1]),zw->x(i),zw->y(DIF[i]));    }    for(int i=N3;i<Days;i++)    {	p->setPen(Line2Color);	p->drawLine(zw->x(i-1),zw->y(DEA[i-1]),zw->x(i),zw->y(DEA[i]));    }       for(int i=N3-1;i<Days;i++)    {	ZDaysStruct *k=data+i;	if(k->open() <= k->close())	{	    p->setPen( UpColor );	}	else	{	    p->setPen( DownColor );	}	p->drawLine(zw->x(i),zw->y(0.0),zw->x(i),zw->y(BAR[i]));    }  }void ZPLineWidget::drawOBV(QPainter* p,int x,int y,int w,int h,int ht){    int Days=(*pDaysTel)->getDays();    ZDaysStruct* data=(*pDaysTel)->getDay(0);    float OBV[Days];        OBV[0]=data->count();    OBV[0]=(data->open()<data->close())?OBV[0]:-OBV[0];    for(int i=1;i<Days;i++)    {	OBV[i]=(data+i)->count();	OBV[i]=((data+i-1)->close()<(data+i)->close())?OBV[i]:-OBV[i];	OBV[i]+=OBV[i-1];    }        float MAX=OBV[0];float MIN=OBV[0];    for(int i=0;i<Days;i++)    {	MAX=(MAX>OBV[i])?MAX:OBV[i];	MIN=(MIN<OBV[i])?MIN:OBV[i];    }        drawMaxMin(p,0,0,x,h,ht,MAX,MIN,5);    zw->setWorld(x,y,w,h,-0.5,MIN,((float)(Days)-0.5),MAX);       for(int i=1;i<Days;i++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -