주식자동매매 9강. 1~8강 복습 및 정리(초심자 용, 최종 코드)
본문 바로가기

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

주식자동매매 9강. 1~8강 복습 및 정리(초심자 용, 최종 코드)

반응형

1~8강에서 주식 자동매매 프로그램 작성을 위한 가장 기초적인 구조 만들기를 수행하였습니다. 이 구조위에 자동매매를 위한 코드만 작성하면 되니, 초심자를 위해 다시 정리해 드리겠습니다.

 

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

1. 코드 구성

여러분들은 총 3가지의 파일이 프로젝트 안에 있어야 합니다.

 (1) 만든 ui : 저는 ALBA.ui라 만들었습니다.

 (2) 메인 스크립트 : 저는 Lecture_0425.py라 만들었습니다.

 (3) 매타클래스 기반 싱글턴 스크립트 : 저는 kiwoom.py라 만들었습니다.

아래 코드를 그대로 Lecture_0425.py(여러분들이 만든 스크립트) 안에 적어 넣으세요.

아래 코드는 여러분들이 제작한 ui를 그대로 불러오는 코드입니다. 앞으로 이 코드가 기본 구조가 될 테니 반드시 수행하셔야 됩니다.

그리고 코드에 대한 설명은 앞선 강의에 되어 있으니, 궁금하시면 확인하시면 됩니다.

Lecture_0425.py 코드 전체화면
Lecture_0425.py 코드 전체화면

 

아래 코드는 매타클래스 기반 싱글턴 코드입니다. 이 코드는 여러분들이 작성한 메인코드(Lecture_0425.py)와 앞으로 만들어질 Thread 코드 간의 통신을 위해 만들어진 것입니다. 이 코드는 절대 언어와 비슷하며, 모든 통신의 교두보 역할을 할 것이고 교환원과 비슷하다고 생각하시면 됩니다.

저는 kiwoom.py라 정의하였고 키움 클래스를 사용하기 위한 QAxWidget까지 적어 두었습니다. 아래 코드도 그대로 적어 넣으세요.

매타클레스 기반 싱글턴
매타클레스 기반 싱글턴

이제 여러분들은 자동매매를 만들기 위한 틀은 갖추었습니다. 앞으로 위의 두개의 코드를 기반으로 확장해 나가도록 하겠습니다. 이해가 어려우신 분들은 코드만 작성하시고 따라오시면 자동매매 프로그램이 완성된 것을 볼 수 있을 것입니다. 그리고 개발될 최종 프로그램을 체험하고 싶으시면 본 블로그의 아래 페이지로 가시기 바랍니다.

 

[주식 자동매매 프로그램] 베타 버전 무료 공유에 따른 공지

 

https://auto-trading.tistory.com/10

 

[주식자동매매 프로그램] 베타 버전 무료 공유에 따른 공지

블로그에 들오신 분들 중 자동매매프로그램을 실물로 확인하시고 싶은 분들이 있을 것이라 판단됩니다. 따라서 아래와 같이 기능이 제한된 프로그램을 공유해 드리오니 여러분의 수익실현 또

auto-trading.tistory.com

 

반응형

2. 전체 코드

(1) lecture_0425.py (메인스크립트)

 


import sys                        # system specific parameters and functions : 파이썬 스크립트 관리
from PyQt5.QtWidgets import *     # GUI의 그래픽적 요소를 제어       하단의 terminal 선택, activate py37_32,  pip install pyqt5,   전부다 y
from PyQt5 import uic             # ui 파일을 가져오기위한 함수


################# 부가 기능 수행(일꾼) #####################################
from kiwoom import Kiwoom          # 키움증권 함수/공용 방 (싱글턴)

#=================== 프로그램 실행 프로그램 =========================#

form_class = uic.loadUiType("ALBA.ui")[0]             # 만들어 놓은 ui 불러오기

class Login_Machnine(QMainWindow, QWidget, form_class):       # QMainWindow : PyQt5에서 윈도우 생성시 필요한 함수

    def __init__(self, *args, **kwargs):                      # Main class의 self를 초기화 한다.

        print("Login Machine 실행합니다.")
        super(Login_Machnine, self).__init__(*args, **kwargs)
        form_class.__init__(self)                            # 상속 받은 from_class를 실행하기 위한 초기값(초기화)
        self.setUI()                                         # UI 초기값 셋업 반드시 필요

        ####키움증권 로그인 하기
        self.k = Kiwoom()                     # Kiwoom()을 실행하며 상속 받는다. Kiwoom()은 전지적인 아이다.

    def setUI(self):
        self.setupUi(self)                # UI 초기값 셋업

if __name__=='__main__':             # import된 것들을 실행시키지 않고 __main__에서 실행하는 것만 실행 시킨다.
                                     # 즉 import된 다른 함수의 코드를 이 화면에서 실행시키지 않겠다는 의미이다.

    app = QApplication(sys.argv)     # PyQt5로 실행할 파일명을 자동으로 설정, PyQt5에서 자동으로 프로그램 실행
    CH = Login_Machnine()            # Main 클래스 myApp으로 인스턴스화
    CH.show()                        # myApp에 있는 ui를 실행한다.
    app.exec_()                      # 이벤트 루프

 

(2) kiwoom.py : 메타클래스 기반 싱글턴

 


from PyQt5.QtWidgets import *                 # GUI의 그래픽적 요소를 제어       하단의 terminal 선택, activate py37_32,  pip install pyqt5,   전부다 y
from PyQt5.QAxContainer import *              # 키움증권의 클레스를 사용할 수 있게 한다.(QAxWidget)
from PyQt5Singleton import Singleton

class Kiwoom(QWidget, metaclass=Singleton):       # QMainWindow : PyQt5에서 윈도우 생성시 필요한 함수

    def __init__(self, parent=None, **kwargs):                    # Main class의 self를 초기화 한다.

        print("로그인 프로그램을 실행합니다.")

        super().__init__(parent, **kwargs)

        ################ 로그인 관련 정보

        self.kiwoom = QAxWidget('KHOPENAPI.KHOpenAPICtrl.1')       # CLSID

 

10강 바로가기 : 클래스/객체/인스턴스에 대하여 간략히 알아봅시다.

반응형

.link_tit