Skip to content

Instantly share code, notes, and snippets.

@esstory
Last active August 31, 2017 09:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save esstory/09909cc9125b5027004d7be41a982802 to your computer and use it in GitHub Desktop.
Save esstory/09909cc9125b5027004d7be41a982802 to your computer and use it in GitHub Desktop.
PLUS API EX - 파이썬 현재가 실시간 조회
import sys
from PyQt5.QtWidgets import *
import win32com.client
import types
class CpEvent:
instance = None
def OnReceived(self):
time = CpEvent.instance.GetHeaderValue(3) # 시간
timess = CpEvent.instance.GetHeaderValue(18) # 초
exFlag = CpEvent.instance.GetHeaderValue(19) # 예상체결 플래그
cprice = CpEvent.instance.GetHeaderValue(13) # 현재가
diff = CpEvent.instance.GetHeaderValue(2) # 대비
cVol = CpEvent.instance.GetHeaderValue(17) # 순간체결수량
vol = CpEvent.instance.GetHeaderValue(9) # 거래량
if (exFlag == ord('1')): # 동시호가 시간 (예상체결)
print("실시간(예상체결)", time, timess, cprice, diff, cVol, vol)
elif (exFlag == ord('2')): #장중(체결)
print("실시간(장중체결)", time, timess, cprice, diff, cVol, vol)
class CpStockCur:
def Subscribe(self, code):
objStockCur = win32com.client.Dispatch("DsCbo1.StockCur")
win32com.client.WithEvents(objStockCur, CpEvent)
objStockCur.SetInputValue(0, testCode)
CpEvent.instance = objStockCur
objStockCur.Subscribe()
class CpStockMst:
def Request(self, code):
# 연결 여부 체크
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
print("PLUS가 정상적으로 연결되지 않음. ")
return False
# 현재가 객체 구하기
objStockMst = win32com.client.Dispatch("DsCbo1.StockMst")
objStockMst.SetInputValue(0, code) # 종목 코드 - 삼성전자
objStockMst.BlockRequest()
# 현재가 통신 및 통신 에러 처리
rqStatus = objStockMst.GetDibStatus()
rqRet = objStockMst.GetDibMsg1()
print("통신상태", rqStatus, rqRet)
if rqStatus != 0:
return False
# 현재가 정보 조회
code = objStockMst.GetHeaderValue(0) # 종목코드
name = objStockMst.GetHeaderValue(1) # 종목명
time = objStockMst.GetHeaderValue(4) # 시간
cprice = objStockMst.GetHeaderValue(11) # 종가
diff = objStockMst.GetHeaderValue(12) # 대비
open = objStockMst.GetHeaderValue(13) # 시가
high = objStockMst.GetHeaderValue(14) # 고가
low = objStockMst.GetHeaderValue(15) # 저가
offer = objStockMst.GetHeaderValue(16) # 매도호가
bid = objStockMst.GetHeaderValue(17) # 매수호가
vol = objStockMst.GetHeaderValue(18) # 거래량
vol_value = objStockMst.GetHeaderValue(19) # 거래대금
print("코드 이름 시간 현재가 대비 시가 고가 저가 매도호가 매수호가 거래량 거래대금")
print(code, name, time, cprice, diff, open, high, low, offer, bid, vol, vol_value)
return True
if __name__ == "__main__":
app = QApplication(sys.argv)
# 하이닉스 현재가 기본 조회
testCode = "A000660"
objStockMst = CpStockMst()
if (objStockMst.Request(testCode) == False):
exit()
# 하이닉스 실시간 현재가 요청
objStockCur = CpStockCur()
objStockCur.Subscribe(testCode)
print("-------------------")
print("실시간 현재가 요청 시작")
app.exec_()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment