CStock & AfxGetStockMain( DWORD dwMarket ) { static CStock g_stockMain; if( !g_stockMain.GetStockInfo().IsValidStock() ) g_stockMain.SetStockCode( CStock::marketSHSE, STKLIB_CODE_MAIN ); if( CStock::marketSHSE == dwMarket ) return g_stockMain; else if( CStock::marketSZSE == dwMarket ) { static CStock g_stockMain2; if( !g_stockMain2.GetStockInfo().IsValidStock() ) g_stockMain2.SetStockCode( CStock::marketSZSE, STKLIB_CODE_MAINSZN ); return g_stockMain2; } else if( CStock::marketCYSE == dwMarket ) return g_stockMain; else if( CStock::marketCHNA == dwMarket ) return g_stockMain; else if( CStock::marketHKEX == dwMarket ) return g_stockMain; else if( CStock::marketTBSE == dwMarket ) return g_stockMain; else if( CStock::marketTKSE == dwMarket ) return g_stockMain; else if( CStock::marketLSE == dwMarket ) return g_stockMain; else if( CStock::marketFLKFSE == dwMarket ) return g_stockMain; else if( CStock::marketNYSE == dwMarket ) return g_stockMain; else if( CStock::marketNASDAQ == dwMarket ) return g_stockMain; else return g_stockMain; }
BOOL AfxReloadStock( CStock & stock ) { CStockInfo info = stock.GetStockInfo(); // Reload AfxGetStockMain() AfxGetStockContainer().GetStockInfo( info.GetStockCode(), &info ); stock.Clear( ); stock.SetStockInfo( &info ); stock.SetDatabase( &AfxGetDB() ); stock.PrepareData( CStock::dataK, CKData::ktypeDay ); // Merge New stock.GetKDataDay().MergeKData( &(info.m_kdata) ); stock.PrepareData( CStock::dataK, CKData::ktypeWeek ); stock.PrepareData( CStock::dataK, CKData::ktypeMonth ); stock.PrepareData( CStock::dataK, CKData::ktypeMin5 ); stock.PrepareData( CStock::dataK, CKData::ktypeMin15 ); stock.PrepareData( CStock::dataK, CKData::ktypeMin30 ); stock.PrepareData( CStock::dataK, CKData::ktypeMin60 ); return TRUE; }
BOOL AfxPrepareStockData( CStDatabase * pDatabase, CStock &stock, int nKType, int nKFormat, int nMaindataType, BOOL bFullFill, BOOL bReload ) { CStockInfo info; if( !AfxGetStockContainer().GetStockInfo( stock.GetStockCode(), &info ) ) info = stock.GetStockInfo( ); stock.SetDatabase( pDatabase ); stock.PrepareData( CStock::dataK, CKData::ktypeDay, bReload ); stock.PrepareData( CStock::dataK, CKData::ktypeMin5, bReload ); stock.PrepareData( CStock::dataDR, CKData::ktypeDay, bReload ); if( bReload || stock.GetKDataDay().GetCurFormat() == CKData::formatOriginal ) stock.GetKDataDay().MergeKData( &(info.m_kdata) ); CKData & kday = stock.GetKData(CKData::ktypeDay); CKData & kdata = stock.GetKData( nKType ); kdata.SetDRData( stock.GetDRData() ); kday.SetDRData( stock.GetDRData() ); if( bFullFill ) kday.FullFillKData( AfxGetStockMain().GetKDataDay(), FALSE ); kday.ChangeCurFormat( nKFormat, AfxGetProfile().GetAutoResumeDRBegin(), AfxGetProfile().GetAutoResumeDRLimit() ); if( CKData::ktypeWeek == nKType || CKData::ktypeMonth == nKType ) { // 周线和月线不能ChangeCurFormat(...) if( CKData::formatOriginal == nKFormat ) stock.PrepareData( CStock::dataK, nKType, bReload ); else stock.ExtractKData( nKType, TRUE ); } else if( CKData::ktypeDay != nKType ) { stock.PrepareData( CStock::dataK, nKType, bReload ); kdata.ChangeCurFormat( nKFormat, AfxGetProfile().GetAutoResumeDRBegin(), AfxGetProfile().GetAutoResumeDRLimit() ); } kdata.SetMaindataType( nMaindataType ); return TRUE; }