界面如下:
1------IDR_MAINFRAME 程序的主菜单
2------IDR_MAINBAR 工具栏
3------IDR_SLISTBAR 工具栏
4------IDR_SIMUBAR 工具栏
17-----IDR_PERIODBAR 工具栏
18-----IDR_VIEWBAR 工具栏
以下是视图
5------CStragegyView 基类---CTreeView-----策略
6------CGroupView 基类---CTreeView-----分组
7------CTechsView 基类---CTreeView-----指标
8------CWizardView 基类---CFormView-----向导
9------CSimuView 基类---CFormView-----策略
10-----CSListView 基类---CFormView-----股票列表
11-----CRealTimeView 基类---CView---------分时行情
12-----CMultiSortView 基类---CView---------综合排名
13-----CGraphView 基类---CView---------技术图表;画日K线、其他周期K线的类;StkUI\View\StockGraph.cpp;StkUI\View\GraphView.cpp
14-----CBaseView 基类---CEditView-----基本信息
15-----CInfoView 基类---CHtmlView-----在线资讯
16-----CSelectorView 基类---CFormView-----智能选股
对话框
对话框位置
StkUI\Dialog\AlarmResultDlg.cpp
数据管理
CInstallPacDlg installdlg; //安装K线数据包
CTyDataDlg tydata; //导出K线数据包
CSetDrdataDlg setdr;//权息资料
CSetBaseDlg setbase;//板块财务F10导入
CSetBasedataDlg setbasedata;//基本资料修改
CSetKDataDlg setkdata;//K线修复
使用到的全局变量定义
G:\stock\TskingVS2019\src\Client\StkLib\Src\AfxCore.cpp
7.调用股票数据
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::ktypeMin1);//extend 1分钟K线 by freeman
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;
}
加载分时线数据
G:\stock\TskingVS2019\src\Client\StkLib\Src\AfxCore.cpp
int AfxRefreshStockContainerMinute( CStockContainer & container, LONG lStockType, int nSecondsToRead )
{
container.Lock();
time_t tmTradeLatest = -1;
int nCount = 0;
for( int i=0; i<container.GetSize(); i++ )
{
CStockInfo & info = container.ElementAt(i);
if( info.GetType() != lStockType )
continue;
CStock stock;
stock.SetStockInfo( &info );
stock.SetDatabase( &AfxGetDB() );
//加载分时线数据 by freeman
AfxGetDB().LoadMinute( &stock );
info.m_minute.RemoveAll();
CMinute & minstock = stock.GetMinute();
if( -1 == tmTradeLatest && stock.GetMinute().GetSize() > 0 )
tmTradeLatest = CSPTime::GetTimeTradeLatest( minstock[0].m_time );
for( int i=0; i<minstock.GetSize(); i++ )
{
if( -1 == nSecondsToRead || tmTradeLatest-minstock[i].m_time<nSecondsToRead )
info.m_minute.Add( minstock[i] );
}
nCount ++;
}
container.UnLock();
return nCount;
}