여기서는 유니버스가 생성되어 있는지, 잔고에는 어느 종목들이 있는지 확인하는 것처럼 본격적인 매매가 수행되기 전에 점검이 필요한 기능들을 넣을 예정입니다.
먼저 데이터베이스에서 유니버스를 조회하여 유니버스가 없다면 생성하고 있다면 가져오는 기능을 가진 함수를 만들겠습니다. 앞서 작성한 RSIStrategy.py 파일의 init_strategy 함수에 이어서 다음 코드를 작성하겠습니다.
RSIStrategy.py
(...)
def check_and_get_universe(self): ------ 유니버스가 있는지 확인하고 없으면 생성하는 함수
pass
(...)
데이터베이스에서 유니버스 테이블의 존재 여부를 확인하고, 없다면 생성하는 함수명은 check_and_get_universe입니다. 이 함수를 구현하려면 먼저 데이터베이스에 테이블이 존재하는지 확인하는 기능이 필요합니다. 이를 db_helper.py 파일에서 구현하겠습니다. 앞서 연습했던 db_helper.py 파일의 내용을 모두 지우고 다음 코드를 작성합니다.
db_helper.py
import sqlite3
def check_table_exist(db_name, table_name):
with sqlite3.connect('{}.db'.format(db_name)) as con:
cur = con.cursor()
sql = "SELECT name FROM sqlite_master WHERE type='table' and name=:table_name"
cur.execute(sql, {"table_name": table_name})
if len(cur.fetchall()) > 0:
return True
else:
return False