亚洲久久久久久久久久久_捆绑变态av一区二区三区_成人爽a毛片一区二区免费_欧美激情在线播放_国产不卡人人_色综合天天综合网国产成人综合天_99精品免费在线观看_亚洲综合激情在线_亚洲成年人在线播放_色噜噜狠狠色综合网_成人黄色动漫_日本一区二区在线不卡

   您現在的位置: 南方財富網 >> 股票知識 >> K線圖 >> 正文
南方財富搜索

DrawOneKLine如何畫單根K線

2010-9-2 9:13:06   來源:不詳   佚名
    

//函數實現畫單根K線的功能,坐標為普通坐標,而非對數坐標

void CStockGraph::DrawOneKLine(CDC * pDC, int nIndexPos, int nIndexKD, CKData * pKData, double dMin, double dMax, BOOL bGreyed )
{
 DECLARE_COLOR_DEFINATION

 // Check Valid

 //判斷當前位置的序列號是否有效,指的是顯示窗口,在當前的m_nIndexStart 和 m_nIndexEnd之間
 ASSERT( pDC && nIndexPos >= m_nIndexStart && nIndexPos <= m_nIndexEnd && nIndexPos >= 0 );
 if( !(pDC && nIndexPos >= m_nIndexStart && nIndexPos <= m_nIndexEnd && nIndexPos >= 0) )
  return;

 //判斷當前位置的序列號是否有效,序列號是否是小于零或大于當前序列的長度
 if( !pKData || nIndexKD < 0 || nIndexKD >= pKData->GetSize() )
  return;
 if( dMax-dMin < 1e-4 )
  return;

 // Get Region

 //關于GetOneKLineRect請參看下面關于這個函數的分析

 //這里需要注意的一個問題就是rectK, rcEntity,是有不同的含義的,rectK是指顯示的K線矩形區域,實際的畫K線的區域是rcEntity,指的是畫K線實體的區域
 CRect rectK, rcEntity;
 long xMedium = 0;
 if( !GetOneKLineRect( nIndexPos, &rectK, &rcEntity.left, &rcEntity.right, &xMedium ) )//參數xMedium 為K線實體的中間位置,對應畫K線的圖形
  return;

 int xStart = rectK.left;
 int xEnd = rectK.right;
 ASSERT( xEnd <= m_rectKLineCenter.right );
 if( xEnd > m_rectKLineCenter.right )
  return;

 KDATA kd = pKData->ElementAt(nIndexKD);

//根據當前最低價格/最高價格/收盤價格/開盤價格的計算出K線實體在當前顯示區域中坐標.(等比例的計算)

 // Set rcEntity's top and bottom, set yLow, yHigh
 int yLow = int( m_rectKLineCenter.bottom - m_rectKLineCenter.Height() * (kd.m_fLow - dMin) / (dMax-dMin) );
 int yHigh = int( m_rectKLineCenter.bottom - m_rectKLineCenter.Height() * (kd.m_fHigh - dMin) / (dMax-dMin) );
 int yOpen = int( m_rectKLineCenter.bottom - m_rectKLineCenter.Height() * (kd.m_fOpen - dMin) / (dMax-dMin) );
 int yClose = int( m_rectKLineCenter.bottom - m_rectKLineCenter.Height() * (kd.m_fClose - dMin) / (dMax-dMin) );

 //計算出實體區域的上下坐標,左右坐標已經根據序列位置計算出來了,到這個地方,已經計算出了要畫K線的試題區域的具體坐標了.

 rcEntity.top = min( yOpen, yClose );
 rcEntity.bottom = max( yOpen, yClose ) + 1;

 

 //上面已經計算出了要畫的K線的坐標了,下面就開始畫K線了

 if( CStockGraph::klineCandle == m_nCurKLineMode )
 {
  // Draw Entity

  //畫實體區域了
  COLORREF clr = clrRise;
  if( kd.m_fClose < kd.m_fOpen )
   clr = clrFallEntity;
  if( kd.m_date > m_dwLatestDate )
   clr = clrNewKLine;
  if( bGreyed )
   clr = clrDJ;
  pDC->SetBkColor( clrBK );
  if( kd.m_fClose < kd.m_fOpen )
   pDC->FillSolidRect( &rcEntity, clr );
  else
   pDC->Draw3dRect( &rcEntity, clr, clr );
 
  // Draw Line

  //畫K線上的最高和最低價格的線
  CPen pen( PS_SOLID, 1, clr );
  CPen *pOldPen = pDC->SelectObject( &pen );
  pDC->MoveTo( xMedium, yHigh );
  pDC->LineTo( xMedium, rcEntity.top );
  pDC->MoveTo( xMedium, rcEntity.bottom );
  pDC->LineTo( xMedium, yLow );

  pDC->SelectObject( pOldPen );
 }
 else if( CStockGraph::klineAmerica == m_nCurKLineMode )
 {
  // Draw Entity
  COLORREF clr = clrRise;
  if( kd.m_date > m_dwLatestDate )
   clr = clrNewKLine;
  if( bGreyed )
   clr = clrDJ;
  pDC->SetBkColor( clrBK );
 
  // Draw Line
  CPen pen( PS_SOLID, 1, clr );
  CPen *pOldPen = pDC->SelectObject( &pen );
  pDC->MoveTo( xStart, yHigh );
  pDC->LineTo( xStart, yLow );
  pDC->MoveTo( xStart, yClose );
  pDC->LineTo( xEnd, yClose );

  pDC->SelectObject( pOldPen );
 }
 else if( CStockGraph::klineTower == m_nCurKLineMode )
 {
 
  // Draw Entity
  COLORREF clr = clrRise;
  if( kd.m_fClose < kd.m_fOpen )
   clr = clrFallEntity;
  if( kd.m_date > m_dwLatestDate )
   clr = clrNewKLine;
  if( bGreyed )
   clr = clrDJ;
  pDC->SetBkColor( clrBK );
  if( kd.m_fClose < kd.m_fOpen )
   pDC->FillSolidRect( &rcEntity, clr );
  else
   pDC->Draw3dRect( &rcEntity, clr, clr );

  if( nIndexKD > 0 )
  {
   KDATA kdLast = pKData->ElementAt(nIndexKD-1);
   int yOpenLast = int( m_rectKLineCenter.bottom - m_rectKLineCenter.Height() * (kdLast.m_fOpen - dMin) / (dMax-dMin) );
   int yCloseLast = int( m_rectKLineCenter.bottom - m_rectKLineCenter.Height() * (kdLast.m_fClose - dMin) / (dMax-dMin) );
   if( kdLast.m_fClose > kdLast.m_fOpen && kd.m_fClose < kd.m_fOpen )
   {
    rcEntity.bottom = min(yOpenLast,rcEntity.bottom);
    if( rcEntity.bottom > rcEntity.top )
    {
     pDC->FillSolidRect( &rcEntity, clrBK );
     clr = clrRise;
     if( kd.m_date > m_dwLatestDate )
      clr = clrNewKLine;
     if( bGreyed )
      clr = clrDJ;
     pDC->Draw3dRect( &rcEntity, clr, clr );
    }
   }
   else if( kdLast.m_fClose < kdLast.m_fOpen && kd.m_fClose > kd.m_fOpen )
   {
    rcEntity.top = max(yOpenLast,rcEntity.top);
    if( rcEntity.bottom > rcEntity.top )
    {
     clr = clrFallEntity;
     if( kd.m_date > m_dwLatestDate )
      clr = clrNewKLine;
     if( bGreyed )
      clr = clrDJ;
     pDC->FillSolidRect( &rcEntity, clr );
    }
   }
  }
 }
}

 

