더북(TheBook)

이제 다음 코드는 s_gubun에 따라 data를 저장합니다.

if int(s_gubun) == 0: ------ 접수/체결(s_gubun=0)이면 self.order, 잔고 이동이면 self.balance에 값 저장
    if code not in self.order.keys(): ------ 아직 order에 종목 코드가 없다면 신규 생성하는 과정
        self.order[code] = {}

    self.order[code].update({item_name: data}) ------ order 딕셔너리에 데이터 저장
elif int(s_gubun) == 1:
    if code not in self.balance.keys(): ------ 아직 balance에 종목 코드가 없다면 신규 생성하는 과정
        self.balance[code] = {}
        self.balance[code].update({item_name: data}) ------ order 딕셔너리에 데이터 저장

s_gubun 값이 0으로 주문이 접수/체결 상태일 때는 주문을 의미하는 딕셔너리 self.order 변수에 종목 코드를 키 값으로 데이터를 저장하고, s_gubun 값이 1로 잔고 이동 상태일 때는 잔고를 의미하는 딕셔너리 self.balance 변수에 종목 코드를 키 값으로 데이터를 저장합니다.

여기서 중요한 두 가지 내용을 알아보겠습니다. 첫째는 앞서 Kiwoom 클래스의 생성자에서 self.order, self.balance를 딕셔너리로 선언했었던 것을 떠올려 보면 self.orderself.balance는 종목 코드를 키로 갖는 딕셔너리이지만 저장되는 값 또한 딕셔너리라는 점입니다. 둘째는 딕셔너리에 저장된 값을 수정하거나 추가할 때는 update 함수를 사용한다는 점입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.