파이썬-키움(주식)/그래프

python(vscode)/주식 차트그리기 #4/일목균형표/candle 차트/보조지표 그래프 추가

gongdol 2022. 10. 30. 18:00
300x250

지난글에 이어 일목균형표 데이터를 추가하여 차트를 그려보자.

 

1. 차트에 일목 균형표 추가하기 - *전체코드* 

  1) 데이터 가져오는 df는 알아서 진행하자. kiwoom api 통해 요청 후 받으면 된다. 

  2) 일목 균형표 데이터 생성은 ta 패키지를 설치한 후 진행해야한다. 

  3) 3-1 그래프 lengend 그리기 

      -> 일목균형표, 이동평균 2개 lenged 네이밍 하자. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
import mplfinance as mpf
from ta.trend import IchimokuIndicator
 
## 1. 일봉 데이터 확보
df = Kiwoom.get_price_data("005930"# 일봉데이터 가져와 df 에 넣기
print(df)                                                  # 데이터 프레임 출력
print(df.info())                                         # 데이터 정보 출력
 
# 1-1 일목균형표 데이터 생성
id_ichimoku = IchimokuIndicator(high=df['high'], low=df['low'], visual=True, fillna=True)
df['span_a'= id_ichimoku.ichimoku_a()
df['span_b'= id_ichimoku.ichimoku_b()
df['base_line'= id_ichimoku.ichimoku_base_line()
df['conv_line'= id_ichimoku.ichimoku_conversion_line()
 
## 2. 데이터 구조 변경
df['date'= pd.to_datetime(df['date']) # 문자열 데이터를 시계열 타입으로 변경한다
print(df.info())                        # 데이터 정보 출력
print(df)
df.set_index('date', inplace = True)    # 데이터 프레임내 인덱스 설정
print(df)
 
## 추가. 색상 추가하기
mc = mpf.make_marketcolors(
    up="r",
    down="b",
    volume="inherit"  # 거래량 색상
)
 
## 데이터 선정(9월, 10월)
data1 = df.loc["2022-08":"2022-10"]
 
## 일목균형표 그래프 추가
added_plots = {"span_a" : mpf.make_addplot(data1['span_a']),
               "span_b" : mpf.make_addplot(data1['span_b']),
               "base_line" : mpf.make_addplot(data1['base_line']),
               "conv_line" : mpf.make_addplot(data1['conv_line'])
}
 
= mpf.make_mpf_style(
    base_mpf_style="starsandstripes",
    marketcolors=mc,
    gridaxis='both',   # horizontal, vertical, both
    y_on_right=True,   # False는 y축을 왼쪽에 표시
)
 
## 3. 그래프 그리기
fig, axes = mpf.plot(
        data = data1,
        type='candle',
        style=s,
        figratio=(156),
        mav=(20,240),  # 이동평균 20일선 추가.
        volume = True# 거래량 그래프 추가
        scale_width_adjustment=dict(volume=0.8, candle=1), #거래량 차트 비율 추가
        returnfig=True,
        addplot=list(added_plots.values())
       
)
 
## 3-1 그래프 lengend 그리기
axes[0].legend([None]*(len(added_plots)*20))
handles = axes[0].get_legend().legendHandles
axes[0].legend(handles=handles[2:],labels=['mav20','mav240'+ list(added_plots.keys()), loc=(0,1), ncol=10)
 
fig.show()
cs

 

 


2. 결과 확인

 

300x250