📄 drawtech.cpp
字号:
void CStockGraph::DrawTechPVI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.pvi.AttachParameters( AfxGetProfile().GetTechParameters().pvi );
double dMin = 0, dMax = 0;
if( !m_techparam.pvi.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil2( pDC, rect, bDrawTitle, dMin, dMax, STT_PVI, &(m_techparam.pvi), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"PVI", "MA");
}
void CStockGraph::DrawTechVR( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.vr.AttachParameters( AfxGetProfile().GetTechParameters().vr );
double dMin = 0, dMax = 0;
if( !m_techparam.vr.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_VR, &(m_techparam.vr), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechVROC( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.vroc.AttachParameters( AfxGetProfile().GetTechParameters().vroc );
double dMin = 0, dMax = 0;
if( !m_techparam.vroc.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil2( pDC, rect, bDrawTitle, dMin, dMax, STT_VROC, &(m_techparam.vroc), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"VROC", "MA" );
}
void CStockGraph::DrawTechOBV( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.obv.AttachParameters( AfxGetProfile().GetTechParameters().obv );
double dMin = 0, dMax = 0;
if( !m_techparam.obv.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 3, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_OBV, &(m_techparam.obv), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechMOBV( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.mobv.AttachParameters( AfxGetProfile().GetTechParameters().mobv );
double dMin = 0, dMax = 0;
if( !m_techparam.mobv.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 3, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil3( pDC, rect, bDrawTitle, dMin, dMax, STT_MOBV, &(m_techparam.mobv), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
AfxGetProfile().GetColor(CColorClass::clrLine3),
"SHT", "MED", "LNG" );
}
void CStockGraph::DrawTechMFI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.mfi.AttachParameters( AfxGetProfile().GetTechParameters().mfi );
double dMin = 0, dMax = 0;
if( !m_techparam.mfi.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_MFI, &(m_techparam.mfi), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechVMACD( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.vmacd.AttachParameters( AfxGetProfile().GetTechParameters().vmacd );
DrawTechMACD( pDC, rect, bDrawTitle, STT_VMACD, &(m_techparam.vmacd) );
}
void CStockGraph::DrawTechWVAD( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.wvad.AttachParameters( AfxGetProfile().GetTechParameters().wvad );
double dMin = 0, dMax = 0;
if( !m_techparam.wvad.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 3, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_WVAD, &(m_techparam.wvad), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechEMV( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.emv.AttachParameters( AfxGetProfile().GetTechParameters().emv );
double dMin = 0, dMax = 0;
if( !m_techparam.emv.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 2 ) )
return;
DrawTechUtil2( pDC, rect, bDrawTitle, dMin, dMax, STT_EMV, &(m_techparam.emv), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"EMV", "MA" );
}
void CStockGraph::DrawTechVRSI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.vrsi.AttachParameters( AfxGetProfile().GetTechParameters().vrsi );
double dMin = 0, dMax = 0;
if( !m_techparam.vrsi.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_VRSI, &(m_techparam.vrsi), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechNVRSI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.nvrsi.AttachParameters( AfxGetProfile().GetTechParameters().nvrsi );
double dMin = 0, dMax = 0;
if( !m_techparam.nvrsi.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_NVRSI, &(m_techparam.nvrsi), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechAD( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.ad.AttachParameters( AfxGetProfile().GetTechParameters().ad );
double dMin = 0, dMax = 0;
if( !m_techparam.ad.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_AD, &(m_techparam.ad), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechCI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.ci.AttachParameters( AfxGetProfile().GetTechParameters().ci );
double dMin = 0, dMax = 0;
if( !m_techparam.ci.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_CI, &(m_techparam.ci), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechKDJ( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.kdj.AttachParameters( AfxGetProfile().GetTechParameters().kdj );
double dMin = 0, dMax = 0;
if( !m_techparam.kdj.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil3( pDC, rect, bDrawTitle, dMin, dMax, STT_KDJ, &(m_techparam.kdj), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
AfxGetProfile().GetColor(CColorClass::clrLine3),
"K", "D", "J" );
}
void CStockGraph::DrawTechR( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.r.AttachParameters( AfxGetProfile().GetTechParameters().r );
double dMin = 0, dMax = 0;
if( !m_techparam.r.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_R, &(m_techparam.r), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechRSI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.rsi.AttachParameters( AfxGetProfile().GetTechParameters().rsi );
double dMin = 0, dMax = 0;
if( !m_techparam.rsi.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil( pDC, rect, bDrawTitle, dMin, dMax, STT_RSI, &(m_techparam.rsi), &kdata, m_techparam.rsi.m_adwDays );
}
void CStockGraph::DrawTechBIAS( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.bias.AttachParameters( AfxGetProfile().GetTechParameters().bias );
double dMin = 0, dMax = 0;
if( !m_techparam.bias.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 2 ) )
return;
DrawTechUtil1( pDC, rect, bDrawTitle, dMin, dMax, STT_BIAS, &(m_techparam.bias), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechMTM( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.mtm.AttachParameters( AfxGetProfile().GetTechParameters().mtm );
double dMin = 0, dMax = 0;
if( !m_techparam.mtm.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil2( pDC, rect, bDrawTitle, dMin, dMax, STT_MTM, &(m_techparam.mtm), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"MTM", "MA" );
}
void CStockGraph::DrawTechDMI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.dmi.AttachParameters( AfxGetProfile().GetTechParameters().dmi );
double dMin = 0, dMax = 0;
if( !m_techparam.dmi.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil4( pDC, rect, bDrawTitle, dMin, dMax, STT_DMI, &(m_techparam.dmi), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
AfxGetProfile().GetColor(CColorClass::clrLine3),
AfxGetProfile().GetColor(CColorClass::clrLine4),
"+DI", "-DI", "ADX", "ADXR" );
}
void CStockGraph::DrawTechROC( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.roc.AttachParameters( AfxGetProfile().GetTechParameters().roc );
double dMin = 0, dMax = 0;
if( !m_techparam.roc.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil2( pDC, rect, bDrawTitle, dMin, dMax, STT_ROC, &(m_techparam.roc), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"ROC", "MA" );
}
void CStockGraph::DrawTechCCI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.cci.AttachParameters( AfxGetProfile().GetTechParameters().cci );
double dMin = 0, dMax = 0;
if( !m_techparam.cci.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil2( pDC, rect, bDrawTitle, dMin, dMax, STT_CCI, &(m_techparam.cci), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"CCI", "MA" );
}
void CStockGraph::DrawTechCV( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CHECK_NODATATODRAW
DECLARE_COLOR_DEFINATION
COLORREF clrLine1 = AfxGetProfile().GetColor(CColorClass::clrLine1);
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.cv.AttachParameters( AfxGetProfile().GetTechParameters().cv );
// Get Min Max
double dMin = 0, dMax = 0;
if( !m_techparam.cv.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
// Draw Title
if( bDrawTitle )
{
DrawTechTitle( pDC, rect.left+5, rect.top+1,AfxGetSTTShortName(STT_CV), TA_LEFT | TA_TOP, 14, clrBK, clrTitle );
CFont * pOldFont = AfxSelectDCFont( pDC, 12 );
pDC->SetBkColor( clrBK );
int nIndexParam = ( m_nIndexCurrent >= 0 ? m_nIndexCurrent : kdata.GetSize()-1 );
double dParam = dMin;
CString strText;
if( m_techparam.cv.Calculate( &dParam, nIndexParam, FALSE ) )
{
strText.Format( "%s %.2f", (LPCTSTR)(AfxGetSTTShortName(STT_CV)), dParam );
pDC->SetTextColor( clrLine1 );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -