가장 먼저 cal_limit 이라는 이름의 함수를 생성한 후, 그 인자로 item_code(종목코드) 와 yclose(전일 종가, 기준 가격) 을 받아오도록 하자. 그 후에 yclose 변수의 자료형을 숫자형으로 변경해주고, yclose에 0.3을 곱한 값(가격제한폭)을 price_range 변수에 입력하자. 각 값들의 호가가격단위 미만 절사는 아직 적용하지 않은 상태이다.
여기서 호가가격단위 미만 절사를 적용하는 순서는 ①가격제한폭, ②상하한가의 순서로 적용하게 된다. 아직 상하한가 계산의 로직이 잘 이해가 가지 않는다면 상하한가 계산 로직 게시글을 다시 보고 오자.
이제 가격제한폭에 대한 호가가격단위 미만 절사를 적용하기 전에 앞서, 호가가격단위는 시장에 따라 적용되는 값이 다르므로 해당 종목코드 변수( item_code )가 어떤 시장에 속한 종목인지를 구분해주자.(Line 6, 10)
def cal_limit(self, item_code, yclose):
yclose = int(yclose)
price_range = float(yclose * 0.3)
## 코스피 종목의 상하한가 계산..
if item_code in self.kospi_code_list:
pass
## 코스닥 종목의 상하한가 계산
elif item_code in self.kosdaq_code_list:
pass
else:
set_logging.log.error(f"※※※ [{item_code}]가 코스피 및 코스닥 종목 정보에 없습니다.")
시장 구분 별 호가가격단위 미만 절사 적용 함수 구현하기
이제 해당 종목이 코스피 종목인지 코스닥 종목인지 구분했다면, 코스피와 코스닥에 대해 각기 다른 기준이 적용되는 호가가격단위 미만 절사 기능을 구현해줘야 한다. 각 시장에 대응하는 함수 이름은 코스피는 def kospi_price_range(self, price): , 코스닥은 def kosdaq_price_range(self, price): 로 하였다.
먼저 Line 7~12 의 경우에는 price_range 값을 self.kospi_price_range 함수에 전달함으로써 가격제한폭 값에 대해 호가가격단위 미만 절사를 적용한 후, var1 에서는 기준값에 가격제한폭을 더하여 상한가를 계산하고, 그 상한가를 다시 동일한 함수에 전달하여 호가가격단위 미만 절사를 적용한 후 up_price 변수에 입력했다. 하한가의 경우에도 var2 에서 기준값에 가격제한폭을 빼서 하한가를 계산하고, 그 하한가를 다시 동일한 함수에 전달하여 호가가격단위 미만 절사를 적용한 후 down_price 변수에 입력했다.
이제 상하한가 데이터는 단순하게 self.cal_limit(종목코드, 기준가격) 과 같은 형태의 코드 한 줄로 손쉽게 얻어올 수 있게 되었다. 다음 게시글에서 실제 데이터와의 비교를 통해 코드가 정상적으로 동작하는지 확인해보도록 하자.