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

 

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

 

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

 

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

 

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

pip install --upgrade mplfinance

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

pip install --upgrade mpl_finance

 

 

일단 결론부터 말씀드리겠습니다. 차트를 그리면서 원하는 캔들의 임의의 위치(위, 아래)에 text 혹은 화살표를 그릴 수 있습니다.

 

 

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

 

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 파일도 함께 다운받으세요.

반응형

설정

트랙백

댓글