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

📄 sv_hq.c

📁 站长96年写的一个Internet上用的股票行情、分析、交易、资讯程序源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		if(j <HqData[jys].recCount)			FldToString(buffer,(FieldStruct *)&GpkData[jys].fldStruct[1],						HqData[jys].lpPreData[j].zqmc);	}	if(i <rec_count)	{		for(; i<HqData[jys].recCount; i++)		{			strcpy(HqData[jys].lpPreData[i].zqmc,					HqData[jys].lpPreData[i].zqdm);		}	}	free(buffer);		return TRUE;}int CheckZqdm(LPSTR lpzqdm){	return 0;}extern long tim_seconds;//取大盘数据int GetDpData(int jys, BOOL fFirst){	int i;	//int jys;	float oldjg;	long b_lc =0L, s_lc =0L;	HQ_REF_DATA LastHq;	DP_DATA LastDp;	int rec_num;		memcpy(&LastDp, &DpData[jys], sizeof(DP_DATA));	DpData[jys].cjzje =CalcCjzje(jys);	DpData[jys].npbl =CalcNpbl(jys);	DpData[jys].cjss =CalcCjss(jys);	DpData[jys].upCount =DpData[jys].downCount =DpData[jys].equalCount =0;		for(i =0; i<HqData[jys].recCount; i++)	{		oldjg =HqData[jys].lpRefData[i].zjjg;		//如果不是指数,则计算升跌家数		if(!IsZsRec(jys, i))		{			if(HqData[jys].lpRefData[i].zdf >0)				DpData[jys].upCount ++;			else if(HqData[jys].lpRefData[i].zdf <0)				DpData[jys].downCount ++;			else DpData[jys].equalCount ++;		}		else		{			memcpy(&LastHq, &HqData[jys].lpRefData[i], sizeof(HQ_REF_DATA));							HqData[jys].lpRefData[i].cjss =DpData[jys].cjss;			HqData[jys].lpRefData[i].cjje =DpData[jys].cjzje;			HqData[jys].lpRefData[i].npzl 					=(long)((double)DpData[jys].npbl*(double)DpData[jys].cjss);			HqData[jys].lpRefData[i].wb =0;			HqData[jys].lpRefData[i].lc =DpData[jys].cjss-LastDp.cjss;			if(HqData[jys].lpRefData[i].lc <0)				HqData[jys].lpRefData[i].lc =0L;											if(jys ==0) rec_num =HqData[jys].recCount-i;			else rec_num =i;			if(!fFirst)			{				if(tim_seconds -zs_times[jys][rec_num] >gnHqRefreshTime)				{					GraphData[jys].lpGraData[i].lc =							DpData[jys].cjss-oldDpCjss2[jys][rec_num];					GetDpGraData(jys, i);					if(GraphData[jys].lpGraData[i].lc)						WriteGraData(jys, i);					zs_times[jys][rec_num] =tim_seconds;					oldDpCjss2[jys][rec_num] =DpData[jys].cjss;				}			}			else			{				zs_times[jys][rec_num] =tim_seconds;				oldDpCjss2[jys][rec_num] =DpData[jys].cjss;			}		}	}		if(memcmp(&LastDp, &DpData[jys], sizeof(DP_DATA))) return 1;		return 0;}int GetMaxMin10(int jys){	int ret =0;	MAXMIN_DATA LastMaxMin[2];		memcpy(&LastMaxMin[0], &MaxMinData[jys][0], sizeof(MAXMIN_DATA));	memcpy(&LastMaxMin[1], &MaxMinData[jys][1], sizeof(MAXMIN_DATA));	GetMaxZd10(jys);	GetMaxZdf10(jys);	GetMaxCjss10(jys);	GetMaxCjje10(jys);	if(memcmp(&MaxMinData[jys][0], &LastMaxMin[0], sizeof(MAXMIN_DATA)))		ret++;	GetMinZd10(jys);	GetMinZdf10(jys);	GetMinCjss10(jys);	GetMinCjje10(jys);	if(memcmp(&MaxMinData[jys][1], &LastMaxMin[1], sizeof(MAXMIN_DATA)))		ret+=2;		return ret;}void GetMaxZdf10(int jys){	GetFloatSort10(jys, 8, SORT_UP, &MaxMinData[jys][0].recNum[0][0]);}void GetMinZdf10(int jys){	GetFloatSort10(jys, 8, SORT_DOWN, &MaxMinData[jys][1].recNum[0][0]);}void GetMaxCjss10(int jys){	GetLongSort10(jys, 9, SORT_UP, &MaxMinData[jys][0].recNum[2][0]);}void GetMinCjss10(int jys){	GetLongSort10(jys, 9, SORT_DOWN, &MaxMinData[jys][1].recNum[2][0]);}void GetMaxCjje10(int jys){	GetLongSort10(jys, 13, SORT_UP, &MaxMinData[jys][0].recNum[3][0]);}void GetMinCjje10(int jys){	GetLongSort10(jys, 13, SORT_DOWN, &MaxMinData[jys][1].recNum[3][0]);}void GetMaxZd10(int jys){	int key, i, j, n;	float fval, f1, f;	int count =0;	int fldNum =8;				for(i =0; i<10; i++)		MaxMinData[jys][0].recNum[1][i] =i;			for(i =0; i<HqData[jys].recCount; i++)		keys[i] =i;		for(i =0; i<HqData[jys].recCount; i++)	{		if(!IsMaxMin(jys, keys[i])) continue;		if(HqData[jys].lpRefData[keys[i]].zjjg ==0) continue;		key =i;		if(HqData[jys].lpPreData[keys[key]].zrsp)			fval =HqData[jys].lpRefData[keys[key]].zjjg					-HqData[jys].lpPreData[keys[key]].zrsp;		else fval =-100;		for(j =i+1; j<HqData[jys].recCount; j++)		{			if(!IsMaxMin(jys, keys[j])) continue;			if(HqData[jys].lpRefData[keys[j]].zjjg ==0) continue;			if(HqData[jys].lpPreData[keys[j]].zrsp)				f1 =HqData[jys].lpRefData[keys[j]].zjjg						-HqData[jys].lpPreData[keys[j]].zrsp;			else f1 =-100;			f =f1-fval;			if(f1>fval)			{				key =j;				fval =f1;			}		}		if(key >i)		{			//fval =*(float *)GetHqFldPos(jys, keys[key], fldNum);			n =keys[i];			keys[i] =keys[key];			keys[key] =n;		}		MaxMinData[jys][0].recNum[1][count] =key;		if(++count >=10) break;	}}void GetMinZd10(int jys){	int key, i, j, n;	float fval, f1, f;	int count =0;	int fldNum =8;				for(i =0; i<10; i++)		MaxMinData[jys][1].recNum[1][i] =i;			for(i =0; i<HqData[jys].recCount; i++)		keys[i] =i;		for(i =0; i<HqData[jys].recCount; i++)	{		if(!IsMaxMin(jys, keys[i])) continue;		if(HqData[jys].lpRefData[keys[i]].zjjg ==0) continue;		key =i;		if(HqData[jys].lpPreData[keys[key]].zrsp)			fval =HqData[jys].lpRefData[keys[key]].zjjg					-HqData[jys].lpPreData[keys[key]].zrsp;		else fval =100;		for(j =i+1; j<HqData[jys].recCount; j++)		{			if(!IsMaxMin(jys, keys[j])) continue;			if(HqData[jys].lpRefData[keys[j]].zjjg ==0) continue;			if(HqData[jys].lpPreData[keys[j]].zrsp)				f1 =HqData[jys].lpRefData[keys[j]].zjjg						-HqData[jys].lpPreData[keys[j]].zrsp;			else f1 =100;			f =f1-fval;			if(f1<fval)			{				key =j;				fval =f1;			}		}		if(key >i)		{			//fval =*(float *)GetHqFldPos(jys, keys[key], fldNum);			n =keys[i];			keys[i] =keys[key];			keys[key] =n;		}		MaxMinData[jys][1].recNum[1][count] =key;		if(++count >=10) break;	}}BOOL CheckTpbz(int jys, LPSTR buffer){	return FALSE;}BOOL IsZsRec(int jys, int rec_num){	if(jys ==0)	{		if(!strncmp(HqData[jys].lpPreData[rec_num].zqdm, "99", 2))			return TRUE;	}	else		if(!strncmp(HqData[jys].lpPreData[rec_num].zqdm, "0000", 4)			&& (HqData[jys].lpPreData[rec_num].zqdm[4] =='0'				||HqData[jys].lpPreData[rec_num].zqdm[4] =='1'))			return TRUE;		return FALSE;}LPSTR GetHqFldPos(int jys, int rec_num, int fld_num){	switch(fld_num)	{		case 0:		return (LPSTR)&HqData[jys].lpPreData[rec_num].zqdm[0];		case 1:		return (LPSTR)&HqData[jys].lpPreData[rec_num].zrsp;		case 2:		return (LPSTR)&HqData[jys].lpPreData[rec_num].jrkp;		case 3:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zgjg;		case 4:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zdjg;		case 5:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zgjm;		case 6:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zdjm;		case 7:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zjjg;		case 8:		return (LPSTR)&HqData[jys].lpRefData[rec_num].zdf;		case 9:		return (LPSTR)&HqData[jys].lpRefData[rec_num].cjss;		case 10:		return (LPSTR)&HqData[jys].lpRefData[rec_num].lc;		case 11:		return (LPSTR)&HqData[jys].lpRefData[rec_num].npzl;		case 12:		return (LPSTR)&HqData[jys].lpRefData[rec_num].wb;		case 13:		return (LPSTR)&HqData[jys].lpRefData[rec_num].cjje;	}}int GetFloatSort10(int jys, int fldNum, int type, int *lpKeys){	int key, i, j, n;	float fval, f1, f;	int count =0;			for(i =0; i<10; i++)		lpKeys[i] =i;			for(i =0; i<HqData[jys].recCount; i++)		keys[i] =i;		for(i =0; i<HqData[jys].recCount; i++)	{		if(!IsMaxMin(jys, keys[i])) continue;		if(HqData[jys].lpRefData[keys[i]].zjjg ==0) continue;		key =i;		fval =*(float*)GetHqFldPos(jys, keys[key], fldNum);		for(j =i+1; j<HqData[jys].recCount; j++)		{			if(!IsMaxMin(jys, keys[j])) continue;			if(HqData[jys].lpRefData[keys[j]].zjjg ==0) continue;			f1 =*(float *)GetHqFldPos(jys, keys[j], fldNum);			f =f1-fval;			if(type ==SORT_UP && f>.0)			{				key =j;				fval =f1;			}			else if(type ==SORT_DOWN && f<.0)			{				key =j;				fval =f1;			}		}		if(key >i)		{			//fval =*(float *)GetHqFldPos(jys, keys[key], fldNum);			n =keys[i];			keys[i] =keys[key];			keys[key] =n;		}		lpKeys[count] =key;		if(++count >=10) break;	}	return 0;}int GetLongSort10(int jys, int fldNum, int type, int *lpKeys){	int key, i, j, n;	long lval, l1, l;	int count =0;		for(i =0; i<10; i++)		lpKeys[i] =i;			for(i =0; i<HqData[jys].recCount; i++)		keys[i] =i;		for(i =0; i<HqData[jys].recCount; i++)	{		if(!IsMaxMin(jys, keys[i])) continue;		if(HqData[jys].lpRefData[keys[i]].zjjg ==0) continue;		key =i;		lval =*(long*)GetHqFldPos(jys, keys[key], fldNum);		for(j =i+1; j<HqData[jys].recCount; j++)		{			if(!IsMaxMin(jys, keys[j])) continue;			if(HqData[jys].lpRefData[keys[j]].zjjg ==0) continue;			l1 =*(long *)GetHqFldPos(jys, keys[j], fldNum);			l =l1-lval;			if(type ==SORT_UP && l>.0)			{				key =j;				lval =l1;			}			else if(type ==SORT_DOWN && l<.0)			{				key =j;				lval =l1;			}		}		if(key >i)		{			//lval =*(long *)GetHqFldPos(jys, keys[key], fldNum);			n =keys[i];			keys[i] =keys[key];			keys[key] =n;		}		lpKeys[count] =key;		if(++count >=10) break;	}	return 0;}long CalcCjzje(int jys){	int i;	long l =0;		for(i =0; i<HqData[jys].recCount; i++)	{   		if(jys==0)		{			if(HqData[jys].lpPreData[i].zqdm[0]=='1'||HqData[jys].lpPreData[i].zqdm[0]=='9')				continue;			if(HqData[jys].lpPreData[i].zqdm[0]=='3'||HqData[jys].lpPreData[i].zqdm[0]=='8')				continue;						}		if(jys==1)		{   			//if(strncmp(HqData[jys].lpPreData[i].zqdm,"70",2)!=0&&strncmp(HqData[jys].lpPreData[i].zqdm,"71",2)!=0)            {				if(HqData[jys].lpPreData[i].zqdm[0]=='0'||HqData[jys].lpPreData[i].zqdm[0]=='1'||					HqData[jys].lpPreData[i].zqdm[0]=='2'||HqData[jys].lpPreData[i].zqdm[0]=='7')				continue;					}		}		if(!IsZsRec(jys, i))			   				l +=HqData[jys].lpRefData[i].cjje;	}		return l;}float CalcNpbl(int jys){	int i;	long double lfbuy =0, lftotal =0;	float lf;		for(i =0; i<HqData[jys].recCount; i++)	{   		if(jys==0)		{			if(HqData[jys].lpPreData[i].zqdm[0]=='1'||HqData[jys].lpPreData[i].zqdm[0]=='9')				continue;			if(HqData[jys].lpPreData[i].zqdm[0]=='3'||HqData[jys].lpPreData[i].zqdm[0]=='8')				continue;						}		if(jys==1)		{ 			//if(strncmp(HqData[jys].lpPreData[i].zqdm,"70",2)!=0&&strncmp(HqData[jys].lpPreData[i].zqdm,"71",2)!=0)		    {				if(HqData[jys].lpPreData[i].zqdm[0]=='0'||HqData[jys].lpPreData[i].zqdm[0]=='1'||					HqData[jys].lpPreData[i].zqdm[0]=='2'||HqData[jys].lpPreData[i].zqdm[0]=='7')				continue;					}		}		if(!IsZsRec(jys, i))		{			lfbuy +=(long double)HqData[jys].lpRefData[i].npzl;			lftotal +=(long double)HqData[jys].lpRefData[i].cjss;		}	}		if(lftotal ==0) return (float)0;		lf =(float)(lfbuy/lftotal);	return lf;}long CalcCjss(int jys){	int i;	long l =0;		for(i =0; i<HqData[jys].recCount; i++)	{		if(jys==0)		{			if(HqData[jys].lpPreData[i].zqdm[0]=='1'||HqData[jys].lpPreData[i].zqdm[0]=='9')				continue;			if(HqData[jys].lpPreData[i].zqdm[0]=='3'||HqData[jys].lpPreData[i].zqdm[0]=='8')				continue;					}		if(jys==1)		{    			//if(strncmp(HqData[jys].lpPreData[i].zqdm,"70",2)!=0&&strncmp(HqData[jys].lpPreData[i].zqdm,"71",2)!=0)			{				if(HqData[jys].lpPreData[i].zqdm[0]=='0'||HqData[jys].lpPreData[i].zqdm[0]=='1'||					HqData[jys].lpPreData[i].zqdm[0]=='2'||HqData[jys].lpPreData[i].zqdm[0]=='7')				continue;					}		}			if(!IsZsRec(jys, i))			l +=HqData[jys].lpRefData[i].cjss;	}	return l;}int UDPBlockingHook(void){	MSG msg;	if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))	{		if(!ghWndMain || !IsDialogMessage(ghWndMain, &msg))		{			TranslateMessage(&msg);			DispatchMessage(&msg);   			if(msg.message ==WM_QUIT)			{				PostQuitMessage(0);				run_cancelled =TRUE;               				return FALSE;			}		}            		return TRUE;	}	return FALSE;}int HqAllocMem(int jys, int recCount){	if(HqData[jys].recCount ==0)	{		HqData[jys].recCount =recCount;		HqData[jys].lpPreData =(LPHQ_PRE_DATA)GlobalAllocPtr(GHND, 						HqData[jys].recCount*sizeof(HQ_PRE_DATA));		HqData[jys].lpRefData =(LPHQ_REF_DATA)GlobalAllocPtr(GHND, 						HqData[jys].recCount*sizeof(HQ_REF_DATA));		HqData[jys].lpbChanged =(BYTE *)GlobalAllocPtr(GHND, 						HqData[jys].recCount*HQ_REF_ITEM_COUNT);		GraphData[jys].lpGraData =(LPGRA_DATA)GlobalAllocPtr(GHND,						HqData[jys].recCount*sizeof(GRA_DATA));		GraphData[jys].lpGraHead =(LPGRA_HEAD)GlobalAllocPtr(GHND,						HqData[jys].recCount*sizeof(GRA_HEAD));		MmpData[jys].lpMmp =(LPMMP)GlobalAllocPtr(GHND,				HqData[jys].recCount*sizeof(MMP));		MmpData[jys].lpChanged =(BYTE *)GlobalAllocPtr(GHND,						HqData[jys].recCount);	}	else if(HqData[jys].recCount !=recCount)	{		HqData[jys].recCount =recCount;		HqData[jys].lpPreData =(LPHQ_PRE_DATA)GlobalReAllocPtr(HqData[jys].lpPreData,					HqData[jys].recCount*sizeof(HQ_PRE_DATA), GMEM_MOVEABLE);		HqData[jys].lpRefData =(LPHQ_REF_DATA)GlobalReAllocPtr(HqData[jys].lpRefData,					HqData[jys].recCount*sizeof(HQ_REF_DATA), GMEM_MOVEABLE);		HqData[jys].lpbChanged =(BYTE *)GlobalReAllocPtr(HqData[jys].lpbChanged,					HqData[jys].recCount*HQ_REF_ITEM_COUNT, GMEM_MOVEABLE);		GraphData[jys].lpGraHead =(LPGRA_HEAD)GlobalReAllocPtr(GraphData[jys].lpGraHead,					HqData[jys].recCount*sizeof(GRA_HEAD),GMEM_MOVEABLE);		GraphData[jys].lpGraData =(LPGRA_DATA)GlobalReAllocPtr(GraphData[jys].lpGraData,					HqData[jys].recCount*sizeof(GRA_DATA),GMEM_MOVEABLE);		MmpData[jys].lpMmp =(LPMMP)GlobalReAllocPtr(MmpData[jys].lpMmp,					HqData[jys].recCount*sizeof(MMP), GMEM_MOVEABLE);		MmpData[jys].lpChanged =(BYTE *)GlobalReAllocPtr(MmpData[jys].lpChanged,					HqData[jys].recCount, GHND);	}		if(HqData[jys].lpPreData ==NULL)	{		ErrMsg(ghWndMain, "alloc mem pre data failed!");		return -1;	}			if(HqData[jys].lpRefData ==NULL)	{		ErrMsg(ghWndMain, "alloc mem ref data failed!");		return -1;	}	if(HqData[jys].lpbChanged ==NULL)	{		ErrMsg(ghWndMain, "alloc mem chg data failed!");		return -1;	}	if(GraphData[jys].lpGraData ==NULL || GraphData[jys].lpGraHead ==NULL)	{		ErrMsg(ghWndMain, "alloc mem graph data failed!");		return -1;	}	if(MmpData[jys].lpMmp ==NULL)	{		ErrMsg(ghWndMain, "alloc mem mmp failed!");		return -1;	}	if(MmpData[jys].lpChanged ==NULL)	{		ErrMsg(ghWndMain, "alloc mem mmp changed failed!");		return -1;	}	return 0;       }BOOL IsMaxMin(int jys, int rec_num){	char c;	c =HqData[jys].lpPreData[rec_num].zqdm[0];      		if(IsZsRec(jys, rec_num)) return FALSE;	if(jys ==0)	{		if(c =='0' || c =='4') return TRUE;             	}	else if((c =='0' && !IsZsRec(jys, rec_num))			|| c =='5' || c=='6')		return TRUE;		return FALSE;}BOOL IsB(int jys, int rec_num){	if((jys ==0 && HqData[jys].lpPreData[rec_num].zqdm[0] =='2')		|| (jys ==1 && HqData[jys].lpPreData[rec_num].zqdm[0] =='2'))		return TRUE;	return FALSE;}BOOL IsGuoZhai(int jys, int rec_num){	return FALSE;}int GetGraData(int jys, int i, LPHQ_REF_DATA lpLastHq){	float jg1, jg2;		if(HqData[jys].lpRefData[i].lc>0)	{		//计算内盘		//GraphData[jys].lpGraHead[i].dateNum==date_num;		GraphData[jys].lpGraData[i].tim=tim;                                    		if(GraphData[jys].lpGraHead[i].minCount==0)		{			//第一次有正量差,开市初始化			//HqData[jys].lpPreData[i].jrkp=lpLastHq->zjjg;			//初始化分时数据

⌨️ 快捷键说明

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