함수 코드를 하나씩 살펴보겠습니다. 첫 줄은 유니버스에 속한 모든 종목을 대상으로 일봉 데이터를 얻어 오고자 for 문을 이용한 반복문을 수행합니다. 그다음 print 문은 진행 상태를 나타내는 것으로, 종목 200개 중 현재 몇 번째 종목의 일봉 데이터를 조회 및 저장하고 있는지 나타냅니다.
그다음 if 문부터가 사례 ➊에 대한 코드입니다. if의 조건절은 두 가지가 있는데 하나는 check_transaction_closed() 함수 결과고, 또 하나는 not check_table_exist(self.strategy_name, code) 결과입니다. check_transaction_closed() 함수는 이름 그대로 현재 시간이 장 종료 이후인지 확인하는 역할(장 종료하면 True 반환)을 하며, 사례 ➊이 장 종료 이후에만 수행되어야 하기에 필요합니다.
장 종료 및 장 중인지 확인하는 함수들은 나머지 사례에서도 사용하므로 미리 만들어 놓겠습니다. util 패키지에 미리 만들어 둔 time_helper.py 파일에 다음 코드를 추가해 보겠습니다.
time_helper.py
from datetime import datetime
def check_transaction_open(): ------ 현재 시간이 장 중인지 확인하는 함수
now = datetime.now()
start_time = now.replace(hour=9, minute=0, second=0, microsecond=0)
end_time = now.replace(hour=15, minute=20, second=0, microsecond=0)
return start_time <= now <= end_time
def check_transaction_closed(): ------ 현재 시간이 장이 끝난 시간인지 확인하는 함수
now = datetime.now()
end_time = now.replace(hour=15, minute=20, second=0, microsecond=0)
return end_time < now