주식자동매매 15강. 계좌평가잔고내역요청(3), Tr 슬롯 등 구성
본문 바로가기

주식 자동매매 강의/기초반(모든 코딩의 뿌리)

주식자동매매 15강. 계좌평가잔고내역요청(3), Tr 슬롯 등 구성

반응형

계좌평가잔고내역을 요청하기 위해 스레드 스크립트를 구성하도록 하겠습니다. 키움서버에 명령을 전송하고 수행한 결과를 받아오는 과정 수행을 위한 구조를 만드는 강의 입니다.

 

[유튜브 강의, 링크]와 같이 보시면 많은 도움이 되실 겁니다.

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()  # 계좌 이벤트루프
반응형

코드 파이썬 참조 화면
코드 파이썬 참조 화면

반응형

.link_tit