Skip to content

TA-lib로 캔들차트 분석

사이드 프로젝트 링크 : https://www.github.com/fromitive/backtest

ta-lib

ta-lib라는 설치하기도 까다로운 모듈이 있다.

보조 지표(SMA,RSI) 뿐만 아니라, 캔들 차트 전략을 사용할 수 있다.

내부 엔진을 C/C++로 제작하여 실행 속도도 빠르다.

ta-lib 설치 방법

Windows에서 설치하지 않았고, 리눅스 배포판인 ubuntu에서 설치를 진행하였다.

1. ta-lib c/c++ 소스코드 다운로드

ta-lib-0.4.0.tar.gz 파일을 받아서 ubuntu에 업로드 하고,

아래와 같이 코드를 실행하여 컴파일을 진행한다.

$ tar -xzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure --prefix=/usr
$ make
$ sudo make install

2. python3-dev 설치

아래의 명령어를 추가로 입력하여 c/c++로 컴파일된 모듈을 사용하기 위해 python3-dev를 설치한다.

$ sudo apt-get install python3-dev

3. ta-lib 설치

설치가 완료되면 pip 로 ta-lib를 설치하자.

pip install TA-Lib

설치가 완료되면 아래와 같이 import를 했을 때 아무런 오류메시지가 나오지 않으면 설치에 성공한 것이다.

ta-lib 사용 방법

ta-lib을 사용하는 예제이다.

캔들차트 전략 중 아래의 이미지와 같은 해머 패턴 을 탐지하는 기능을 사용해보자.

Image title

그림 1 - 해머 패턴

해머 패턴을 탐지하는 기능을 사용하기 위해 talib.CDLHAMMER(...) 함수를 이용하였고, talib에서 지원하는 패턴들에 대한 정보는 아래의 링크에 있다.

예제 코드

아래의 코드로 예제를 실행하였더니, 각 지점 별 역(reverse)해머 패턴을 찾아 주었다.

주의사항

해당 코드는 backtest 프로젝트를 clone 하여 jupyter 노트북에서 실행한 결과이므로 해당 결과를 복사하여 실행한다고 해도 오류가 날 것이니 이점 양해부탁드립니다. 🙏

hammer.py
1
2
3
4
5
#!/bin/python3
import talib
df = stockdata.data # backetest 모듈에서 미리 받은 업비트 이더리움 dataframe
hammer = talib.CDLHAMMER(df.open,df.high,df.low,df.close) # hammer pattern
print(hammer[hammer == -100]) # 역해머 패턴을 발견된 시간을 출력해라

Image title

그림 2 - 실행 결과

업비트 이더리움 차트에서 해머 패턴을 제대로 찾았는지 검증해보았더니, 얼추 맞추기는 하는 것 같지만 원하는(?) 그림은 그려지지 않은 것 같다.

Image title

그림 2 - 검증 결과

그래도, ta-lib에서 제공하는 전략을 응용하여 멋진 전략을 세울거라 기대된다.


Comments