시스템 트레이딩용 DB 구축을 위하여 MySQL 를 사용합니다.
DB (Database) 는 데이터 저장 공간으로 여러 사용자나 응용프로그램이 동시에 접근 가능합니다. 이러한 DB는 DBMS (DataBase Management System) 을 이용하여 관리하고 운영하게 되며, MySQL 은 관계형 DMBS 에 속합니다.
관계형 데이터베이스란? (위키피디아 참조)
키(key)와 값(value) 들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터 베이스
SQL 용어 | 관계형 데이터베이스 용어 | 설명 |
---|---|---|
로우 | 튜플 또는 레코드 | 하나의 항목을 대표하는 데이터 |
컬럼 | 속성(어트리뷰트, attribute) 또는 필드 | 튜플의 이름 요소 (예: "주소", "태어난 날짜") |
테이블 | 관계 또는 기초 관계변수(base relvar) | 같은 속성을 공유하는 튜플의 모임. (컬럼이나 로우의 모임.) |
뷰 또는 결과 집합 | 파생 관계변수(derived relvar) | 튜플들의 모임. (질의어에 응답하는 RDBMS의 데이터 보고서) |
데이터베이스 도식화
아래 사이트는 Microsoft 사의 Visio 와 유사한 Drawing tool 로 Web 에서 작업이 가능합니다. 로컬에서 작업하는 것이 아니기 때문에 네트워크만 연결된다면 어디서든 작업할 수 있다는 장점이 있습니다. 생각보다 느리지 않고 다양한 Shape 들을 제공해주고 있어서 원하는 DB 와 같은 관계도를 그리기에 편리합니다.
링크 : https://www.draw.io/
시스템 트레이딩에 사용할 시스템 구축을 위한 DB 구조
먼저, "종목 리스트" Table 을 생성 합니다.
각 종목에 해당되는 "종목별 날짜별 거래 내용" Table 은 현재로부터 2년전까지 수집 합니다. DB 생성 후에는 매일 거래 내용을 Record 에 추가 합니다.
최근 1개월 간의 "5분봉 거래 내용" Table 을 추가 하고, "종목별 날짜별 거래 내용" Table 과 일대다(one-to-many) 관계(relationship) 를 설정합니다.
추가적으로 "뉴스 & 공시" Table 을 생성하고, "종목 List" Table 과 일대다 관계를 설정합니다. "종목별 날짜별 거래내용" Table 과는 날짜 Attribute 로 관계를 설정합니다.
파이썬을 이용하여 DB 를 구축하는 방법
1) MySQL 설치
2) 파이썬에 PyMySQL 모듈 설치
2-3) 터미널 창을 열어서 Pip 명령어로 PyMySQL 라이브러리를 설치합니다.
Anaconda 를 올바르게 설치가 되어 환경변수 PATH 에 python 경로가 제대로 설정되어 있다면, Terminal 에서 pip 명령어를 이용하여 설치가 가능합니다.
명령어 : pip install pymysql
저는 이미 설치가 된 상태이므로 위와 같은 결과가 나타납니다.
3) MySQL 에 Database 생성
mysql 명령어를 이용하여 아래와 같은 명령어 입력합니다.
사용한 옵션은 아래와 같습니다.
-h, --host=name Connect to host.
-u, --user=name User for login if not current user.
-p, --password[=name]
Password to use when connecting to server. If password is
not given it's asked from the tty.
4) MySQL 에 Table 생성
## Table 생성
try:
sql = '''CREATE TABLE IF NOT EXISTS companyList(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
mgroup VARCHAR(20) NOT NULL,
mcode char(6) NOT NULL,
mname VARCHAR(200) NOT NULL)
'''
cur.execute(sql)
except:
print("companyList Table 이 이미 DB 에 존재합니다.\n")
5) Table 에 내용 저장하기
증권사 API 를 이용할 수도 있지만, 한번에 읽어들일 수 있는 정보가 제한적이라 웹 크로링을 통해서 정보를 수집합니다.
수집된 정보는 MySQL 명령어를 이용하여 DB에 저장합니다.
'주식 > 시스템 트레이딩' 카테고리의 다른 글
시스템 트레이딩을 구축하기 위해 필요한 것들은 ? (0) | 2018.09.20 |
---|---|
어떤 주식을 거래해야 하나 (0) | 2018.08.25 |