프로그래밍/파이썬

[파이썬] eBest Xing api 실시간조회, S3_ 코스피체결 구현 (7)

말춘이 2020. 2. 22. 15:46
반응형

 

 

GitHub - malchooni/EBestAPI_Python: 파이썬 학습목적의 이베스트 API 구현

파이썬 학습목적의 이베스트 API 구현. Contribute to malchooni/EBestAPI_Python development by creating an account on GitHub.

github.com

 

[파이썬] eBest Xing api 실시간조회, 멀티스레드 설계 (1)

[파이썬] eBest Xing api 실시간조회, 스레드 설계 구현 (2)

[파이썬] eBest Xing api 실시간조회, ThreadJob 구현 (3)

[파이썬] eBest Xing api 실시간조회, ConnectionManager 구현 (4)

[파이썬] eBest Xing api 실시간조회, QueryThreadJob 구현 (5)

[파이썬] eBest Xing api 실시간조회, NWS 뉴스 요청 구현 (6)

[파이썬] eBest Xing api 실시간조회, S3_ 코스피체결 구현 (7)

[파이썬] eBest Xing api 실시간조회, 테스트 및 실행 화면 (8)

 

 

S3_ 쿼리는 요청하는 종목코드에 대해 체결 내역 정보를 실시간으로 수신받을 수 있다.

 

from name_yalsooni.crawler_py.ebest.realtime.queryjob import EventHandler
from name_yalsooni.crawler_py.ebest.realtime.queryjob import QueryThreadJob
from name_yalsooni.crawler_py.ebest.util import Log, EventUtil
 
 
class S3EventHandler(EventHandler):
    def OnReceiveRealData(self, code):
        shcode = self.event.GetFieldData("OutBlock", "shcode")
        price = self.event.GetFieldData("OutBlock", "price")
        Log.write(code + " : " + shcode + " - " + price)
 
 
class S3(QueryThreadJob):
    _OP_APPEND = "APPEND"
    CM_SHCODE = "SHCODE"
 
    def __init__(self):
        QueryThreadJob.__init__(self, "RT_S3_KOSPI", 0.1)
 
    def _operation_init(self):
        self._operation_dict[self._OP_APPEND] = self._operation_append
 
    def _operation_call(self, command):
        self._event = EventUtil.get_event("S3_", S3EventHandler)
        self._event.SetFieldData("InBlock", "shcode", command[self.CM_SHCODE])
        self._event.AdviseRealData()
        Log.write("Request done : " + command[self.CM_SHCODE])
 
    def _operation_append(self, command):
        self._event.SetFieldData("InBlock", "shcode", command[self.CM_SHCODE])
        self._event.AdviseRealData()
        Log.write("Request done : " + command[self.CM_SHCODE])
 
    # push append command
    def append_call(self, command):
        command[self.CM_COMMAND] = self._OP_APPEND
        self._push_command(command)

 

- 7 Line : OnReceiveRealData 
  이베스트 서버로부터 응답이 수신되면 해당 메소드가 호출된다.
  등록된 종목의 코드와 가격을 출력한다.
- 18 Line 
  생성자에서 스레드이름과 큐 타임아웃을 파라미터로 넘긴다.
- 20 Line : _operation_init
  뉴스 요청과 달리 코스피체결 요청은 기본 오퍼레이션에 종목을 추가할 수 있는 'APPEND' 오퍼레이션이 하나 더있다.
  기본 오퍼레이션인 'CALL'은 상위클래스인 QueryThreadJob에서 등록해주기 때문에 등록 과정은 필요없다.
  하지만 'APPEND'오퍼레이션은 _operation_init 메소드에서 _operation_dict 딕셔너리에 등록 해준다.
- 23 Line : _operation_call
  코스피체결 요청에 필요한 파라미터를 설정하고 AdviseRealData 메소드를 통해 해당 쿼리를 요청한다.
  이 메소드에서 요청할 수 있는 이벤트 객체를 생성하기 때문에 최초의 호출은 이 메소드부터 호출되어야 한다.
- 23 Line : _operation_append
  코스피체결 요청은 다수의 종목을 등록할 수 있다. 오퍼레이션 'CALL'을 통해 요청된 상태에서 'APPEND'를 통해 다수의 종목을 등록한다.

 

 

buycycle.name

'Buycycle'은 증권사 API를 HTTP Json으로 요청 및 응답 받을 수 있습니다. 요청 받은 Json 메시지를 증권사 API 양식에 맞게 변환해 주는 자바 기반의 오픈 소스 입니다. HTTP RESTful을 제공함으로써 사용자

buycycle.name

반응형