본문 바로가기

시스템 트레이딩/예스트레이더

[시스템트레이딩] 예스트레이더와 파이썬 간 DB를 통한 연동 테스트

반응형

개요

 

예스트레이더의 경우 예스스팟을 사용하면 진입신호를 잡아서 매수하는 것은 문제가 없으나, 청산할 때 복잡한 조건을 사용하기가 어렵다.

단일 종목으로 트레이딩하는 경우 예스랭귀지로 쉽게 구현 가능하지만, 종목 검색을 통해서 여러 종목을 매매하는 경우에는 일일이 차트를 띄우고 시스템을 적용해서 관리하기가 어렵다.

그마저도 100개로 제한이 되고, 메모리 부족으로 뻗어버리는 경우도 간혹 있는 듯 하다.

 

그리고 예스스팟에서는 보유중인 종목에 대해서 지표 값을 가져오는 것이 매우 어렵다. GetIndicatorData 함수를 사용하면 가져올 수 있을 것 같은데, 여러 종목에 대해서 수식으로 동적으로 확장차트를 생성하는 경우에는 이 함수가 사용이 되질 않는다. 혹시나 해서 예스스탁 홈페이지에서 검색을 해봤지만 명확한 답을 찾을 수 없었다.

 

어쨌거나, 다 종목을 매매하는 경우 예스트레이더의 한계가 명확해서, 외부 시스템과의 연계가 필요한 경우가 발생한다.

 

나의 경우에는 파이썬을 통해 진입신호와 청산신호를 분석하기가 용이해서, 예스트레이더와 내가 작성한 파이썬 프로그램을 연동하는 것을 테스트해보았다.

그리고 그 조건은 아래와 같다.

 

  1. 트레이딩툴 : 예스트레이더
  2. 분석툴 : 파이썬
  3. DB : sqlite

 

트레이딩은 여전히 예스트레이더로 하는 것으로 한다.

키움증권이나 다른 증권사 API를 사용할 수도 있지만, 하이투자증권에서 거래하는 것이 수수료가 무료이기도 하고, 관리상의 이점 때문에 예스트레이더로 매매하기로 결정했다.

 

예스트레이더에서는 데이터베이스와의 연결을 지원하는데, 일반적으로 윈도우에서 사용하는 ODBC를 통해서 데이터베이스와 연결한다.

나같은 경우에는 SQLite가 별도 설치없이 사용하기 간편하기 때문에 SQLite를 DB로 사용하기로 하고 SQLite ODBC 드라이버를 통해서 DB와 연결하는 방법을 시도하기로 한다.

이를 정리하면 아래와 같다.

 

  • 연결순서 : 예스트레이더 <- ODBC -> Sqlite <-> 파이썬

 

 

1. Sqlite ODBC 드라이버 설치(32bit)

http://www.ch-werner.de/sqliteodbc/

 

 

2. SQLite 테스트용 DB 생성하기

 

SQLite Brower로 DB를 생성하고, test_db.db 파일명으로 저장한다.

https://sqlitebrowser.org/dl/

 

 

 

 

3. 윈도우 ODBC 데이터 원본 관리자에서 Sqlite 3 드라이버 추가

 

 

 

이전에 생성해둔 test_db.db를 지정해준다.

 

ODBC 드라이버로 test_db와 연결되었다.

 

 

4. 예스스팟 수식 작성

예스스팟 수식작성기에서 새로운 수식을 작성해준다. 

데이터베이스 객체 추가 -> DB1으로 이름 변경, DSN test_db로 수정

 

 

더보기

function Main_OnStart()

{

 var cond = DB1.Select("* from [portfolio]", "portfolio");

 

 if (cond == true) {

  DB1.MoveFirst();

  while (DB1.IsEOF() == false) {

   Main.MessageLog(DB1.GetFieldValue(0)+" "+DB1.GetFieldValue(1));

   DB1.MoveNext();

  }

 }

}

 

5. 실행 결과물

 

아쉽게도 한글은 깨지지만 값은 제대로 가져오는 듯 하다.

결과적으로 큰 어려움없이 DB와 연결이 가능해졌다. 

 

앞으로는 파이썬을 이용해서 보다 원활하게 분석 후 매매신호를 생성할 수 있을 듯 하다.

 

파이썬에서 직접 분석을 할수도 있고, 키움증권 등 외부 증권사 API를 가져와서 실시간 조건 검색식 진입, 이탈 신호를 받아올수도 있고, 활용 가능성은 무궁무진할 듯 하다.

 

다음 글 : [시스템트레이딩] DB로 포트폴리오 관리하기(예스트레이더)

반응형