32강에서 자동매매 종목 선정을 위한 GUI를 구성하였으며, 오늘 강의에서는 입력 종목에 대한 코드번호/종목명/현재가/신용비율을 GUI에 출력해 보겠습니다. 예전 강의와 상당히 중복되니 빠르게 진행하겠습니다.
[유튜브 강의, 링크]와 같이 보시면 많은 도움이 되실 겁니다.
1. GUI Push 버튼 클릭 시 자동매매 종목 선정 함수 실행하기
- self.k를 이용하여 싱글턴에 접속 후 kiwoom.OnReceiveTrData 함수를 통해 키움 서버로부터 반환된 데이터를 self.trdata_slot에 저장합니다.
- 그리고 32강에서 정의한 push button 중 하나인 additemlast를 클릭하면 self.searchItem2라는 함수가 실행되게 했습니다. self.searchItem2는 자동매매 종목 선정 함수입니다.
2. Table Widget표에 입력 코드/종목 출력하기
아래와 같이 3단계를 거쳐 Table Widget표에 입력 종목을 출력하겠습니다.
(1) 입력 종목 받아온 후 종목 코드 알아내기
아래 그림에서 입력 종목을 넣고 종목 추가를 누르면 종목 코드를 알아오기 위한 부분입니다.
- 우선 입력 종목 넣는 곳의 이름은 searchItemTextEdit2이며, 여기에 입력된 종목 값을 받아오기 위해 toPlainText() 함수를 사용합니다. 결과는 ItemName에 저장합니다.
- if ItemName != "" : 만약 ItemName이 비어있지 않는다면 아래의 코드를 실행하게 됩니다.
- for code in self.k.ALL_Stock_Code.keys() : 16강에서 .ALL_Stock_Code안에 코스닥/코스피 전 종목의 종목 이름과 코드 번호를 입력하였기 때문에 약 3200개 종목의 코드 번호를 하나씩 가져옵니다.
- if itemName == self.k.ALL_Stock_Code[code]["종목명"] : 만약 3200개의 코드 중 1개라도 itemName과 이림이 같다면 그 종목의 코드번호를 self.new_code에 입력함으로써 우리가 입력한 종목의 이름의 코드번호를 알아냅니다.
(2) 종목코드번호와 종목명 Table Widget에 입력하기
Table Widget에 대한 설명은 19강에 자세히 설명되어 있습니다. 행의 이름과 행/열의 개수를 알아냅니다.
- column_head : 행의 이름
- colCount : 열의 개수
- row_count : 행의 개수
buylast라는 Talbe Widget에 행의 이름과 행/열의 개수만큼 값을 넣어 표를 완성해 줍니다.
- setColumnCount : 열의 개수를 정해 줍니다. 행의 이름 개수와 동일합니다.
- setRowCount : 행의 개수를 정해줍니다. 파이썬은 0행부터 시작하며, 0행에는 행의 이름이 들어가고 1행부터 원하는 값이 들어갑니다.
- setHorizontalHeaderLabels : 행의 이름을 세팅해줍니다.
종목의 코드와 이름을 Talbe Widget에 입력합니다. 여기서 주의해야 할 것이 입력 값을 0행부터 입력합니다. 아까 0행은 행의 이름이 들어가고 1행부터 원하는 데이터가 들어간다고 했는데 이상하지 않나요? 저도 이상합니다. 하지만 파이썬 함수는 이렇게 정의를 하였습니다. 표를 세팅할 때는 1행부터 데이터가 입력된다고 만들어도, 실제 데이터를 입력할 때는 0행부터 입력된다고 정의합니다. 이해가 잘 안 되시면 차 후에 올라오는 유튜브 방송에서 확인하세요.
- self.buylast라는 Talbe Widget에 setItem을 사용하여 원하는 갑을 넣습니다. 이때, row_count는 0행부터 시작하므로 0행 0열에는 QTableWidgetItem 함수를 사용하여 종목 코드를 0행 1열에는 종목 이름을 입력합니다.
(3) 종목 현재가와 신용비율 가져오기
종목 현재가와 신용비율을 가져오기 위해서는 opt10001 함수를 사용하여 키움 서버로 명령을 전송해야 합니다. 명령을 전송하면 특정값이 반환되고 그 값을 self.trdata_slot에 저장해야 하므로 위에서 kiwoom.OnReceiveTrData 함수를 사용한 것입니다.
- self.getItemInfo(self.new_code) : 종목 현재가와 신용비율을 가져오기 위해 self.getItemInfo 함수를 만들었으며 원활한 명령 전송을 위해 self.new_code도 같이 함수에 보내줍니다.
강의가 너무 길어졌습니다. 다음 강의에서 입력 종목의 현재가 및 신용비율을 출력하겠으며, 전체 코드도 다음 강의에서 공개하도록 하겠습니다. 수고하셨습니다.
'주식 자동매매 강의 > 기초반(모든 코딩의 뿌리)' 카테고리의 다른 글
주식자동매매 35강. 자동매매 종목 선정(4), 선정 종목 삭제하기 (4) | 2022.05.27 |
---|---|
주식자동매매 34강. 자동매매 종목 선정(3),현재가/신용비율 (opt10001, 주식기본정보요청) (11) | 2022.05.26 |
주식자동매매 32강. 자동매매 종목 선정(1), GUI 구성하기 (2) | 2022.05.25 |
[특강 5] 주식 역배열 차트 탐지 알고리즘 제작 완료, 파이썬 코드 공유 (2) | 2022.05.24 |
[특강 4] 역배열 차트 주식 탐지 알고리즘(4), 5일/20일 이평선 만든 후 역배열 탐지하기 (3) | 2022.05.24 |