이전 강의에서는 실시간 매수 주문을 전송하였다면, 주문 결과가 미체결 상태인지 또는 체결상태인지를 파악해야 합니다. 체결이 되어야 우리가 원하는 가격에 매도를 할 수 있기 때문이지요.
그리고 미체결 상태면, 빨리 매수를 취소하고 다시 매수 주문을 넣어야겠지요. 이 정보를 받아오기 위한 코딩을 해보겠습니다. 참고로 기초반 강의에서 미체결/체결 잔고 업데이트에서 이미 다 설명드린 부분이니 핵심만 짚고 넘어가겠습니다.
1. 체결 정보 받아오는 슬롯 및 FID 번호 저장 스크립트 구성
아래와 같이 OnReceiveChejanData 함수를 이용해 체결 및 잔고 정보를 self.chejan_slot에 받습니다.
아래 KOA Studio를 확인하시면 주문체결에 대한 정보를 받아오기 위한 FID 번호가 보이시죠?
FID 정보를 kiwoomType이라는 이름의 스크립트에 딕셔너리로 다 모아 두었죠? 관련 코드는 기초반에 다 있습니다.
관련 정보를 받아오는 슬롯도 만들었고 어떠한 정보를 가져올 지 선택할 수 있는 FID 정보도 다 구현되어 있으니 우리는 이제 필요한 정보만 받아오면 됩니다.
2. chejan_slot에서 미체결 정보
다시 말씀드리지만 기초반에서 했던 내용의 반복 입니다. 우선 우리가 매수 주문이 들어가면 체결되지 않은 상태 즉 미체결 상태이죠? 이때 sGubun에 0이 키움 서버로부터 전송되고, 체결이 되면 1이 키움 서버로부터 전송됩니다.
자그럼 sGubun이 0일 때 아래와 같은 정보들을 받아옵니다.
- GetChejanData 함수와 kiwoomType에 있는 FID번호를 이용해 계좌번호/종목코드/종목명/주문상태/주문 수량.... 등의 다양한 정보를 받아옵니다. 궂이 이렇게 다 받을 필요는 없는데 강의차원에서 다 받아오는 것이고 주문상태랑 주문수량 주문 가격 정도만 있어도 큰 문제는 없습니다. 본인이 원하는 정보를 받아오시면 됩니다.
그 외에도 아래와 같은 정보를 얻어 올 수 있는데 여기서 조심하셔야 될 것이 chegual_price 같은 경우 없으면 empty 즉 ""으로 데이터가 넘어오니 차 후에 에러를 방지하기 위해 empty면 0을 넣어 줍니다. 체경량도 동일하고요.
그리고 별표가 있는데 이제 미체결 잔고에 있는 종목의 경우 not_account_stock_dict에 저장합니다. 즉, 미체결 잔고에 있는 모든 종목은 order_number로 구분하여 전부 저장한다는 뜻이죠. 그러면 order_number로 구분된 not_account_stock_dict에 있는 종목의 정보를 넣어야겠죠? 이미 우리는 위에서 다양한 미체결 정보를 받아 왔습니다. not_account_stock_dict에 넣기만 하면 됩니다.
아래와 같이 not_account_stock_dict에 update함수를 이용하여 다양한 정보를 업데이트시킵니다.
위의 코딩을 완료하셨다면, 이제 주문된 미체결 잔고의 모든 정보를 가져온 것과 같습니다. 하지만 미체결 잔고로는 딱히 할 것이 없습니다. 미체결 잔고의 주문 가격 대비 현재가가 밑에 있다면, 취소하고 다시 주문을 넣는 정도를 할 수 있습니다. 뭐 그건 다음 강의 때 말씀드리겠습니다.
3. chejan_slot에서 체결 정보
sGubun에 1이 들어오게 되면 주문 넣은 정보가 체결되었다는 것입니다. 즉, 우리가 매수 주문 넣은 아이가 체결이 된 것이지요. GetChejanData와 잔고 FID 번호를 이용해 다양한 체결 정보를 받아옵니다.
그리고 위의 정보를 입력해야 할 방이 있어야겠지요?? 아래 그림을 보시면 jango_dict에 코드를 입력시킵니다. 그리고 현재가부터 매수호가까지 모든 정보를 저장합니다. 여기까지 하셨으면 체결된 잔고 정보를 모두 입력한 것과 같습니다.
여기서 중요한 것이 매도 매수 구분입니다. 만약 매수였다면, 우리가 jango_dict 정보를 가지고 매도를 할 수 있겠지요? 즉, 매도 정보의 척도가 된다는 뜻입니다. 상당히 중요합니다!
또 하나, 만약 매도가 완료되고 stock_quan이 0이 되면 우리 계좌좐고에서 삭제하거나 매매 가능 수량을 0으로 만들어 차 후 코딩 시 에러가 뜨지 않게 코딩합니다.
여기까지 코딩하셨으면, 체결이 되었는지 또는 체결이 어떻게 되었는지 등의 모든 정보를 확인할 수 있습니다. 이정보를 가지고 매수/매도를 취소할 것인지, 매도 시에 얼마큼 매도할 것인지 등의 판단을 할 수 있습니다.
오늘 강의는 여기까지입니다. 수고하셨습니다.
'주식 자동매매 강의 > 중급반(시황 및 차트 구현)' 카테고리의 다른 글
[키움 조건검색식 주식자동매매(20)] 금일 매수한 종목에 대하여 분할 손절하기 (14) | 2022.09.03 |
---|---|
[키움 조건검색식 주식자동매매(19)] 금일 매수한 종목에 대하여 분할 익절하기 (8) | 2022.09.02 |
[키움 조건검색식 주식자동매매(17)] 실시간 분할 매수하기 (25) | 2022.08.19 |
[키움 조건검색식 주식자동매매(16)] 실시간 매수 주문하기(중복매수 방지, 매수조건 확인) (15) | 2022.08.17 |
[키움 조건검색식 주식자동매매(15)] 장 실시간 상태 및 등록 종목 현재가, 거래량 등 데이터 받기 (10) | 2022.08.16 |