麻豆一区区三区四区产品精品蜜桃,xxxcom在线观看,av成人福利,极品束缚调教一区二区网站

   您現在的位置: 南方財富網 >> 股票知識 >> 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小時排行
證券導讀
熱圖推薦

關于南方財富網版權聲明誠聘英才廣告服務網站地圖友情鏈接
特此聲明:廣告商的言論與行為均與南方財富網無關
www.www.zzyjzzsmh.com
南方財富網 © 版權所有 閩ICP備09035581號
麻豆一区区三区四区产品精品蜜桃,xxxcom在线观看,av成人福利,极品束缚调教一区二区网站
欧美性大战久久| **性色生活片久久毛片| 精品久久久久久久久久久院品网| 国产天堂亚洲国产碰碰| 偷拍与自拍一区| 精品视频一区二区三区免费| 91精品在线免费观看| 天天色 色综合| 欧美日韩在线三区| 亚洲一区二区三区自拍| 在线观看91精品国产入口| 国产精品久久久久久福利一牛影视| 激情欧美一区二区三区在线观看| 日韩一级片在线观看| 麻豆精品久久精品色综合| 91国产免费看| 久久久久久9999| 成人一区二区三区中文字幕| 欧美一区欧美二区| 国内精品在线播放| 中文字幕av一区二区三区免费看 | 日韩亚洲欧美中文三级| 不卡一区二区中文字幕| 久久久噜噜噜久久人人看| 国产成a人亚洲精| 亚洲一区二区偷拍精品| 精品黑人一区二区三区久久| 99久久综合国产精品| 日本91福利区| 亚洲欧美电影院| 2023国产精品| 91精品国产91久久综合桃花| av电影在线观看不卡| 亚洲视频一区二区免费在线观看| 亚洲一区二区三区四区在线| 久久女同互慰一区二区三区| 色就色 综合激情| 日本午夜精品视频在线观看 | 亚洲一区二区偷拍精品| 欧美大片免费久久精品三p| 色欧美88888久久久久久影院| 精品久久国产老人久久综合| 欧洲一区二区三区在线| av在线播放不卡| 国内国产精品久久| 美国三级日本三级久久99| 日韩经典一区二区| 久久蜜桃av一区二区天堂| 日韩欧美国产不卡| 日韩欧美国产高清| 国产亚洲欧美日韩在线一区| 精品久久一区二区| 亚洲美女免费在线| 日本高清免费不卡视频| 色婷婷久久99综合精品jk白丝| 成人网页在线观看| 成人国产一区二区三区精品| 国产成人aaa| 色av成人天堂桃色av| 欧美三级日韩在线| 日韩欧美久久久| 精品久久久久久久久久久久久久久| 日韩欧美www| **欧美大码日韩| 免费在线观看视频一区| 成人99免费视频| 欧美猛男男办公室激情| 亚洲国产精品激情在线观看| 亚洲丝袜另类动漫二区| 亚洲综合久久av| 国产福利一区二区| 欧美理论片在线| 精品国产免费视频| 亚洲国产裸拍裸体视频在线观看乱了| 久久国产精品色| 国产精品1024| 另类的小说在线视频另类成人小视频在线| 国产综合成人久久大片91| 国产a级毛片一区| 日韩视频一区二区在线观看| 亚洲日本丝袜连裤袜办公室| 国内外成人在线| 欧美国产精品中文字幕| 久久99蜜桃精品| 在线成人午夜影院| 一区二区三区丝袜| 色爱区综合激月婷婷| 国产精品美女久久久久久久久 | 国产精品久线在线观看| 久久爱另类一区二区小说| 制服丝袜在线91| 美女诱惑一区二区| 欧美日韩的一区二区| 丝袜美腿亚洲综合| 欧美一级黄色录像| 国产一区二区三区视频在线播放| 678五月天丁香亚洲综合网| 亚洲成人免费影院| 99这里只有久久精品视频| 久久一区二区三区国产精品| 亚洲午夜激情网页| 欧美电视剧在线观看完整版| 狠狠色丁香婷婷综合久久片| 国产三级精品在线| 国产伦精品一区二区三区视频青涩| 精品三级在线看| thepron国产精品| 亚洲电影在线播放| 久久久精品综合| 欧美美女直播网站| 国产成人啪午夜精品网站男同| 678五月天丁香亚洲综合网| 精油按摩中文字幕久久| 亚洲伦理在线精品| 国产精品三级电影| 久久久久国产精品人| 欧美日韩在线播放| 粉嫩绯色av一区二区在线观看| 一区二区三区在线视频免费观看| 欧美大片在线观看一区二区| 成人av一区二区三区| 麻豆国产精品777777在线| 亚洲国产美女搞黄色| 色综合天天综合网天天看片 | 亚洲国产婷婷综合在线精品| 久久人人爽爽爽人久久久| 亚洲欧美电影一区二区| 国产精品视频免费看| 2023国产精品| 日本一区二区三区在线不卡| 久久久美女毛片| 国产午夜精品久久久久久久| 日韩一二在线观看| 欧美va亚洲va| 欧美本精品男人aⅴ天堂| 欧美一区二区精品| 欧美日韩一区 二区 三区 久久精品| 99久久亚洲一区二区三区青草| 国产一区二区中文字幕| 国产精品自产自拍| 97精品国产97久久久久久久久久久久| 国产成人福利片| 色呦呦一区二区三区| 4hu四虎永久在线影院成人| 欧美电视剧免费全集观看 | 欧美色精品在线视频| 日韩女优视频免费观看| 在线看国产日韩| 成人福利视频在线| 亚洲国产日韩a在线播放性色| 丝袜亚洲另类丝袜在线| 国产成人超碰人人澡人人澡| 在线精品观看国产| 国产日韩欧美高清在线| 亚洲一级二级在线| 国产精品一区二区免费不卡 | 成人黄色大片在线观看| 欧美一区2区视频在线观看| 欧美国产精品久久| 久久99精品久久久久久国产越南| 色综合 综合色| 国产精品欧美久久久久无广告| 亚洲国产精品麻豆| 成人性生交大合| 久久久综合九色合综国产精品| 丝袜美腿亚洲综合| 欧美视频自拍偷拍| 亚洲综合丝袜美腿| 色偷偷88欧美精品久久久| 亚洲欧美经典视频| fc2成人免费人成在线观看播放| 欧美一区二区精品在线| 亚洲超碰97人人做人人爱| 色悠久久久久综合欧美99| 国产日韩欧美一区二区三区综合| 亚洲欧美激情插| 欧美亚洲国产bt| 91丨九色丨尤物| 玉足女爽爽91| 日韩视频123| 国产在线精品一区在线观看麻豆| 久久综合色一综合色88| 成人av一区二区三区| 亚洲激情五月婷婷| 欧美军同video69gay| 乱一区二区av| 精品国产乱码久久久久久1区2区| 国产麻豆成人精品| 亚洲欧美日韩中文字幕一区二区三区 | 欧美在线播放高清精品| 久久精品国产亚洲高清剧情介绍 | 国产白丝精品91爽爽久久 | 国产精品自拍毛片| 亚洲精品伦理在线| 久久综合色播五月| 国产一区二区三区在线观看精品| 精品少妇一区二区| 欧美性猛片aaaaaaa做受| 国产自产视频一区二区三区| 亚洲欧洲制服丝袜|