iOS,K線圖

一、什么是K線圖

1、K線圖的定義:

K線(Candlestick chart)又稱“陰陽燭”,是反映價格走勢的一種圖線,其特色在于一個線段內(nèi)記錄了多項(xiàng)訊息,相當(dāng)易讀易懂且實(shí)用有效,廣泛用于股票期貨貴金屬數(shù)字貨幣等行情的技術(shù)分析,稱為K線分析

2、K線圖相關(guān)的專業(yè)術(shù)語

K線可分“陽線”、“陰線”和“中立線”三種

陽線代表收盤價大于開盤價

陰線代表開盤價大于收盤價

中立線則代表開盤價等于收盤價。

3、K線圖的表示

最早陽線以紅色表示,陰線則以黑色表示,但由于彩色印刷成本高,所以后來陽線常改以白色空心方塊表示。在亞洲國家(或大中華經(jīng)濟(jì)圈),多半配合傳統(tǒng)習(xí)慣,陽線以紅色表示,陰線以綠色表示,即是紅升綠跌。至于中立線的顏色則不一而足,難以卒論,但以異于其他兩線為原則。在歐美,習(xí)慣則正好相反,陰線以紅色表示,陽線以綠色表示。香港跟歐美相同,采用綠升紅跌。

二、怎么畫K線圖

首先我們找到該日或某一周期的最高和最低價,垂直地連成一條直線;然后再找出當(dāng)日或某一周期的開市和收市價,把這二個價位連接成一條狹長的長方柱體。假如當(dāng)日或某一周期的收市價較開市價為高(即低開高收),我們便以紅色來表示,或是在柱體上留白,這種柱體就稱之為"陽線"。如果當(dāng)日或某一周期的收市價較開市價為低(即高開低收),我們則以綠色表示,又或是在柱上涂黑色,這柱體就是"陰線"了。

分時圖是大盤和個股的實(shí)時(即時)分時走向圖,其在實(shí)戰(zhàn)研判中的地位極其重要,是即時把握多空力量轉(zhuǎn)化即市場變化直接的根本所在。

K線圖分類:

分時K線圖,分時K線圖實(shí)際上就是一個折線圖

標(biāo)準(zhǔn)K線圖,一般畫成陰陽燭的樣式

1、折線圖畫法

計算坐標(biāo)

先計算出單位數(shù)值所占的Y軸的高度:diviceHeight = ?SizeHeight/(MaxNumber-MinNumber)

計算出當(dāng)前Y軸的坐標(biāo):總高度減去當(dāng)前值所占的高度currentY = Height - ? (nowNumber *diviceHeight);

開始畫圖

重寫drawRect方法

- (void)drawRect:(CGRect)rect {

if (self.pointsArray) {

//畫連接線

CGContextRef context = UIGraphicsGetCurrentContext();//獲取繪圖上下文

CGContextSetLineWidth(context, _lineWidth);//設(shè)置線寬

CGContextSetShouldAntialias(context, YES);//設(shè)置反鋸齒邊緣

UIColor *color = _lineColor?_lineColor:_defaultColor;

CGContextSetStrokeColorWithColor(context, [color CGColor]);//設(shè)置線的顏色

//定義多個點(diǎn),畫多點(diǎn)連線

for (id item in self.pointsArray) {

CGPoint currentPoint = CGPointFromString(item);

if ((int)currentPoint.y<=(int)self.frame.size.height && currentPoint.y>=0) {

if ([self.pointsArray indexOfObject:item]==0) {

CGContextMoveToPoint(context, currentPoint.x, currentPoint.y);//這個是起始點(diǎn)

continue;

}

CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y);

CGContextStrokePath(context); //開始畫線

if ([self.pointsArray indexOfObject:item]

CGContextMoveToPoint(context, currentPoint.x, currentPoint.y);

}

}

}

}

}

2、陰陽燭圖,該圖需要4個坐標(biāo)點(diǎn),開盤,關(guān)盤,最大值,最小值

計算坐標(biāo)

坐標(biāo)計算方法同折線圖

畫圖

首先,要確定線的顏色,收盤值-開盤值>0紅線,收盤值-開盤值<0綠線,開盤值-收盤值=0白線;

第二,在最高值和次高值之間畫一條線(線寬是陰線的寬度)

第三,在開盤值和收盤值之間畫一條寬線(燭線寬,畫線時不繪制端點(diǎn))

第四,特殊情況,開盤值、收盤值、最高值和最低值都相等的,繪制的是橫線,線寬是1,線長是燭線寬,繪制起始點(diǎn)是(oldX-(燭線寬/2),oldY),結(jié)束(oldX-(燭線寬/2),oldY)

#pragma mark畫一根K線

-(void)drawKWithContext:(CGContextRef)context height:(CGPoint)heightPoint Low:(CGPoint)lowPoint open:(CGPoint)openPoint close:(CGPoint)closePoint width:(CGFloat)width{

CGContextSetShouldAntialias(context, NO);

//首先判斷是綠的還是紅的,根據(jù)開盤價和收盤價的坐標(biāo)來計算

BOOL isKong = NO;

UIColor *color = [UIColor colorWithHexString:@"#FF0000"withAlpha:1];//設(shè)置默認(rèn)紅色

//如果開盤價坐標(biāo)在收盤價坐標(biāo)上方則為綠色即空

if (openPoint.y

isKong = YES;

color = [UIColor colorWithHexString:@"#00FFFF"withAlpha:1];//設(shè)置為綠色

}

//設(shè)置顏色

CGContextSetStrokeColorWithColor(context, [color CGColor]);

//首先畫一個垂直的線包含上影線和下影線

//定義兩個點(diǎn)畫兩點(diǎn)連線

CGContextSetLineWidth(context, KLineWidth);

const CGPoint points[] = {heightPoint,lowPoint};

CGContextStrokeLineSegments(context, points, 2);//繪制線段(默認(rèn)不繪制端點(diǎn))

//再畫中間的實(shí)體

CGFloat halfWidth = 0;

//糾正實(shí)體的中心點(diǎn)為當(dāng)前坐標(biāo)

openPoint = CGPointMake(openPoint.x-halfWidth, openPoint.y);

closePoint = CGPointMake(closePoint.x-halfWidth, closePoint.y);

//開始畫實(shí)體

CGContextSetLineWidth(context, width); //改變線的寬度

const CGPoint point[] = {openPoint,closePoint};

CGContextStrokeLineSegments(context, point, 2);//繪制線段(默認(rèn)不繪制端點(diǎn))

//CGContextSetLineCap(context, kCGLineCapSquare) ;//設(shè)置線段的端點(diǎn)形狀,方形

//開盤價格和收盤價格一樣,畫一條橫線

if ((openPoint.y-closePoint.y<=1) && (closePoint.y-openPoint.y<=1) ) {

//這里設(shè)置開盤價和收盤價一樣時候的顏色CGContextSetStrokeColorWithColor(context, [color CGColor]);

CGPoint pointLeft = CGPointMake(openPoint.x-KCandleWidth/2, openPoint.y);

CGPoint pointRight = CGPointMake(openPoint.x+KCandleWidth/2, openPoint.y);

CGContextSetLineWidth(context, 1); //改變線的寬度

const CGPoint point[] = {pointLeft,pointRight};

CGContextStrokeLineSegments(context, point, 2);//繪制線段(默認(rèn)不繪制端點(diǎn))

}

}

最后,上代碼K線圖demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容