예제 #1
0
파일: cimtask.cpp 프로젝트: spplus/AmServer
int CimTask::svc()
{
	while (!m_stop)
	{
		string curdate = getCurDate();
		if (getHour() == m_checkHour && m_lastCheckDate != curdate)
		{
			// 检测时间到,进行文件比较
			if(checkFile())
			{
				// 需要更新CIM,更新数据库字段未待导库
				updateIsNew();
			}

			m_lastCheckDate = curdate;
		}
		ACE_OS::sleep(5);
	}
	return 0;
}
예제 #2
0
//本地条件单和预埋单都通过OrderRef来定位
void ParkOrdDlg::GenCondLocal()
{
	CXTraderDlg* pDlg = g_Dlg;
	CtpTdSpi* td = gc_Td;

	m_conType = CondTyTable[4*m_iSelPx+m_iSelCond];

	PARKEDEX pkReq;
	ZeroMemory(&pkReq,sizeof(pkReq));

	strcpy(pkReq.park.InstrumentID, m_instId);
	
	//这里需要在发送时从spi里自增
	sprintf(pkReq.park.OrderRef, "%012d", ++pDlg->m_iRef_tj);
	
	pkReq.park.Direction = m_cDir; 
	pkReq.park.CombOffsetFlag[0] = m_cKp; 
	
	pkReq.park.LimitPrice = (m_iLmt== LAST_DSJ)?LAST_DJ_ALIAS:m_dLmtPx;	//价格
	pkReq.park.VolumeTotalOriginal = m_iVol;	///数量	
	
	pkReq.park.OrderPriceType = m_cPxType;	
	pkReq.park.TimeCondition = m_cTmcType; 
	pkReq.park.VolumeCondition = THOST_FTDC_VC_AV;
	pkReq.park.ContingentCondition = m_conType; 
	pkReq.park.StopPrice = m_dStopPx;
	pkReq.park.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;	
	
	td->GetExhByInst(m_instId,pkReq.park.ExchangeID);

	pkReq.park.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;
	pkReq.ordType = COND_LOCAL;
	pkReq.park.Status = THOST_FTDC_OST_NotTouched;
	
	getCurDate(pkReq.InsertDate);
	getCurTime(pkReq.InsertTime);
	
	td->m_pkExVec.push_back(pkReq);
	pDlg->m_xLst[PKCON_IDX].SetItemCountEx(static_cast<int>(gv_Pk.size()));
	pDlg->m_xLst[PKCON_IDX].Invalidate();
}
예제 #3
0
파일: Date.cpp 프로젝트: xkmld419/crawl
//##ModelId=41DCA1BB012A
Date::Date()
{
	getCurDate ();
}
예제 #4
0
void ParkOrdDlg::GenTmOrder()
{
	CXTraderDlg* pDlg = g_Dlg;
	CtpTdSpi* td = gc_Td;
	COleDateTime tm;
	m_tmEdit.GetDateTime(tm);
	
	if (COleDateTime::GetCurrentTime()>tm)
	{
		ShowErroTips(LoadStr(IDS_TMLESSNOW),LoadStr(IDS_MY_TIPS));
		return;
	}

	PTMORDPARAM m_ptmPara = new TMORDPARAM;
	ZeroMemory(m_ptmPara,sizeof(TMORDPARAM));
	m_ptmPara->dt.nYear = tm.GetYear();
	m_ptmPara->dt.nMonth = tm.GetMonth();
	m_ptmPara->dt.nDay = tm.GetDay();
	m_ptmPara->dt.nHour = tm.GetHour();
	m_ptmPara->dt.nMin = tm.GetMinute();
	m_ptmPara->dt.nSec = tm.GetSecond();

	m_ptmPara->pDlg = pDlg;
	
	PARKEDEX pkReq;
	ZeroMemory(&pkReq,sizeof(pkReq));
	//存tmordpara结构体的指针
	pkReq.pTmOrd = m_ptmPara;
	
	strcpy(pkReq.park.InstrumentID, m_instId);
	
	//这里需要在发送时从spi里自增
	sprintf(pkReq.park.OrderRef, "%012d", ++pDlg->m_iRef_tm);
	
	pkReq.park.Direction = m_cDir; 
	pkReq.park.CombOffsetFlag[0] = m_cKp; 
	
	pkReq.park.LimitPrice = (m_iLmt== LAST_DSJ)?LAST_DJ_ALIAS:m_dLmtPx;	//价格
	pkReq.park.VolumeTotalOriginal = m_iVol;	///数量	
	
	pkReq.park.OrderPriceType = m_cPxType;	
	pkReq.park.TimeCondition = m_cTmcType; 
	pkReq.park.VolumeCondition = THOST_FTDC_VC_AV;
	pkReq.park.ContingentCondition = THOST_FTDC_CC_Immediately; 
	pkReq.park.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;	
	
	td->GetExhByInst(m_instId,pkReq.park.ExchangeID);
	
	pkReq.park.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;
	pkReq.ordType = TMORD_LOCAL;
	pkReq.park.Status = THOST_FTDC_OST_NotTouched;

	sprintf(pkReq.park.ErrorMsg,"%04d-%02d-%02d %d:%02d:%02d",tm.GetYear(),tm.GetMonth(),
		tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond());
	getCurDate(pkReq.InsertDate);
	getCurTime(pkReq.InsertTime);
	
	memcpy(&m_ptmPara->pkReq,&pkReq,sizeof(PARKEDEX));
	
	HANDLE hTmOrd = ::CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)CXTraderDlg::SendTmOrd, m_ptmPara,CREATE_SUSPENDED,NULL);
	if (hTmOrd != NULL)
	{
		pkReq.hThd = hTmOrd;

		td->m_pkExVec.push_back(pkReq);
		pDlg->m_xLst[PKCON_IDX].SetItemCountEx(static_cast<int>(gv_Pk.size()));
		pDlg->m_xLst[PKCON_IDX].Invalidate();

		::ResumeThread(hTmOrd);
	}
}