Guest User

Untitled

a guest
Nov 18th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. import sys
  2. from PyQt5.QtWidgets import *
  3. import win32com.client
  4. import pandas as pd
  5. import os
  6.  
  7. g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpStockCode')
  8. g_objCpStatus = win32com.client.Dispatch('CpUtil.CpCybos')
  9. g_objCpTrade = win32com.client.Dispatch('CpTrade.CpTdUtil')
  10.  
  11.  
  12. # Cp8537 : 종목검색 전략 조회
  13. class Cp8537:
  14. def __init__(self):
  15. self.objRq = None
  16. return
  17.  
  18. def requestList(self, caller):
  19. caller.data8537 = {}
  20. self.objRq = None
  21. self.objRq = win32com.client.Dispatch("CpSysDib.CssStgList")
  22.  
  23. # 예제 전략에서 전략 리스트를 가져옵니다.
  24. self.objRq.SetInputValue(0, ord('0')) # '0' : 예제전략, '1': 나의전략
  25. self.objRq.BlockRequest()
  26.  
  27. # 통신 및 통신 에러 처리
  28. rqStatus = self.objRq.GetDibStatus()
  29. if rqStatus != 0:
  30. rqRet = self.objRq.GetDibMsg1()
  31. print("통신상태", rqStatus, rqRet)
  32. return False
  33.  
  34. cnt = self.objRq.GetHeaderValue(0) # 0 - (long) 전략 목록 수
  35. flag = self.objRq.GetHeaderValue(1) # 1 - (char) 요청구분
  36. print('종목검색 전략수:', cnt)
  37.  
  38.  
  39. for i in range(cnt):
  40. item = {}
  41. item['전략명'] = self.objRq.GetDataValue(0, i)
  42. item['ID'] = self.objRq.GetDataValue(1, i)
  43. item['전략등록일시'] = self.objRq.GetDataValue(2, i)
  44. item['작성자필명'] = self.objRq.GetDataValue(3, i)
  45. item['평균종목수'] = self.objRq.GetDataValue(4, i)
  46. item['평균승률'] = self.objRq.GetDataValue(5, i)
  47. item['평균수익'] = self.objRq.GetDataValue(6, i)
  48. caller.data8537[item['전략명']] = item
  49. print(item)
  50.  
  51. return True
  52.  
  53. def requestStgID(self, id, caller):
  54. caller.dataStg = []
  55. self.objRq = None
  56. self.objRq = win32com.client.Dispatch("CpSysDib.CssStgFind")
  57. self.objRq.SetInputValue(0, id) # 전략 id 요청
  58. self.objRq.BlockRequest()
  59. # 통신 및 통신 에러 처리
  60. rqStatus = self.objRq.GetDibStatus()
  61. if rqStatus != 0:
  62. rqRet = self.objRq.GetDibMsg1()
  63. print("통신상태", rqStatus, rqRet)
  64. return False
  65.  
  66. cnt = self.objRq.GetHeaderValue(0) # 0 - (long) 검색된 결과 종목 수
  67. totcnt = self.objRq.GetHeaderValue(1) # 1 - (long) 총 검색 종목 수
  68. stime = self.objRq.GetHeaderValue(2) # 2 - (string) 검색시간
  69. print('검색된 종목수:', cnt, '전체종목수:', totcnt, '검색시간:', stime)
  70.  
  71. for i in range(cnt):
  72. item = {}
  73. item['code'] = self.objRq.GetDataValue(0, i)
  74. item['종목명'] = g_objCodeMgr.CodeToName(item['code'])
  75. caller.dataStg.append(item)
  76.  
  77. return True
  78.  
  79. class MyWindow(QMainWindow):
  80. def __init__(self):
  81. super().__init__()
  82.  
  83. self.setWindowTitle("종목검색 예제")
  84. self.setGeometry(300, 300, 500, 180)
  85.  
  86. self.obj8537 = Cp8537()
  87. self.data8537 = {}
  88. self.dataStg = []
  89.  
  90. nH = 20
  91. btnOpt1 = QPushButton('전략리스트 조회', self)
  92. btnOpt1.move(20, nH)
  93. btnOpt1.clicked.connect(self.btnOpt1_clicked)
  94. nH += 50
  95.  
  96. self.comboStg = QComboBox(self)
  97. self.comboStg.move(20, nH)
  98. self.comboStg.currentIndexChanged.connect(self.comboChanged)
  99. self.comboStg.resize(400, 30)
  100. nH += 50
  101.  
  102. btnExit = QPushButton('종료', self)
  103. btnExit.move(20, nH)
  104. btnExit.clicked.connect(self.btnExit_clicked)
  105. nH += 50
  106. self.setGeometry(300, 300, 500, nH)
  107.  
  108. self.btnOpt1_clicked()
  109.  
  110.  
  111. # 전략리스트 조회
  112. def btnOpt1_clicked(self):
  113. self.obj8537.requestList(self)
  114.  
  115. for k, v in self.data8537.items():
  116. self.comboStg.addItem(k)
  117. return
  118.  
  119.  
  120.  
  121. def comboChanged(self):
  122. cur = self.comboStg.currentText()
  123. print(cur)
  124. self.requestStgID(cur)
  125.  
  126.  
  127.  
  128. def requestStgID(self, stgName):
  129. item = self.data8537[stgName]
  130. id = item['ID']
  131. name = item['전략명']
  132.  
  133. self.obj8537.requestStgID(id, self)
  134.  
  135. print('검색전략:', id, '전략명:', name, '검색종목수:', len(self.dataStg))
  136. for item in self.dataStg:
  137. print(item)
  138. return
  139.  
  140. def btnExit_clicked(self):
  141. exit()
  142. return
  143.  
  144.  
  145.  
  146. if __name__ == "__main__":
  147. app = QApplication(sys.argv)
  148. myWindow = MyWindow()
  149. myWindow.show()
  150. app.exec_()
Add Comment
Please, Sign In to add comment