이전글 : bizanalytics.tistory.com/102
이전 글에서 예스트레이더와 예스스팟을 통해 DB에 연결하는 내용을 쓴 적이 있다.
이때 사용한 DB는 SQLite인데, 실제로 트레이딩에 사용하다 보니 몇가지 문제가 발생하는 것을 확인했다.
데이터 동시 입출력시 DB에 Lock이 걸려 매매주문이 제대로 실행되지 않을 뿐더러 예스트레이더 자체가 강제 종료되는 현상이 발생한다.
아무래도 SQLite가 Lightweight DB이고 다중입출력을 제대로 지원하지 못해서 발생하는 문제인 듯 하여, DB를 MariaDB로 교체하였고, 테스트한 결과 정상적으로 작동하는 것을 확인했다.
다만, 이전과 몇가지 달라진 점이 있어서 다시 정리를 해본다.
Maria DB 다운로드 및 ODBC 드라이버 다운로드
우선 Maria DB와 ODBC 드라이버를 아래 사이트에서 다운로드 받는다.
(테스트 버전 : MariaDb Server 10.5.4 x86, ODBC Driver 3.1.9 win32)
https://downloads.mariadb.org/connector-odbc/
MariaDB와 ODBC 설치 자체는 너무 간단하기 때문에 달리 설명할게 없고, 중간에 Root 관리자에 대한 패스워드만 설정해주면 된다.
HeidiSQL로 DB 접속 및 DB 및 테이블 생성
MariaDB를 설치하면 HeidiSQL이 같이 설치되는데, 이 프로그램을 통해서 DB에 접근이 가능하다.
세션관리자에서 127.0.0.1로 root 사용자로 접속하면 된다.
그리고 예스트레이더에서 사용할 DB와 테이블을 생성해야 한다.
아래 이미지 상의 왼쪽 창에서 오른쪽 버튼을 클릭 후 새로 생성 -> 데이터베이스를 누른 뒤 DB 이름을 지정해주자.
그런 뒤 F5로 새로고침을 해준다.
그리고 해당 DB를 선택한 뒤 오른쪽 창에서 "쿼리" 탭을 클릭하고 테이블 생성 쿼리를 입력 후 실행(F9)시켜주면 테이블이 생성된다. 쿼리 실행 후에는 항상 F5를 눌러 새로고침을 해주어야 한다.
CREATE TABLE `portfolio1` (
`code` CHAR(50) NOT NULL COLLATE 'utf8_general_ci',
`date` CHAR(50) NOT NULL COLLATE 'utf8_general_ci',
`price` INT(11) NOT NULL,
`position` CHAR(50) NOT NULL COLLATE 'utf8_general_ci',
`name` CHAR(50) NULL DEFAULT NULL COLLATE 'utf8_general_ci'
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
DB와 ODBC 연결
그 다음은 윈도우 ODBC 관리자에서 DB와 연결을 해주어야 한다. 윈도우에서 "ODBC 데이터 원본 관리자(32비트)"를 열고 "추가" 버튼을 클릭하고, 아래 이미지를 따라서 연결을 생성해준다.
Database를 선택하기 전에 Test DSN을 클릭해서 Database 목록을 가져와야 한다. 그리고 목록에서 앞에서 생성한 DB를 선택해 준다. 이후에는 모두 Next를 클릭한다. 그러면 새로운 연결이 생성된 것을 확인할 수 있다.
그런 다음 예스스팟 스튜디오에서 DSN이름을 변경해주면 된다.
예스스팟에서 쿼리문 작성하는 것은 큰 차이가 없다. (자세한 내용은 이전 글을 참고)
https://bizanalytics.tistory.com/102
// 데이터 조회
DB1.Select("* FROM portfolio1", "portfolio1");
// 데이터 입력
DB1.Insert("portfolio1 VALUES ('009020', '2020-07-24', 10000, 'BUY')");
// 데이터 삭제
DB1.Delete("portfolio1 WHERE code='009020'");
'시스템 트레이딩 > 예스트레이더' 카테고리의 다른 글
[시스템트레이딩] 예스트레이더로 DB 조회, 입력, 삭제하기 (0) | 2020.07.29 |
---|---|
[시스템트레이딩] 예스트레이더와 파이썬 간 DB를 통한 연동 테스트 (1) | 2020.06.14 |