본문 바로가기
KHOpenAPI

[KHOpenAPI] Real Type: 장시작시간

by Falto 2023. 11. 7.

[답변] 실시간타입: 장시작시간 FID 20 체결시간에 대해서.

  • 운영자25
  • 2020.03.24 15:38
  • 조회수 172
안녕하십니까. 키움증권 운영자입니다.
먼저 키움증권에 관심을 가져주시고 이용해주시는 고객님께 감사 인사드립니다.

FID 20은 시간 데이터를 전달하는것으로 실시간 타입에 따라 전달되는 형식이 달라집니다.

장운영구분 (FID 215번) = 8
체결시간 (FID 20번) = 888888

장운영구분 (FID 215번) = 9
체결시간 (FID 20번) = 999999

실시간 타입 "장시작시간"의 상세한 장운영 구분값(FID 215번)에 대해서 알려드리면 다음과 같으며 1번, 5번, 6번, 7번은 사용하지 않습니다.
장운영구분 (FID 215번)
0:장시작전
2:장마감전 동시호가
3:장시작
4:장종료 예상지수종료
8:장마감
9:장종료 - 시간외종료
a:시간외 종가매매 시작
b:시간외 종가매매 종료
c:시간외 단일가 매매시작
d:시간외 단일가 매매종료
s:선옵 장마감전 동시호가 시작
e:선옵 장마감전 동시호가 종료

감사합니다.

- 키움증권 리테일전략팀 -
[원글] 실시간타입: 장시작시간 FID 20 체결시간에 대해서.

OnReceiveRealData(2020-03-23 15:33:00.153079): [09], [장시작시간] ================================================
8       888888  000000

키움 API 는 기본적으로 문자열로 데이터를 보내기 때문에 무조건 적절한 타입으로 변환 및 파싱 해줘야합니다.
현재 FID[20]에 해당하는 시간 데이터는 HH:MM:SS 포맷으로 날아오고 '주식체결' 같은 다른 실시간 타입에도 사용됩니다.

저는 FID[20]를 위 형식에 맞게 변환해서 프로그래밍 언어에서 제공하는 날짜 및 시간 타입으로 다루고 있습니다.

[215] = 8
[20] = 888888
[214] = 000000
위 처럼 아무 의미도 없는 데이터를 수신하게 되면 해당 타입으로 파싱할 때 Validation 오류가 나게 되겠죠. 똑같은 FID 20 인데 '주문체결'에서는 일관되게 다루어도 문제가 없고, '장시작시간'에서는 저런 데이터로 인해서 매 수신마다 예외 처리와 같은 분기를 계속 해내야 합니다. 프로그래밍에서 '장시작시간'의 FID20과 '주문체결'의 FID20 완전히 다른 겁니다.

저게 무슨 뜻인지 궁금합니다. 개인적으로 키움 API 설계 사상에 적응하기가 쉽지 않네요. 저런게 한 두개가 아니라서..

 

 


 

 

[답변] 장시작시간 실시간 데이타 수신 안됨

  • 운영자25
  • 2021.05.04 16:01
  • 조회수 148
안녕하십니까. 키움증권 운영자입니다.
먼저 키움증권에 관심을 가져주시고 이용해주시는 고객님께 감사 인사드립니다.


장시작시간 실시간타입은 별도의 등록절차 필요없이
OnReceiveRealData 이벤트로 수신됩니다.
SetRealReg 함수는 종목에대한 실시간시세 등록시 사용하시면 됩니다.
장시작시간 실시간타입은 장시작 30분전부터 주기적으로 수신되며
장마감전 동시호가시 수신됩니다. 이 시간사이 장중에는 수신되지 않습니다.
프로그램이 락 상태가 되지 않는지도 확인해보시기 바랍니다.


감사합니다.

- 키움증권 리테일전략팀 -
[원글] 장시작시간 실시간 데이타 수신 안됨


# 실시간 이벤트 연결
def real_event_slot(self):self.OnReceiveRealData.connect(self.realdata_slot) 


# 실시간 자료 요청
self.dynamicCall("SetRealReg(QString, QString, QString, QString)", self.screen_start_stop_real, '', self.realType.REALTYPE['장시작시간']['장운영구분'], "0")self.dynamicCall("SetRealReg(QString, QString, QString, QString)", self.screen_today_ranking_list, '', self.realType.REALTYPE['주문체결']['종목코드'], "1")

# 실시간 자료 수신
def realdata_slot(self, sCode, sRealType, sRealData):if sRealType == "장시작시간":코드elif sRealType == "주식체결":코드elif sRealType == "주식호가잔량":코드

위와 같이 구현을 하면 주식체결 데이터는 실시간으로 들어오는데, 
장시작시간 데이터는 실시간으로 들어오질 않습니다. 즉 장시작시간 if문은 실행되지 않습니다.

 

 


출처: 키움 Open API+ 게시판

댓글