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

📄 dmi.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
字号:
#include <windows.h>#include <stdio.h>#include <malloc.h>#include <string.h>#include <math.h>#include "resource.h"#include "global.h"#include "fx.h"extern LPFX Fx;int CreateDmiData(K_DATA *lpKData,int RNum,DATA *Data,PARA *Para){   int i,j; long m; double jia1,jia2,jia3; double Ttr,Tpdm,Tndm,Tadx; DMI_DATA *DmiData;                    DmiData=(DMI_DATA*)_fmalloc(sizeof(DMI_DATA)*RNum); memset(DmiData,0,sizeof(DMI_DATA)*RNum); for(j=0;j<RNum;j++) {            if(j==0)            {                       Ttr=Tpdm=Tndm=Tadx=0;             	jia1=fabs(lpKData[j].zg-lpKData[j].zd);             	if(j>0)             	{             		jia2=fabs(lpKData[j].zd-lpKData[j-1].ss);             		jia3=fabs(lpKData[j].zg-lpKData[j-1].ss);             		Tpdm=DmiData[j].pdm=lpKData[j].zg - lpKData[j-1].zg;             		if(DmiData[j].pdm<fabs(lpKData[j].zd - lpKData[j-1].zd))             			Tpdm=DmiData[j].pdm=0;             		Tndm=DmiData[j].ndm=lpKData[j].zd - lpKData[j-1].zd;             		if(DmiData[j].ndm<fabs(lpKData[j].zg - lpKData[j-1].zg))             			Tndm=DmiData[j].ndm=0;             			             	}             	else             	{             	 	jia2=jia3=0;             	 	DmiData[j].pdm=DmiData[j].ndm=0;             	}             	Ttr=DmiData[j].tr=max(jia1,max(jia2,jia3));             	             	DmiData[j].pdi=DmiData[j].ndi=0;             	DmiData[j].dx=DmiData[j].adx=0;             	Tadx=0;            }            else            {            	jia1=fabs(lpKData[j].zg-lpKData[j].zd);             	jia2=fabs(lpKData[j].zd-lpKData[j-1].ss);             	jia3=fabs(lpKData[j].zg-lpKData[j-1].ss);            	DmiData[j].tr=max(jia1,max(jia2,jia3));                             	DmiData[j].pdm=lpKData[j].zg - lpKData[j-1].zg;             	if(DmiData[j].pdm<0)	             	    DmiData[j].pdm=0;             	if(DmiData[j].pdm<fabs(lpKData[j].zd - lpKData[j-1].zd))             		DmiData[j].pdm=0;             	DmiData[j].ndm=lpKData[j-1].zd - lpKData[j].zd;             	if(DmiData[j].ndm<0)             	   DmiData[j].ndm=0;             	if(DmiData[j].ndm<fabs(lpKData[j].zg - lpKData[j-1].zg))             		             		DmiData[j].ndm=0;             			                            	if(j<=Para->periods[0]-1)            	{                               	    Ttr+=DmiData[j].tr;            	    Tpdm+=DmiData[j].pdm;            	    Tndm+=DmiData[j].ndm;            	    if(Tndm<0)            	        Tndm=0;                 	                  		DmiData[j].pdi=DmiData[j].ndi=0;             		DmiData[j].dx=DmiData[j].adx=0;            	            	}            	if(j>Para->periods[0]-1)            	{               	                	    m=j-Para->periods[0];         	 		             	 	Ttr+=DmiData[j].tr-DmiData[m].tr;            	 	Tpdm+=DmiData[j].pdm-DmiData[m].pdm;            	 		                     Tndm+=DmiData[j].ndm-DmiData[m].ndm;    	 		             	    if(Tndm<0)            	        Tndm=0;            	}            	if(j>=Para->periods[0]-1)            	{               		if(Ttr!=0)            		{            	    	DmiData[j].pdi=Tpdm/Ttr;            	    	DmiData[j].ndi=Tndm/Ttr;            	    	if(DmiData[j].pdi>1.00)            	    	   DmiData[j].pdi=1.00;            	    	if(DmiData[j].ndi>1.00)               	    		DmiData[j].ndi=1.00;               	    }            	    else            	    	DmiData[j].pdi=DmiData[j].ndi=0;            	    if(Tpdm+Tndm!=0)             	    	DmiData[j].dx=fabs((Tpdm-Tndm)/(Tpdm+Tndm));            	    else	            	        DmiData[j].dx=0;            	}            	if(j<Para->periods[0]*2-1)             	{            		Tadx+=DmiData[j].dx;            		DmiData[j].adx=0;            	}             	if(j==Para->periods[0]*2-1)               	{            	    Tadx+=DmiData[j].dx;            		DmiData[j].adx=0;            	            	}            	if(j>Para->periods[0]*2-1)            	{            	    m=Para->periods[0];            	    DmiData[j].adx=            	    	(DmiData[j-1].adx*(m-1)+DmiData[j].dx)/m;	            	}            	           	           	            }    }             for(j=0;j<10;j++)    {        if(Data->v==NULL)         	break;    	if(Data->v[j]!=NULL)    	{    		_ffree(Data->v[j]);    		Data->v[j]=NULL;    	}    }    Data->v==NULL;         Data->num =Para->dnum;     Data->no =Para->no;    strcpy(Data->gpdm,Fx->gpdm);    Data->type =Fx->type;    Data->range =Fx->range;    Data->size =RNum;    for(j=0;j<Data->num;j++)    	Data->v[j]=(double *)_fmalloc(sizeof(double)*RNum);    for(i=0;i<Data->num;i++)    {    	for(j=0;j<RNum&&i==0;j++)     		Data->v[i][j]=DmiData[j].pdi;    	for(j=0;j<RNum&&i==1;j++)     		Data->v[i][j]=DmiData[j].ndi;    	for(j=0;j<RNum&&i==2;j++)     		Data->v[i][j]=DmiData[j].adx;    	Data->method[i]=CURVE_METHOD;    }    //Para->price[2] =20;    //Para->price[3] =50;    //Para->price[4] =80;    Para->feature |=DW_ALL;    //Para->feature &=~DW_MAX;    //Para->feature &=~DW_MIN;    _ffree(DmiData);	return TRUE;}

⌨️ 快捷键说明

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