계좌평가잔고내역을 요청하기 위해 스레드 스크립트를 구성하도록 하겠습니다. 키움서버에 명령을 전송하고 수행한 결과를 받아오는 과정 수행을 위한 구조를 만드는 강의 입니다.
[유튜브 강의, 링크]와 같이 보시면 많은 도움이 되실 겁니다.
1. 주문전송을 위한 기타 설정
from PyQt5.QtCore import * # 쓰레드 함수를 불러온다.
from kiwoom import Kiwoom # 로그인을 위한 클래스
from PyQt5.QtWidgets import * #PyQt import
class Thread1(QThread):
def __init__(self, parent): # 부모의 윈도우 창을 가져올 수 있다.
super().__init__(parent) # 부모의 윈도우 창을 초기화 한다.
self.parent = parent # 부모의 윈도우를 사용하기 위한 조건
################## 키움서버 함수를 사용하기 위해서 kiwoom의 능력을 상속 받는다.
self.k = Kiwoom()
##################
################## 사용되는 변수
self.Acc_Screen = "1000" # 계좌평가잔고내역을 받기위한 스크린
(1) from A import *등에 대한 함수 설명은 7강.에서 완료 하였습니다.
(2) Class Thread1은 QThread 기능을 상속받아 이제부터 스레드 기능을 가지게 됩니다.
(3) def __init__(self, parent) 부터 self.parent = parent 까지는 부모 GUI를 사용하기 위해 초기화 및 인스턴스화 하는 과정입니다. 이 과정이 없으면 GUI에 우리가 원하는 값을 불러오거나 입력할 수 없습니다. 필수적으로 있어야 합니다. 상세 설명은 7강.에서 완료 하였습니다.
(4) self.k = Kiwoom() : Kiwoom() 클래스를 self.k에 상속하여 self.k만 있으면 키움 함수 사용이 가능하게 합니다.
(5) self.Acc_Screen = "1000" : 계좌평가잔고내역을 불러오기 위한 스크린을 1000으로 할당합니다.
- 스크린 이란 : 1~9999까지 총 9999개가 존재하며 1개당 50개의 데이터를 저장할 수 있는 주머니 입니다. 예를들어 기관 매수 종목이 60개면 한개의 스크린에 50개의 종목을 저장할 수 있으니 총 2개의 스크린이 필요합니다. 만약 1개의 스크린에 60개의 종목을 넣게 되면 앞선 10개 데이터는 삭제됩니다.
2. 키움 요청 데이터를 받아오는 방 만들기 및 EventLoop 설정
###### 슬롯
self.k.kiwoom.OnReceiveTrData.connect(self.trdata_slot) # 내가 알고 있는 Tr 슬롯에다 특정 값을 던져 준다.
###### EventLoop
self.detail_account_info_event_loop = QEventLoop() # 계좌 이벤트루프
(1) self.k.kiwoom.OnReceiveTrData.connect(self.trdata_slot)
- self.k를 이용해 키움 함수를 사용할 준비를 합니다.
- kiwoom.OnReceiveTrData.함수를 사용해 키움 요청데이터를 받을 준비를합니다.
- 요청데이터는 connect함수를 거쳐 self.trdata_slot에 보냅니다.
(2) self.k.detail_account_info_event_loop = QEventLoop : 이벤트 루프는 상속시킵니다. QEventLoop는 10강에 자세히 설명해 두었습니다.
3. 요약
계좌평가잔고내역을 요청하기 위한 스레드 스크립트 기본 구조를 설정하였습니다.
- GUI 사용하기위한 설정
- 키움 함수를 사용하기 위한 설정
- 주문을 전송하기 위한 스크린 번호 설정
- 주문전송 후 처리된 결과를 받아오는 방 생성
- 관련 전체 코드는 아래와 같습니다.
16강 바로가기 : 다음 강의에서는 코스피/코스닥 모든 종목의 코드와 이름을 가져와 봅시다.
from PyQt5.QtCore import * # 쓰레드 함수를 불러온다.
from kiwoom import Kiwoom # 로그인을 위한 클래스
from PyQt5.QtWidgets import * #PyQt import
class Thread1(QThread):
def __init__(self, parent): # 부모의 윈도우 창을 가져올 수 있다.
super().__init__(parent) # 부모의 윈도우 창을 초기화 한다.
self.parent = parent # 부모의 윈도우를 사용하기 위한 조건
################## 키움서버 함수를 사용하기 위해서 kiwoom의 능력을 상속 받는다.
self.k = Kiwoom()
##################
################## 사용되는 변수
self.Acc_Screen = "1000" # 계좌평가잔고내역을 받기위한 스크린
###### 슬롯
self.k.kiwoom.OnReceiveTrData.connect(self.trdata_slot) # 내가 알고 있는 Tr 슬롯에다 특정 값을 던져 준다.
###### EventLoop
self.detail_account_info_event_loop = QEventLoop() # 계좌 이벤트루프
'주식 자동매매 강의 > 기초반(모든 코딩의 뿌리)' 카테고리의 다른 글
주식자동매매 17강. 계좌평가잔고내역요청(5), 서버에 내역 요청하기(opw00018) (0) | 2022.05.05 |
---|---|
주식자동매매 16강. 계좌평가잔고내역요청(4), 주식 종목 가져오기 (2) | 2022.05.04 |
주식자동매매 14강. 계좌평가잔고내역요청(2), 스레드 구성하기 (0) | 2022.05.03 |
주식자동매매 13강. 계좌평가잔고내역요청(1), KOA Studio 사용 (1) | 2022.05.01 |
주식자동매매 12강. 로그인시 계좌번호 GUI에 전시하기 (11) | 2022.04.29 |