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; }
//本地条件单和预埋单都通过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(); }
//##ModelId=41DCA1BB012A Date::Date() { getCurDate (); }
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); } }