CREON Plus

[파이썬] 종목별 투자자 매매동향 (잠정)데이터

상품종류
투자정보
언어종류
파이썬
작성일
2017/11/13
조회수
9178

CpSysDib.CpSvr7210d 를 통해 "종목별 투자자 매매동향(잠정)데이터" 를 조회 합니다. 

사용된 PLUS OBJECT

   - CpSysDib.CpSvr7210d - 투자자 매매 동향(잠정) 데이터 조회 

■ 화면 설명

- 기관계 상위 :  기간계 상위 순으로 조회 

- 외국인상위 :  외국인상위 순으로 조회 

- print : 조회 내용 print

- 엑셀 내보내기 : 조회 내용 엑셀로 내보내기 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import sys
from PyQt5.QtWidgets import *
import win32com.client
import pandas as pd
import os
 
g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpStockCode')
g_objCpStatus = win32com.client.Dispatch('CpUtil.CpCybos')
g_objCpTrade = win32com.client.Dispatch('CpTrade.CpTdUtil')
 
 
# Cp7210 : 종목별 투자자 매매동향(잠정)데이터
class Cp7210:
    def __init__(self):
        self.objRq = None
        return
 
    def request(self, investFlag, caller):
        maxRqCont = 1
        rqCnt = 0
        caller.data7210 = []
        self.objRq = None
        self.objRq = win32com.client.Dispatch("CpSysDib.CpSvr7210d")
 
        while True:
            self.objRq.SetInputValue(0'0')  # 0 전체 1 거래소 2 코스닥 3 업종 4 관심종목
            self.objRq.SetInputValue(1, ord('0')) # 0 수량 1 금액
            self.objRq.SetInputValue(2, investFlag) # 0 종목 1 외국인 2 기관계 3 보험기타 4 투신..
            self.objRq.SetInputValue(3, ord('0')) # 0 상위순 1 하위순
 
            self.objRq.BlockRequest()
            rqCnt += 1
 
            # 통신 및 통신 에러 처리
            rqStatus = self.objRq.GetDibStatus()
            rqRet = self.objRq.GetDibMsg1()
            print("통신상태", rqStatus, rqRet)
            if rqStatus != 0:
                return False
 
            cnt = self.objRq.GetHeaderValue(0)
            date = self.objRq.GetHeaderValue(1# 집계날짜
            time = self.objRq.GetHeaderValue(2)  # 집계시간
            print(cnt)
 
            for i in range(cnt):
                item = {}
                item['code'= self.objRq.GetDataValue(0, i)
                item['종목명'= self.objRq.GetDataValue(1, i)
                item['현재가'= self.objRq.GetDataValue(2, i)
                item['대비'= self.objRq.GetDataValue(3, i)
                item['대비율'= self.objRq.GetDataValue(4, i)
                item['거래량'= self.objRq.GetDataValue(5, i)
                item['외국인'= self.objRq.GetDataValue(6, i)
                item['기관계'= self.objRq.GetDataValue(7, i)
                item['보험기타금융'= self.objRq.GetDataValue(8, i)
                item['투신'= self.objRq.GetDataValue(9, i)
                item['은행'= self.objRq.GetDataValue(10, i)
                item['연기금'= self.objRq.GetDataValue(11, i)
                item['국가지자체'= self.objRq.GetDataValue(12, i)
                item['기타법인'= self.objRq.GetDataValue(13, i)
 
                caller.data7210.append(item)
 
            if rqCnt >= maxRqCont:
                break
 
            if self.objRq.Continue == False:
                break
        return True
 
 
 
 
 
 
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
 
        self.setWindowTitle("종목별 투자자 매매동향(잠정)")
        self.setGeometry(300300300180)
 
        self.obj7210 = Cp7210()
        self.data7210 = []
 
        nH = 20
        btnOpt1 = QPushButton('기관계 상위', self)
        btnOpt1.move(20, nH)
        btnOpt1.clicked.connect(self.btnOpt1_clicked)
        nH += 50
 
        btnOpt2 = QPushButton('외국인 상위', self)
        btnOpt2.move(20, nH)
        btnOpt2.clicked.connect(self.btnOpt2_clicked)
        nH += 50
 
        btnPrint = QPushButton('print', self)
        btnPrint.move(20, nH)
        btnPrint.clicked.connect(self.btnPrint_clicked)
        nH += 50
 
        btnExcel = QPushButton('엑셀 내보내기', self)
        btnExcel.move(20, nH)
        btnExcel.clicked.connect(self.btnExcel_clicked)
        nH += 50
 
 
        btnExit = QPushButton('종료', self)
        btnExit.move(20, nH)
        btnExit.clicked.connect(self.btnExit_clicked)
        nH += 50
        self.setGeometry(300300300, nH)
 
 
    # 기관계 상위
    def btnOpt1_clicked(self):
        self.obj7210.request(2, self)
        return
 
    # 외국인 상위
    def btnOpt2_clicked(self):
        self.obj7210.request(1, self)
        return
 
 
    def btnPrint_clicked(self):
        for item in self.data7210:
            print(item)
        return
 
    # 엑셀 내보내기
    def btnExcel_clicked(self):
        excelfile = '7210.xlsx'
        df = pd.DataFrame(columns=['code','종목명''현재가''대비''대비율''거래량''외국인''기관계',
                                              '보험기타금융''투신','은행','연기금','국가지자체','기타법인'])
 
        for item in self.data7210:
            df.loc[(len(df))] = item
 
        # $크레이트$ a Pandas Excel writer using XlsxWriter as the engine.
        writer = pd.ExcelWriter(excelfile, engine='xlsxwriter')
        # Convert the dataframe to an XlsxWriter Excel object.
        df.to_excel(writer, sheet_name='Sheet1')
        # Close the Pandas Excel writer and output the Excel file.
        writer.save()
        os.startfile(excelfile)
        return
 
    def btnExit_clicked(self):
        exit()
        return
 
 
 
if __name__ == "__main__":
    app = QApplication($시스.$argv)
    myWindow = MyWindow()
    myWindow.show()
    app.$이엑스이씨$_()
 
 
cs
첨부파일
의견(0)

첨부파일을 PDF뷰어로 확인 하실수 있으며, PDF뷰어 미설치 고객께서는 우측 다운로드를 통해 설치 후 이용 가능 합니다.

PDF뷰어 다운로드

인쇄