더북(TheBook)

이 함수의 코드를 하나씩 살펴보겠습니다. 첫 줄에 등장하는 print 문으로 함수의 매개변수들을 출력해서 어느 값을 받아 오는지 확인합니다. 특히 s_gubun 값이 0인지 1인지 확인함으로써 현재 _on_chejan_slot 함수가 접수/체결 상태인지, 잔고 이동 상태인지 확인할 수 있습니다.

그다음에는 fid를 담은 s_fid_list를 사용하여 for 반복문을 실행합니다.

for fid in s_fid_list.split(";"): ------ 9201;9203;9205;9001;912;913;302;900;901;처럼 전달되는 fid 리스트를 ‘;’ 기준으로 구분 
    if fid in FID_CODES:
        code = self.dynamicCall("GetChejanData(int)", '9001')[1:] ------ 종목 코드를 얻어 와 A007700처럼 앞자리에 오는 문자를 제거 
        data = self.dynamicCall("GetChejanData(int)", fid) ------ fid를 사용하여 데이터 얻어 오기( fid:9203을 전달하면 주문 번호를 수신하여 data에 저장) 
        data = data.strip().lstrip('+').lstrip('-') ------ 데이터에 +, -가 붙어 있으면( +매수, -매도) 제거

앞서 설명한 것처럼 s_fid_list에는 접수/체결/잔고 이동 상태에 따라 확인할 수 있는 fid 값들이 ‘;’을 기준으로 연결되어 있습니다(9201;9203;9205;9001;912;913;302;900;901;처럼). 즉, 접수/체결 상태일 때와 잔고 이동 상태일 때 전달받는 s_fid_list가 서로 다르며, 이렇게 받아 온 각각의 fid가 어느 항목을 의미하는지 const.py 파일에 정리되어 있습니다. 이 fid 값들을 split 함수를 사용하여 ‘;’ 기준으로 구분합니다.

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