[일상] 주식 캔들 차트 그릴 때 문자로 표시하기

개발한 로직으로 시뮬레이션을 하면서 가장 필요한 부분 중의 하나가 진입/탈출한 시점을 그래프로 쉽게 보는 것입니다. candle 차트는 쉽게 그릴 수 있지나 진입 위치를 text로 표기하는 방법은 어렵더군요.

그러던 중 지인의 소개로 좋은 패키지를 발견했습니다.

오늘 소개드릴 내용은 진입/청산 한 위치를 차트에 표시하는 방법입니다.

사용할 패키지는 mplfinance 입니다. 파이썬 3.7 이전에서는 mpl_finance 이름으로 설치하시면 됩니다.

파이썬 3.7이상 사용하시는 분은 아래 방식으로

pip install --upgrade mplfinance

파이썬 3.6 이하 사용하시는 분은 아래 방식으로 설치하시면 됩니다.

pip install --upgrade mpl_finance

일단 그린 차트부터 보시죠. 차트를 그리면서 원하는 캔들의 임의의 위치(위, 아래)에 text 혹은 화살표를 그릴 수 있습니다

07-22.png

글자를 쓰는 경우 (주석달기)

ohlc.values는 [날짜, 시가, 고가, 저가, 종가, ...] 이렇게 구성되어 있습니다.

첫 번째 캔들


ohlc.values[0][0] : 첫 번째 캔들의 날짜

ohlc.values[0][1] : 첫 번째 캔들의 시가

ohlc.values[0][2] : 첫 번째 캔들의 고가

ohlc.values[0][3] : 첫 번째 캔들의 저가

ohlc.values[0][4] : 첫 번째 캔들의 종가

4번째 캔들이 진입 시점이라고 가정하고 표기해보도록 하겠습니다.

글자를 쓸 x,y 위치를 결정합니다.

4번째 캔들이므로 x 값은 ohlc.values[3][0]으로 정합니다.

y값은 원하는 위치를 정하면 됩니다. 진입이므로 저가 밑에 표기하는 것이 좋을 것 같습니다.

4번째 캔들의 저가는 ohlc.values[3][3]입니다.

xy=(ohlc.values[3][0],ohlc.values[3][3])

글자를 쓸 곳을 지정하는 방법입니다.

진입을 표시하는 경우에 통상 저가 밑에 표기합니다. 이 경우에도 글자를 쓰기 시작할 x,y 위치를 지정합니다.

x 값은 4번째 캔들의 날자 값인 ohlc.values[3][0]로 정합니다. 그런데 이렇게 x 좌표를 입력하면 오른쪽으로 치우져서 글자가 표기됩니다. 그래서 -0.5 정도 왼쪽으로 옮겨서 출력하게 합니다.

y 값은 저가 기준으로 -30 정도 위치에 표기하도록 합니다.

xytext=(ohlc.values[3][0]-0.5,ohlc.values[3][3]-30)) 

위에서 기술한 내용을 모아서 코딩을 하면 아래와 같이 됩니다.

ax.annotate('Enter',xy=(ohlc.values[3][0],ohlc.values[3][3]),

                    xytext=(ohlc.values[3][0]-0.5,ohlc.values[3][3]-30)) 

탈출의 경우에는 같은 방식으로 하되 y 값을 고가 기준으로 +20 정도가 적당합니다.

화살표와 단어를 쓰는 경우

화살표가 표시되면 뭔가 더 있어보이겠죠. 화살표를 사용하기 위해서는 arrowprops인자를 추가하면 됩니다. 화살표의 색과 두께도 설정가능합니다.화살표의 시작점은 xytext위치이고, 끝점은 xy에 표시한 곳입니다. 위 그림과 같이 진입시 위쪽을 향한 화살표를 그리는 코드는 아래와 같습니다.

ax.annotate('Enter',xy=(ohlc.values[1][0],ohlc.values[1][3]-10),

                    xytext=(ohlc.values[1][0]-0.5,ohlc.values[1][3]-100), 

                    arrowprops=dict(facecolor='red', shrink=0.02))

진입/탈출 시점을 그래프 상에서 한눈에 볼 수 있어서 로직 검증하기에 참 편합니다.

소스코드는 아래 github에 공유되어 있습니다.

https://github.com/multizone-quant/system-trading/blob/master/drawing_chart_with_annotation

data.csv 파일도 함께 다운받으세요.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

폭스 트레이닝은 매우 흥미로운 웹 사이트입니다.
우리는 돈을 아주 쉽게 벌 수 있습니다
And your post is Amazing

트아님 프로그램으로 기관의 프로그램 매매기법을 잡았으면 좋겠습니다.

ㅎㅎ 격려감사합니다.