Пример #1
0
time_t CSPTime::GetLatestTradeTime( time_t tmNow )
{
	CSPTime	tNow(tmNow);

	CSPTime	tTradeLatest	=	tNow;
	if( 7 == tNow.GetDayOfWeek() )
	{	
		tNow -= CSPTimeSpan(1,0,0,0);
		tTradeLatest	=	CSPTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),15,0,0);
	}
	else if( 1 == tNow.GetDayOfWeek() )
	{
		tNow -= CSPTimeSpan(2,0,0,0);
		tTradeLatest	=	CSPTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),15,0,0);
	}
	else if( (tNow.GetHour() == 9 && tNow.GetMinute() < 25 )
		|| tNow.GetHour() < 9 )
	{
		tNow -= CSPTimeSpan(1,0,0,0);
		tTradeLatest	=	CSPTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),15,0,0);
	}
	else if( (tNow.GetHour() == 11 && tNow.GetMinute() >= 30)
		|| tNow.GetHour() == 12 )
	{
		tTradeLatest	=	CSPTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),11,30,0).GetTime();
	}
	else if( tNow.GetHour() >= 15 )
	{
		tTradeLatest	=	CSPTime(tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),15,0,0).GetTime();
	}

	return tTradeLatest.GetTime();
}
Пример #2
0
BOOL CKData::IsAdjacentDays( int nIndex, int nDays )
{
	// check parameters
	SP_ASSERT( nIndex >= 0 && nIndex < GetSize() && nDays >= 1 );
	if( nIndex < 0 || nIndex >= GetSize() || nDays < 1 )
		return FALSE;

	// data not enougy
	if( nDays > nIndex )
		return FALSE;

	CSPTime	sptime1, sptime2;
	sptime1.FromStockTime( ElementAt(nIndex-nDays).m_date, CKData::IsDayOrMin(m_nKType) );
	sptime1.FromStockTime( ElementAt(nIndex).m_date, CKData::IsDayOrMin(m_nKType) );

	if( CKData::ktypeMonth == m_nKType )
	{
		if( sptime2 - sptime1 >= CSPTimeSpan(nDays+63,0,0,0) )
			return FALSE;
	}
	else if( CKData::ktypeWeek == m_nKType )
	{
		if( sptime2 - sptime1 >= CSPTimeSpan(nDays+15,0,0,0) )
			return FALSE;
	}
	else
	{
		if( sptime2 - sptime1 >= CSPTimeSpan(nDays+8,0,0,0) )
			return FALSE;
	}
	return TRUE;
}
Пример #3
0
BOOL CDownloadDlg::OnInitDialog() 
{
	CXFDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_staticRefreshServer.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_HIDEWINDOW);
	m_staticStatus.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_HIDEWINDOW);
	m_ctrlProgress.SetWindowPos( NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_HIDEWINDOW);

	m_btnStopRefresh.EnableWindow( FALSE );
	m_btnStop.EnableWindow( FALSE );

	InitComboServers();

	m_ctrlProgress.SetRange( 0, STKLIB_MAX_PROGRESS );
	m_ctrlProgress.SetPos( 0 );
	m_btnCheckReport.SetCheck( AfxGetStkReceiver().NetEngineIsWorking() );
	m_btnCheckReport.EnableWindow( AfxGetStkReceiver().NetEngineIsWorking() );
	m_btnCheckDay.SetCheck( TRUE );

	// Set Time
	CSPTime	tmCurrent	=	CSPTime::GetCurrentTime();
	if( tmCurrent.GetHour() < 15 )
		tmCurrent	-=	CSPTimeSpan(1,0,0,0);

	if( tmCurrent.GetMonth() == 1 && tmCurrent.GetDay() == 1 )
		tmCurrent	-=	CSPTimeSpan(1,0,0,0);
	if( tmCurrent.GetMonth() == 5 && tmCurrent.GetDay() == 1 )
		tmCurrent	-=	CSPTimeSpan(1,0,0,0);
	if( tmCurrent.GetMonth() == 10 && tmCurrent.GetDay() == 1 )
		tmCurrent	-=	CSPTimeSpan(1,0,0,0);
	if( tmCurrent.GetDayOfWeek() == 1 )
		tmCurrent	-=	CSPTimeSpan(2,0,0,0);
	if( tmCurrent.GetDayOfWeek() == 7 )
		tmCurrent	-=	CSPTimeSpan(1,0,0,0);
	
	m_tmDayFrom		=	m_netdb.GetTimeInitial().GetTime();
	m_tmDayTo		=	tmCurrent;
	m_tmMin5From	=	m_tmMin5To	=	tmCurrent;

	CSPTime	tmLatest;
	if( m_netdb.SetRootPath( AfxGetProfile().GetSelfDBPath(), IStStore::dbtypeSelfDB )
		&& m_netdb.GetTimeLocalRange( &tmLatest, NULL, NULL ) )
	{
		CString	strTimeLatest	=	(LPCTSTR)AfxGetTimeString( tmLatest.GetTime(), "%Y-%m-%d", TRUE ); //tmLatest.Format( "%Y-%m-%d,%A" );
		m_staticLatest.SetWindowText( strTimeLatest );

		m_tmDayFrom	=	CSPTime(tmLatest.GetTime()) + CSPTimeSpan(1,0,0,0 );

		if( m_tmDayFrom.GetMonth() == 1 && m_tmDayFrom.GetDay() == 1 )
			m_tmDayFrom	+=	CSPTimeSpan(1,0,0,0);
		if( m_tmDayFrom.GetMonth() == 5 && m_tmDayFrom.GetDay() == 1 )
			m_tmDayFrom	+=	CSPTimeSpan(1,0,0,0);
		if( m_tmDayFrom.GetMonth() == 10 && m_tmDayFrom.GetDay() == 1 )
			m_tmDayFrom	+=	CSPTimeSpan(1,0,0,0);
		if( m_tmDayFrom.GetDayOfWeek() == 1 )
			m_tmDayFrom	+=	CSPTimeSpan(1,0,0,0);
		if( m_tmDayFrom.GetDayOfWeek() == 7 )
			m_tmDayFrom	+=	CSPTimeSpan(2,0,0,0);
		
		if( m_tmDayFrom > m_tmDayTo )
			m_tmDayTo	=	m_tmDayFrom;
	}

	// Initial Download
	if( m_bInitDownloadTime )
	{
		m_tmDayFrom	=	m_tmDLBegin;
		m_tmDayTo	=	m_tmDLEnd;
	}

	UpdateData( FALSE );

	if( m_bAutoRun )
	{
		UpdateWindow( );
		ShowWindow( SW_SHOW );
		OnOK( );
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Пример #4
0
DWORD CSPTime::GetStockTimeNext( DWORD dwDate, int ktype, DWORD dwYear )
{
	CSPTime	sptime;
	if( ktype == ktypeDay )
	{
		if( !sptime.FromStockTimeDay( dwDate ) )
			return -1;
		if( 6 == sptime.GetDayOfWeek() )	//	Friday
			sptime	+=	CSPTimeSpan(3,0,0,0);
		else
			sptime	+=	CSPTimeSpan(1,0,0,0);
		return sptime.ToStockTimeDay();
	}
	else if( ktype == ktypeWeek )
	{
		if( !sptime.FromStockTimeDay( dwDate ) )
			return -1;
		sptime	+=	CSPTimeSpan(7,0,0,0);
		return sptime.ToStockTimeDay();
	}
	else if( ktype == ktypeMonth )
	{
		if( !sptime.FromStockTimeDay( dwDate ) )
			return -1;
		int	nYearNew	=	sptime.GetYear();
		int nMonthNew	=	sptime.GetMonth();
		nYearNew	=	( nMonthNew >= 12 ? nYearNew+1 : nYearNew );
		nMonthNew	=	( nMonthNew >= 12 ? 1 : nMonthNew+1 );
		CSPTime	sptime2( nYearNew, nMonthNew, sptime.GetDay(), sptime.GetHour(),sptime.GetMinute(), sptime.GetSecond() );

		if( 6 == sptime2.GetDayOfWeek() )	//	Friday
			sptime2	+=	CSPTimeSpan(3,0,0,0);
		else
			sptime2	+=	CSPTimeSpan(1,0,0,0);
		return sptime2.ToStockTimeDay();
	}
	else if( ktype == ktypeMin5 )
	{
		if( !sptime.FromStockTimeMin( dwDate ) )
			return -1;
		if( sptime.GetHour() == 11 && sptime.GetMinute() >= 25 )
			sptime	+=	CSPTimeSpan(0,1,35,0);
		else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 55 )
			sptime	+=	CSPTimeSpan(0,18,35,0);
		else
			sptime	+=	CSPTimeSpan(0,0,5,0);
		return sptime.ToStockTimeMin();
	}
	else if( ktype == ktypeMin15 )
	{
		if( !sptime.FromStockTimeMin( dwDate ) )
			return -1;
		if( sptime.GetHour() == 11 && sptime.GetMinute() >= 15 )
			sptime	+=	CSPTimeSpan(0,1,45,0);
		else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 45 )
			sptime	+=	CSPTimeSpan(0,18,45,0);
		else
			sptime	+=	CSPTimeSpan(0,0,15,0);
		return sptime.ToStockTimeMin();
	}
	else if( ktype == ktypeMin30 )
	{
		if( !sptime.FromStockTimeMin( dwDate ) )
			return -1;
		if( sptime.GetHour() == 11 && sptime.GetMinute() >= 0 )
			sptime	+=	CSPTimeSpan(0,2,0,0);
		else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 30 )
			sptime	+=	CSPTimeSpan(0,19,0,0);
		else
			sptime	+=	CSPTimeSpan(0,0,30,0);
		return sptime.ToStockTimeMin();
	}
	else if( ktype == ktypeMin60 )
	{
		if( !sptime.FromStockTimeMin( dwDate ) )
			return -1;
		if( (sptime.GetHour() == 10 && sptime.GetMinute() >= 30) || sptime.GetHour() == 11 )
			sptime	+=	CSPTimeSpan(0,2,30,0);
		else if( sptime.GetHour() == 14 && sptime.GetMinute() >= 0 )
			sptime	+=	CSPTimeSpan(0,19,30,0);
		else
			sptime	+=	CSPTimeSpan(0,1,0,0);
		return sptime.ToStockTimeMin();
	}
	else
	{
		ASSERT( FALSE );
		return -1;
	}
}