📄 profile.cpp.svn-base
字号:
{
return m_ColorClassContainer;
}
CSPStringArray & CStProfile::GetLastOpenedStrategy( )
{
return m_astrLastOpenedStrategy;
}
void CStProfile::SetLastOpenedStrategy( CSPStringArray & astr )
{
m_astrLastOpenedStrategy.Copy( astr );
}
CSPString CStProfile::GetLastActiveStrategy( )
{
return m_strLastActiveStrategy;
}
void CStProfile::SetLastActiveStrategy( LPCTSTR lpszPath )
{
m_strLastActiveStrategy = lpszPath;
}
void CStProfile::SetNetInfoShowLater( BOOL bShowLater )
{
m_bNetInfoShow = bShowLater;
}
void CStProfile::SetNetInfo( LPCTSTR lpszInfo, LPCTSTR lpszInfourl )
{
if( 0 == m_strNetInfo.Compare( lpszInfo )
&& 0 == m_strNetInfourl.Compare( lpszInfourl ) )
return;
m_strNetInfo = lpszInfo;
m_strNetInfourl = lpszInfourl;
m_bNetInfoShow = TRUE;
}
void CStProfile::GetNetInfo( CSPString &strInfo, CSPString &strInfourl, int * pbShow )
{
strInfo = m_strNetInfo;
strInfourl = m_strNetInfourl;
if( pbShow )
*pbShow = m_bNetInfoShow;
}
void CStProfile::SetLatestver( LPCTSTR lpszLatestver )
{
m_strLatestver = lpszLatestver;
}
BOOL CStProfile::HasNewVersion( )
{
#ifdef CLKVER_OEM
CSPString strServerDomain = AfxGetProfile().GetMainServerDomain();
if( 0 == strServerDomain.CompareNoCase( "www.balang.net" )
|| 0 == strServerDomain.CompareNoCase( "balang.net" )
|| 0 == strServerDomain.CompareNoCase( "www.zlinker.com" )
|| 0 == strServerDomain.CompareNoCase( "zlinker.com" )
|| 0 == strServerDomain.CompareNoCase( "www.ninebulls.com" )
|| 0 == strServerDomain.CompareNoCase( "ninebulls.com" ) )
{
return FALSE;
}
#endif
if( !m_strLatestver.IsEmpty() )
{
CSPString strMyVersion = GetVersion();
double dLatestVer = atof(m_strLatestver);
double dMyVer = atof(strMyVersion);
if( dLatestVer - dMyVer > 1e-4 )
return TRUE;
}
return FALSE;
}
int CStProfile::GetAutoResumeDRLimit( )
{
if( 0 == m_nAutoResumeDRLimit || -1 == m_nAutoResumeDRLimit )
m_nAutoResumeDRLimit = 11;
return m_nAutoResumeDRLimit;
}
void CStProfile::SetAutoResumeDRLimit( int nAutoResumeDRLimit )
{
m_nAutoResumeDRLimit = nAutoResumeDRLimit;
}
void CStProfile::SetSListColumnsDefault( )
{
// All Order
m_anSListColumnsOrder.RemoveAll();
#ifdef CLKLAN_ENGLISH_US
for( UINT i=SLH_MIN; i<=SLH_MAX; i++ )
{
m_anSListColumnsOrder.Add( i );
}
#else
m_anSListColumnsOrder.Add( SLH_NAME );
m_anSListColumnsOrder.Add( SLH_CODE );
for( UINT i=SLH_MIN; i<=SLH_MAX; i++ )
{
if( SLH_NAME != i && SLH_CODE != i )
m_anSListColumnsOrder.Add( i );
}
#endif
for( int k=0; k<m_aSListColumnsUser.GetSize(); k++ )
{
m_anSListColumnsOrder.Add( m_aSListColumnsUser.ElementAt(k).m_nID );
}
// Show
m_anSListColumnsShow.RemoveAll( );
m_anSListColumnsShow.Copy( m_anSListColumnsOrder );
}
CSPDWordArray & CStProfile::GetSListColumnsShow( )
{
if( m_anSListColumnsShow.GetSize() == 0 )
SetSListColumnsDefault( );
// Remove some dulplicate
for( int i=m_anSListColumnsShow.GetSize()-1; i>=0; i-- )
{
for( int k=0; k<i; k++ )
{
if( m_anSListColumnsShow[i] == m_anSListColumnsShow[k] )
{
m_anSListColumnsShow.RemoveAt( i );
SP_ASSERT( FALSE );
break;
}
}
}
return m_anSListColumnsShow;
}
CSPDWordArray & CStProfile::GetSListColumnsOrder( )
{
int nRealCount = SLH_MAX-SLH_MIN+1 + m_aSListColumnsUser.GetSize();
if( m_anSListColumnsOrder.GetSize() != nRealCount )
SetSListColumnsDefault( );
// Remove some dulplicate
for( int i=m_anSListColumnsOrder.GetSize()-1; i>=0; i-- )
{
for( int k=0; k<i; k++ )
{
if( m_anSListColumnsOrder[i] == m_anSListColumnsOrder[k] )
{
m_anSListColumnsOrder.RemoveAt( i );
SP_ASSERT( FALSE );
break;
}
}
}
return m_anSListColumnsOrder;
}
CIndexContainer &CStProfile::GetSListColumnsUser( )
{
return m_aSListColumnsUser;
}
void CStProfile::SetDiffDays( int nDays )
{
m_nDiffDays = nDays;
}
int CStProfile::GetDiffDays( )
{
if( m_nDiffDays <= 0 )
return 1;
return m_nDiffDays;
}
void CStProfile::SetDiffPercentDays( int nDays )
{
m_nDiffPercentDays = nDays;
}
int CStProfile::GetDiffPercentDays( )
{
if( m_nDiffPercentDays <= 0 )
return 1;
return m_nDiffPercentDays;
}
void CStProfile::SetScopeDays( int nDays )
{
m_nScopeDays = nDays;
}
int CStProfile::GetScopeDays( )
{
if( m_nScopeDays <= 0 )
return 1;
return m_nScopeDays;
}
void CStProfile::SetRatioChangeHandDays( int nDays )
{
m_nRatioChangeHandDays = nDays;
}
int CStProfile::GetRatioChangeHandDays( )
{
if( m_nRatioChangeHandDays <= 0 )
return 5;
return m_nRatioChangeHandDays;
}
void CStProfile::SetRatioVolumeDays( int nDays )
{
m_nRatioVolumeDays = nDays;
}
int CStProfile::GetRatioVolumeDays( )
{
if( m_nRatioVolumeDays <= 0 )
return 5;
return m_nRatioVolumeDays;
}
void CStProfile::SetRSDays( int nDays )
{
m_nRSDays = nDays;
}
int CStProfile::GetRSDays( )
{
if( m_nRSDays <= 0 )
return 5;
return m_nRSDays;
}
void CStProfile::SetYieldAverageDays( int nDays )
{
m_nYieldAverageDays = nDays;
}
int CStProfile::GetYieldAverageDays( )
{
if( m_nYieldAverageDays <= 0 )
return 3*STKLIB_DAYS_INONEYEAR;
return m_nYieldAverageDays;
}
int CStProfile::GetMaxDaysCalculate( )
{
int nMaxDays = GetDiffDays( );
nMaxDays = max( GetDiffPercentDays( ), nMaxDays );
nMaxDays = max( GetScopeDays( ), nMaxDays );
nMaxDays = max( GetRatioChangeHandDays( ), nMaxDays );
nMaxDays = max( GetRatioVolumeDays( ), nMaxDays );
nMaxDays = max( GetRSDays( ), nMaxDays );
SP_ASSERT( nMaxDays <= STKLIB_DAYS_CALCULATE );
nMaxDays = min( STKLIB_DAYS_CALCULATE, nMaxDays );
return nMaxDays;
}
void CStProfile::SetCurrentStock( int nStockIndex, BOOL bFromSList )
{
m_bCurStockFromSList = bFromSList;
if( m_bCurStockFromSList )
AfxGetSListStockContainer().SetCurrentStock( nStockIndex );
else
AfxGetStockContainer().SetCurrentStock( nStockIndex );
}
void CStProfile::SetCurrentStock( const char * szCode, BOOL bFromSList )
{
m_bCurStockFromSList = bFromSList;
if( m_bCurStockFromSList )
AfxGetSListStockContainer().SetCurrentStock( szCode );
else
AfxGetStockContainer().SetCurrentStock( szCode );
}
BOOL CStProfile::GetCurrentStock( CStockInfo * pInfo )
{
if( m_bCurStockFromSList )
return AfxGetSListStockContainer().GetCurrentStock( pInfo );
else
return AfxGetStockContainer().GetCurrentStock( pInfo );
}
BOOL CStProfile::GetPrevStock( CStockInfo * pInfo )
{
if( m_bCurStockFromSList )
return AfxGetSListStockContainer().GetPrevStock( pInfo );
else
return AfxGetStockContainer().GetPrevStock( pInfo );
}
BOOL CStProfile::GetNextStock( CStockInfo * pInfo )
{
if( m_bCurStockFromSList )
return AfxGetSListStockContainer().GetNextStock( pInfo );
else
return AfxGetStockContainer().GetNextStock( pInfo );
}
int CStProfile::GetInfoCurrentServer( )
{
return m_nInfoCurrentServer;
}
void CStProfile::SetInfoCurrentServer( int nServer )
{
m_nInfoCurrentServer = nServer;
}
void CStProfile::GetGraphTechsDefault( CSPDWordArray & anShow )
{
// All Order
m_anGraphTechsAll.RemoveAll();
for( UINT i=STT_MIN; i<=STT_MAX; i++ )
{
m_anGraphTechsAll.Add( i );
}
// 外挂指标
UINT nTechUserCount = CTechUser::GetTechUserCount();
for( UINT i=0; i<nTechUserCount; i++ )
{
m_anGraphTechsAll.Add( STT_USER_MIN+i );
}
// Show
anShow.RemoveAll( );
anShow.Add( STT_VOLUME );
anShow.Add( STT_MACD );
if( nTechUserCount > 0 )
{
anShow.RemoveAll();
anShow.Add( STT_VOLUME );
anShow.Add( STT_USER_MIN );
}
}
CSPDWordArray & CStProfile::GetGraphTechsShow( )
{
static int count = 0;
count ++;
if( m_anGraphTechsShow.GetSize() == 0 && count == 1 )
GetGraphTechsDefault( m_anGraphTechsShow );
// Remove some dulplicate
for( int i=m_anGraphTechsShow.GetSize()-1; i>=0; i-- )
{
if( m_anGraphTechsShow[i] >= STT_KLINE_MIN && m_anGraphTechsShow[i] <= STT_KLINE_MAX )
{
m_anGraphTechsShow.RemoveAt( i );
continue;
}
for( int k=0; k<i; k++ )
{
if( m_anGraphTechsShow[i] == m_anGraphTechsShow[k] )
{
m_anGraphTechsShow.RemoveAt( i );
SP_ASSERT( FALSE );
break;
}
}
}
return m_anGraphTechsShow;
}
CSPDWordArray & CStProfile::GetGraphTechsKLine( )
{
static int count = 0;
count ++;
if( m_anGraphTechsKLine.GetSize() == 0 && count == 1 )
m_anGraphTechsKLine.Add( STT_MA );
// Remove some dulplicate
for( int i=m_anGraphTechsKLine.GetSize()-1; i>=0; i-- )
{
if( m_anGraphTechsKLine[i] < STT_KLINE_MIN || m_anGraphTechsKLine[i] > STT_KLINE_MAX )
{
m_anGraphTechsKLine.RemoveAt( i );
continue;
}
for( int k=0; k<i; k++ )
{
if( m_anGraphTechsKLine[i] == m_anGraphTechsKLine[k] )
{
m_anGraphTechsKLine.RemoveAt( i );
SP_ASSERT( FALSE );
break;
}
}
}
return m_anGraphTechsKLine;
}
CSPDWordArray & CStProfile::GetGraphTechsAll( )
{
int nRealCount = STT_MAX-STT_MIN+1+CTechUser::GetTechUserCount();
if( m_anGraphTechsAll.GetSize() != nRealCount )
GetGraphTechsDefault( m_anGraphTechsShow );
// Remove some dulplicate
for( int i=m_anGraphTechsAll.GetSize()-1; i>=0; i-- )
{
for( int k=0; k<i; k++ )
{
if( m_anGraphTechsAll[i] == m_anGraphTechsAll[k] )
{
m_anGraphTechsAll.RemoveAt( i );
SP_ASSERT( FALSE );
break;
}
}
}
return m_anGraphTechsAll;
}
BOOL CStProfile::IsGraphTechShow( UINT nTech )
{
SP_ASSERT( (nTech >= STT_MIN && nTech <= STT_MAX) || nTech >= STT_USER_MIN );
CSPDWordArray & anTech = GetGraphTechsShow( );
CSPDWordArray & anKLine = GetGraphTechsKLine( );
for( int k=0; k<anTech.GetSize(); k++ )
{
if( anTech[k] == nTech )
return TRUE;
}
for( int k=0; k<anKLine.GetSize(); k++ )
{
if( anKLine[k] == nTech )
return TRUE;
}
return FALSE;
}
void CStProfile::ToggleGraphViewTech( UINT nTech )
{
SP_ASSERT( (nTech >= STT_MIN && nTech <= STT_MAX) || nTech >= STT_USER_MIN );
if( nTech >= STT_KLINE_MIN && nTech <= STT_KLINE_MAX )
{
BOOL bHas = FALSE;
CSPDWordArray & anKLine = GetGraphTechsKLine( );
for( int k=anKLine.GetSize()-1; k>=0; k-- )
{
if( anKLine[k] == nTech )
{
anKLine.RemoveAt(k);
bHas = TRUE;
}
}
if( !bHas )
anKLine.InsertAt( 0, nTech );
}
else
{
BOOL bHas = FALSE;
CSPDWordArray & anShow = GetGraphTechsShow( );
for( int k=anShow.GetSize()-1; k>=0; k-- )
{
if( anShow[k] == nTech )
{
anShow.RemoveAt(k);
bHas = TRUE;
}
}
if( !bHas )
anShow.Add( nTech );
}
}
void CStProfile::ShowGraphViewTech( UINT nTech )
{
SP_ASSERT( (nTech >= STT_MIN && nTech <= STT_MAX) || nTech >= STT_USER_MIN );
if( nTech >= STT_KLINE_MIN && nTech <= STT_KLINE_MAX )
{
CSPDWordArray & anKLine = GetGraphTechsKLine( );
for( int k=anKLine.GetSize()-1; k>=0; k-- )
{
if( anKLine[k] == nTech )
{
anKLine.RemoveAt(k);
anKLine.Add( nTech );
return;
}
}
if( anKLine.GetSize() > 0 )
anKLine.SetAt( 0, nTech );
else
anKLine.Add( nTech );
}
else
{
CSPDWordArray & anShow = GetGraphTechsShow( );
for( int k=anShow.GetSize()-1; k>=0; k-- )
{
if( anShow[k] == nTech )
{
anShow.RemoveAt(k);
anShow.Add( nTech );
return;
}
}
if( anShow.GetSize() >= 2 )
anShow.SetAt( anShow.GetSize()-1, nTech );
else
anShow.Add( nTech );
}
}
int CStProfile::GetGraphKFormat( )
{
if( m_nGraphKFormat < CKData::formatMin
|| m_nGraphKFormat > CKData::formatMax )
m_nGraphKFormat = CKData::formatOriginal;
return m_nGraphKFormat;
}
void CStProfile::SetGraphKFormat( int kformat )
{
m_nGraphKFormat = kformat;
}
int CStProfile::GetGraphMaindataType( )
{
if( m_nGraphMaindataType < CKData::mdtypeMin
|| m_nGraphMaindataType > CKData::mdtypeMax )
m_nGrap
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -