Example #1
0
DWORD WINAPI Classify_Data2(LPVOID lpParamter)
{

	OneMinute oneninute;
	BaseData *base;
	base= &oneninute;


	bool flag = false;        //每次只处理一个数据

 	while(1)
 	{

		if(method_Rest_Time())
		{
			Sleep(1000);
		    //在休盘时间重置    清除内存中数据							/**********要改的地方**********/
			if (oneninute.tsmd_a->size()!=0)
			{
				oneninute.TIME_INTERVAL=0;
				oneninute.contract="";
				oneninute.compare_time=0;
				memset(&(oneninute.current_data),0,sizeof(oneninute.current_data));
				memset(&(oneninute.compare_data),0,sizeof(oneninute.compare_data));
				oneninute.tsmd_a = NULL;
				oneninute.tsmd_a= new map<string,OneMinute*>();
				base = NULL;
				base = &oneninute;
			}
		}

 		//进入临界区
 		EnterCriticalSection(&cs);
 		CThostFtdcDepthMarketDataField_Custom* dd =cmdSpi_custom->methodGetDatas_After();
 		//释放临界区
 		LeaveCriticalSection(&cs);
     	if (dd!=NULL)
     	{	
    		flag = true;   				
    	}
    	if (flag)
 		{
			
 			flag = false;  
 
 			//转换数据
			CThostFtdcDepthMarketDataField_Custom_Tick ct = methodChangeData(*dd);
			if (!base->isExist((string)(ct.InstrumentID)))
 			{
				base->addContractToMap(&ct);
 			}
 			else
			{
 				base->updateData(&ct);			
 			}			
 			
 		}//end flag				
 
 	}//end while
 
}//end Classify_Data2
Example #2
0
DWORD WINAPI Classify_Data2(LPVOID lpParamter)
{

	BaseDataInherit basedatainherit;
	basedatainherit.TIME_INTERVAL =DATA_TIME_INTERVAL;   //默认时间间隔


	BaseData *base;										 //基类指针
	base= &basedatainherit;

	bool flag = false;        //每次只处理一个数据

 	while(1)
 	{
		//休盘时间清空数据
		if(method_Rest_Time())
		{
			Sleep(1000);
			//在休盘时间重置    清除内存中数据							//要改的地方
			if (basedatainherit.tsmd_a->size()!=0)
			{
				basedatainherit.TIME_INTERVAL = DATA_TIME_INTERVAL;
				basedatainherit.contract="";
				basedatainherit.compare_time=0;
				memset(&(basedatainherit.current_data),0,sizeof(basedatainherit.current_data));
				memset(&(basedatainherit.compare_data),0,sizeof(basedatainherit.compare_data));
				basedatainherit.tsmd_a = NULL;
				basedatainherit.tsmd_a= new map<string,BaseDataInherit*>();
				base = NULL;
				base = &basedatainherit;
			}
		}
		
 		//进入临界区
 		EnterCriticalSection(&cs);
 		CThostFtdcDepthMarketDataField_Custom dd =cmdSpi_custom->methodGetDatas_After();
 		//释放临界区
 		LeaveCriticalSection(&cs);	
     	if (dd.TradingDay!=0)
     	{	
    		flag = true;   				
    	}else{
			//睡眠10ms,防止cpu过高      20151222 加
			Sleep(10);
		}
    	if (flag)
 		{
			//////////////////////////////////////////////////////////////////////////
			//处理郑商所夜盘日期问题
			if (dd.UpdateTime>=210000&&dd.UpdateTime<210300)
			{			
				if ((string)(dd.ExchangeID)=="shfe")
				{
					TradingDay = dd.TradingDay;
				}
			}
			if (dd.UpdateTime>=210000||dd.UpdateTime<23000)
			{
				if ((string)(dd.ExchangeID)=="czce")
				{
					dd.TradingDay=TradingDay;
				}
			}	
			//////////////////////////////////////////////////////////////////////////
 			flag = false;  

 			//转换数据
			CThostFtdcDepthMarketDataField_Custom_Tick ct = methodChangeData(dd);
			if (!base->isExist((string)(ct.InstrumentID)))
 			{
				base->addContractToMap(&ct);
 			}
 			else
			{
 				base->updateData(&ct);			
 			}
			
 			
 		}//end flag				
 
 	}//end while
 
}//end Classify_Data2