Last active
August 31, 2017 09:08
-
-
Save esstory/09909cc9125b5027004d7be41a982802 to your computer and use it in GitHub Desktop.
PLUS API EX - 파이썬 현재가 실시간 조회
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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