//函數GetOneKLineRect的分析,得到當前序列位置處要畫K線的區域

BOOL CStockGraph::GetOneKLineRect( int nIndex, LPRECT lpRect, long *pxEntityLeft, long *pxEntityRight, long *pxMedium )
{

 //判斷當前的序列位置是在當前顯示的窗口區域中
 if( nIndex == -1 || nIndex < m_nIndexStart || nIndex > m_nIndexEnd )
  return FALSE;

 //初始化畫K線的位置的矩形區域

 CRect rectK = m_rectCenter;

 //計算出K線位置的左右寬度的坐標,上下的坐標沒有給出,只是初始化為m_rectCenter中的參數

 //左邊的起誓位置為,從K線顯示區域的左邊開始m_rectKLineCenter.left,加上已經顯示了nIndex-m_nIndexStart點的距離就是當前序列處的坐標
 rectK.left = m_rectKLineCenter.left + (nIndex-m_nIndexStart) * m_nThickness;

//右邊的坐標最簡單,就是左邊左邊加上寬度就可以了.
 rectK.right = rectK.left + m_nThickness;

 if( rectK.Width() <= 0 || rectK.Height() <= 0 )
  return FALSE;

//傳出參數lpRect
 if( lpRect )
  *lpRect = rectK;

 int xStart = rectK.left;

 CRect rcEntity;

 //根據當前的K線的寬度計算出序列的右邊的坐標點,并傳出參數
 switch( m_nThickness )
 {
 case 1:
 case 2:
  rcEntity.left = xStart;
  rcEntity.right = xStart + 1;
  break;
 case 4:
 case 5:
  rcEntity.left = xStart;
  rcEntity.right = xStart + 3;
  break;
 case 6:
 case 7:
  rcEntity.left = xStart;
  rcEntity.right = xStart + 5;
  break;
 case 9:
 case 10:
  rcEntity.left = xStart;
  rcEntity.right = xStart + 7;
  break;
 case 13:
 case 15:
  rcEntity.left = xStart;
  rcEntity.right = xStart + 11;
  break;
 default:
  ASSERT( FALSE );
  rcEntity.left = xStart;
  rcEntity.right = xStart + 3;
  return FALSE;
 }
 if( pxEntityLeft )
  *pxEntityLeft = rcEntity.left;
 if( pxEntityRight )
  *pxEntityRight = rcEntity.right;
 if( pxMedium )
  *pxMedium = rcEntity.left + rcEntity.Width() / 2;

 return TRUE;
}

(責任編輯:張元緣)
    南方財富網聲明:股市資訊來源于合作媒體及機構,屬作者個人觀點,僅供投資者參考,并不構成投資建議。投資者據此操作,風險自擔。
商務進行時
每日必讀
學院24小時排行
證券導讀
熱圖推薦

關于南方財富網版權聲明誠聘英才廣告服務網站地圖友情鏈接
特此聲明:廣告商的言論與行為均與南方財富網無關
m.haozhuntechnology.com.cn
南方財富網 © 版權所有 閩ICP備09035581號
精品不卡一区| 亚洲午夜一区二区三区| 久久伊人精品视频| 艹b视频在线观看| 欧美搞黄网站| 国产一区二区激情| 天天在线女人的天堂视频| 亚洲伊人观看| 欧美精品www在线观看| 欧美jizz18hd性欧美| 成+人+亚洲+综合天堂| 国产人妖伪娘一区91| heyzo一区| 亚洲国产中文字幕在线视频综合 | 动漫av免费观看| 香蕉精品999视频一区二区| 欧美精品18videosex性欧美| 亚洲成人套图| 欧美激情一区二区三区在线| 午夜精品一区二区三区四区| 999久久久精品国产| 九九热r在线视频精品| 白白色在线观看| 日韩视频一区| 亚洲永久免费观看| 国语精品视频| 国产网站欧美日韩免费精品在线观看| 黄色一级影院| 国产91高潮流白浆在线麻豆| 99免费在线观看视频| 国产一区二区三区免费观看在线| 欧美日韩视频在线一区二区| 黄网站免费入口| 国产成人av电影在线观看| 国产福利久久精品| 日韩精品永久网址| 在线视频精品| 成人激情黄色小说| 免费看成人午夜电影| 偷窥自拍亚洲色图精选| 亚洲欧洲黄色网| 欧美精品在欧美一区二区少妇| 欧美日本视频在线观看| 免费一级片91| 国产精品久久久久久免费观看 | 偷拍亚洲欧洲综合| 日韩肉感妇bbwbbwbbw| 成人精品视频一区二区三区尤物| 亚洲第一导航| 国产视频一区三区| 国产精品二区在线| 亚洲精品99| 国产精品jizz在线观看麻豆| 超碰地址久久| yellow中文字幕久久| 污片视频在线免费观看| 色婷婷亚洲一区二区三区| 在线观看免费网站| 一个色在线综合| 777av视频| 成人爱爱电影网址| 亚洲激情一区二区| 日韩视频一区| 天堂精品一区二区三区| 欧美96一区二区免费视频| 日本精品二区| 久久精品国产99| 亚洲一卡二卡区| 国产精品香蕉一区二区三区| 日韩成人三级视频| 久久久青草青青国产亚洲免观| av观看免费在线| 日本一区二区综合亚洲| 一道本视频在线观看| 日韩美女视频一区| 精品一二三四| 欧美视频一区二| www国产在线观看| 亚洲精品第一国产综合精品| 综合久久2023| 久久高清视频免费| 牲欧美videos精品| 国产精品久久久久一区二区| 欧美日韩成人| 人禽交欧美网站免费| 久久国产精品99久久人人澡| 黄色三级中文字幕| 国产亲近乱来精品视频| 又黄又www的网站| 欧美色精品天天在线观看视频| av网站在线免费看推荐| 亚洲理论在线a中文字幕| 成人国产精品入口免费视频| 97久久精品人搡人人玩| 亚洲精品a级片| 亚洲狠狠婷婷综合久久久| 99久久婷婷国产精品综合| 九九在线精品视频| 一本色道久久88亚洲精品综合 | 91国偷自产一区二区三区的观看方式| 视频一区中文| 久久久久久久久久久久久久一区 | 337p粉嫩大胆噜噜噜鲁| 亚洲欧美日韩国产手机在线| 国产二区视频在线观看| 亚洲精品一区二区精华| 国产色99精品9i| 国产欧美日韩高清| 免费欧美在线视频| 亚洲精品乱码久久久久久自慰| 午夜精品视频一区| 蜜桃麻豆影像在线观看| 欧美韩日一区二区| 黄色一区二区三区四区| 黄网站色视频免费观看| 亚洲福利视频一区| av老司机免费在线| 久久免费视频网站| 久久国产精品99国产| 91淫黄看大片| 91.麻豆视频| 日本亚洲不卡| 国产亚洲一区二区精品| 亚洲va久久| mm131午夜| 色婷婷精品大在线视频| **欧美日韩在线| 精品视频导航| 国产精品不卡在线观看| 日韩欧美视频网站| 欧美在线观看一区| 亚洲午夜剧场| 精品蜜桃传媒| 一区二区三区精品在线观看| 欧美巨大丰满猛性社交| 国产色婷婷国产综合在线理论片a| 国产精品一区二区x88av| 日本aaa在线观看| 久久国产天堂福利天堂| 久久婷婷激情| 导航艳情国产电影| 亚洲色图美腿丝袜| 欧美好骚综合网| 成人免费观看cn| 777奇米成人网| 911久久香蕉国产线看观看| mm1313亚洲国产精品无码试看| 欧美一级艳片视频免费观看| 欧美高清视频手机在在线| 美脚丝袜脚交一区二区| 欧美不卡激情三级在线观看| 亚洲激情中文| 中国一级特黄毛片大片| 欧美精品中文字幕一区| 国产精一区二区三区| 亚洲精品白浆| 国产精选一区二区| 午夜伊人狠狠久久| 美女一区二区在线观看| 妞干网在线视频观看| 精品日韩av一区二区| 欧美涩涩网站| 天堂影院在线| 国产精品成人在线| 亚洲欧洲www| 国产一区在线电影| 亚洲综合在线网站| 色综合伊人色综合网| 蜜桃视频第一区免费观看| 蜜桃视频在线观看www社区| 亚洲自拍偷拍福利| 亚洲日本一区二区| 欧美wwwwww| 成人网18免费网站在线| 欧美激情区在线播放| 久久精品欧美日韩精品| www.91精品| 青青在线免费观看视频| 欧美大尺度激情区在线播放| 91在线观看地址| а天堂中文最新一区二区三区| 日韩小视频在线播放| 久久精品国产免费观看| 久久久久久一级片| 成人在线视频你懂的| 狠狠热免费视频| 欧美亚洲在线观看| 亚洲制服欧美中文字幕中文字幕| 青草国产精品| se在线电影| 日本在线观看一区| 亚洲欧美成人一区二区在线电影| 国产精品一区二区久久精品爱涩| 欧美日韩精品免费观看视完整| 日韩欧美精品免费| 欧美黄色三级网站| 亚洲一区二区三区四区在线观看| 国产精品久久久久久久| 在线视频国产区| 国产超级av在线|