Source code for koapy.backend.kiwoom_open_api_plus.grpc.event.KiwoomOpenApiPlusLoggingEventHandler

import datetime

from koapy.backend.kiwoom_open_api_plus.core.KiwoomOpenApiPlusEventHandler import (
    KiwoomOpenApiPlusEventHandler,
)
from koapy.utils.logging.Logging import Logging


[docs]class KiwoomOpenApiPlusLoggingEventHandler(KiwoomOpenApiPlusEventHandler, Logging):
[docs] def OnReceiveTrData( self, scrnno, rqname, trcode, recordname, prevnext, _datalength, _errorcode, _message, _splmmsg, ): self.logger.debug( "OnReceiveTrData(%r, %r, %r, %r, %r)", scrnno, rqname, trcode, recordname, prevnext, )
[docs] def OnReceiveRealData(self, code, realtype, realdata): self.logger.debug("OnReceiveRealData(%r, %r, %r)", code, realtype, realdata) if code == "09" and realtype == "장시작시간": signal_type = self.control.GetCommRealData(code, 215) current_time = self.control.GetCommRealData(code, 20) estimated_remaining_time = self.control.GetCommRealData(code, 214) signal_type_msg = { # 아래는 문서에서 확인 가능 "0": "장시작전(동시호가시작,이후1분단위)", "2": "장종료전(동시호가시작,이후1분단위)", "3": "장시작(동시호가종료)", "4": "장종료(동시호가종료)", "8": "장종료(시간내용없음)", "9": "장마감(시간내용없음)", # 이후는 추정 "s": "선물옵션장종료전(동시호가시작)", # 17번반복 "a": "장후시간외종가시작", "e": "선물옵션장종료(동시호가종료)", # 17번반복 "b": "장후시간외종가종료", "c": "시간외단일가시작", "d": "시간외단일가종료", }.get(signal_type, "알수없음") if signal_type not in ["8", "9"]: current_time = datetime.datetime.strptime(current_time, "%H%M%S") else: current_time = datetime.datetime.now() ert = datetime.datetime.strptime(estimated_remaining_time, "%H%M%S") estimated_remaining_time = datetime.timedelta( hours=ert.hour, minutes=ert.minute, seconds=ert.second ) self.logger.debug( "%s, %s remaining", signal_type_msg, estimated_remaining_time )
[docs] def OnReceiveMsg(self, scrnno, rqname, trcode, msg): """ [OnReceiveMsg()이벤트] OnReceiveMsg( BSTR sScrNo, // 화면번호 BSTR sRQName, // 사용자 구분명 BSTR sTrCode, // TR이름 BSTR sMsg // 서버에서 전달하는 메시지 ) 서버통신 후 수신한 메시지를 알려줍니다. 메시지에는 6자리 코드번호가 포함되는데 이 코드번호는 통보없이 수시로 변경될 수 있습니다. 따라서 주문이나 오류관련처리를 이 코드번호로 분류하시면 안됩니다. """ self.logger.debug("OnReceiveMsg(%r, %r, %r, %r)", scrnno, rqname, trcode, msg) if msg == "전문 처리 실패(-22)": self.logger.warning("Server might have ended connection abruptly")
[docs] def OnReceiveChejanData(self, gubun, itemcnt, fidlist): self.logger.debug("OnReceiveChejanData(%r, %r, %r)", gubun, itemcnt, fidlist)
[docs] def OnEventConnect(self, errcode): self.logger.debug("OnEventConnect(%r)", errcode)
[docs] def OnReceiveRealCondition( self, code, condition_type, condition_name, condition_index ): self.logger.debug( "OnReceiveRealCondition(%r, %r, %r, %r)", code, condition_type, condition_name, condition_index, )
[docs] def OnReceiveTrCondition( self, scrnno, codelist, condition_name, condition_index, prevnext ): self.logger.debug( "OnReceiveTrCondition(%r, %r, %r, %r, %r)", scrnno, codelist, condition_name, condition_index, prevnext, )
[docs] def OnReceiveConditionVer(self, ret, msg): self.logger.debug("OnReceiveConditionVer(%r, %r)", ret, msg)