📄 drawtech.cpp
字号:
if( rect.left+m_nWidthSubtitle+m_nWidthParameter < rect.right )
pDC->TextOut( rect.left+m_nWidthSubtitle, rect.top+1, strText );
}
pDC->SelectObject( pOldFont );
}
// Draw
int yNow;
BOOL bHasLast = FALSE;
double dNow = dMin;
int yZero = int( rect.bottom - (rect.Height()-m_nHeightSubtitle) * (0-dMin) / (dMax-dMin) );
for( int nIndex=m_nIndexStart; nIndex<=m_nIndexEnd; nIndex++ )
{
// Prepare Rect
CRect rectK;
long xMedium = 0;
if( !GetOneKLineRect( nIndex, &rectK, NULL, NULL, &xMedium ) )
continue;
// Draw
if( m_techparam.cv.Calculate( &dNow, nIndex, bHasLast ) )
{
yNow = int( rect.bottom - (rect.Height()-m_nHeightSubtitle) * (dNow - dMin) / (dMax-dMin) );
if( bHasLast )
{
if( yNow > rect.bottom || yNow < rect.top+m_nHeightSubtitle )
continue;
CPen pen( PS_SOLID, 1, (yNow-yZero)<0 ? clrRise : clrFall );
CPen * pOldPen = pDC->SelectObject( &pen );
pDC->MoveTo( xMedium, yZero );
pDC->LineTo( xMedium, yNow );
pDC->SelectObject( pOldPen );
}
bHasLast = TRUE;
}
}
}
void CStockGraph::DrawTechARBR( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.arbr.AttachParameters( AfxGetProfile().GetTechParameters().arbr );
double dMin = 0, dMax = 0;
if( !m_techparam.arbr.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_ARBR, &(m_techparam.arbr), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"AR", "BR" );
}
void CStockGraph::DrawTechCR( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.cr.AttachParameters( AfxGetProfile().GetTechParameters().cr );
double dMin = 0, dMax = 0;
if( !m_techparam.cr.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 0 ) )
return;
DrawTechUtil5( pDC, rect, bDrawTitle, dMin, dMax, STT_CR, &(m_techparam.cr), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
AfxGetProfile().GetColor(CColorClass::clrLine3),
AfxGetProfile().GetColor(CColorClass::clrLine4),
AfxGetProfile().GetColor(CColorClass::clrLine5),
"CR", "A", "B", "C", "D" );
}
void CStockGraph::DrawTechOSC( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.osc.AttachParameters( AfxGetProfile().GetTechParameters().osc );
double dMin = 0, dMax = 0;
if( !m_techparam.osc.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_OSC, &(m_techparam.osc), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"OSC", "MA" );
}
void CStockGraph::DrawTechUOS( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.uos.AttachParameters( AfxGetProfile().GetTechParameters().uos );
double dMin = 0, dMax = 0;
if( !m_techparam.uos.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_UOS, &(m_techparam.uos), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"UOS", "MA" );
}
void CStockGraph::DrawTechMAOSC( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.maosc.AttachParameters( AfxGetProfile().GetTechParameters().maosc );
double dMin = 0, dMax = 0;
if( !m_techparam.maosc.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_MAOSC, &(m_techparam.maosc), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"MAOSC", "MA" );
}
void CStockGraph::DrawTech3_6BIAS( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.bias36.AttachParameters( AfxGetProfile().GetTechParameters().bias36 );
double dMin = 0, dMax = 0;
if( !m_techparam.bias36.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_36BIAS, &(m_techparam.bias36), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechDPO( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.dpo.AttachParameters( AfxGetProfile().GetTechParameters().dpo );
double dMin = 0, dMax = 0;
if( !m_techparam.dpo.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_DPO, &(m_techparam.dpo), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"DPO", "MA" );
}
void CStockGraph::DrawTechKST( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.kst.AttachParameters( AfxGetProfile().GetTechParameters().kst );
double dMin = 0, dMax = 0;
if( !m_techparam.kst.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_KST, &(m_techparam.kst), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"KST", "MA" );
}
void CStockGraph::DrawTechREI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.rei.AttachParameters( AfxGetProfile().GetTechParameters().rei );
double dMin = 0, dMax = 0;
if( !m_techparam.rei.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_REI, &(m_techparam.rei), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechDMKI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.dmki.AttachParameters( AfxGetProfile().GetTechParameters().dmki );
double dMin = 0, dMax = 0;
if( !m_techparam.dmki.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_DMKI, &(m_techparam.dmki), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechPCNT( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.pcnt.AttachParameters( AfxGetProfile().GetTechParameters().pcnt );
double dMin = 0, dMax = 0;
if( !m_techparam.pcnt.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_PCNT, &(m_techparam.pcnt), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"PCNT", "MA" );
}
void CStockGraph::DrawTechHLC( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.hlc.AttachParameters( AfxGetProfile().GetTechParameters().hlc );
double dMin = 0, dMax = 0;
if( !m_techparam.hlc.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_HLC, &(m_techparam.hlc), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"HLC", "MA" );
}
void CStockGraph::DrawTechCDP( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.cdp.AttachParameters( AfxGetProfile().GetTechParameters().cdp );
double dMin = 0, dMax = 0;
if( !m_techparam.cdp.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 2 ) )
return;
DrawTechUtil4( pDC, rect, bDrawTitle, dMin, dMax, STT_CDP, &(m_techparam.cdp), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
AfxGetProfile().GetColor(CColorClass::clrLine3),
AfxGetProfile().GetColor(CColorClass::clrLine4),
"AH", "NH", "AL", "NL" );
}
void CStockGraph::DrawTechASI( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.asi.AttachParameters( AfxGetProfile().GetTechParameters().asi );
double dMin = 0, dMax = 0;
if( !m_techparam.asi.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_ASI, &(m_techparam.asi), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechATR( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.atr.AttachParameters( AfxGetProfile().GetTechParameters().atr );
double dMin = 0, dMax = 0;
if( !m_techparam.atr.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_ATR, &(m_techparam.atr), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1), drawtechtype_line );
}
void CStockGraph::DrawTechCYO( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.cyo.AttachParameters( AfxGetProfile().GetTechParameters().cyo );
double dMin = 0, dMax = 0;
if( !m_techparam.cyo.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_CYO, &(m_techparam.cyo), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"CYO", "MA");
}
void CStockGraph::DrawTechDCYO( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.dcyo.AttachParameters( AfxGetProfile().GetTechParameters().dcyo );
double dMin = 0, dMax = 0;
if( !m_techparam.dcyo.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_DCYO, &(m_techparam.dcyo), &kdata,
AfxGetProfile().GetColor(CColorClass::clrLine1),
AfxGetProfile().GetColor(CColorClass::clrLine2),
"DCYO", "MA");
}
void CStockGraph::DrawTechHSL( CDC * pDC, CRect rect, BOOL bDrawTitle )
{
CHECK_NODATATODRAW
DECLARE_COLOR_DEFINATION
// Prepare
CKData & kdata = m_CurStock.GetKData(m_nCurKType);
m_techparam.hsl.AttachParameters( AfxGetProfile().GetTechParameters().hsl );
m_techparam.hsl.m_stockinfo = m_CurStock.GetStockInfo();
m_techparam.volume.AttachParameters( AfxGetProfile().GetTechParameters().volume );
double dMin = 0, dMax = 0;
if( !m_techparam.hsl.GetMinMaxInfo( m_nIndexStart, m_nIndexEnd, &dMin, &dMax )
|| !DrawAxis( pDC, rect, m_nHeightSubtitle, 5, dMin, dMax, FALSE, TRUE, 2 ) )
return;
// Draw Title
if( bDrawTitle )
{
DrawTechTitle( pDC, rect.left+5, rect.top+1, AfxGetSTTName(STT_HSL), 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;
CString strText;
for( int k=0; k<m_techparam.volume.m_adwMADays.GetSize(); k++ )
{
if( m_techparam.hsl.Calculate( &dParam, nIndexParam, m_techparam.volume.m_adwM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -