[주식자동매매 프로그램 특강 1편] 정해진 시간에 계좌에 있는 모든 종목 매도하기(GUI 편)
본문 바로가기

주식 자동매매 강의/중급반(시황 및 차트 구현)

[주식자동매매 프로그램 특강 1편] 정해진 시간에 계좌에 있는 모든 종목 매도하기(GUI 편)

반응형

 장 마감 전이나 특정 사건이 있을 경우 계좌를 비우고 싶은 경우가 많이 생기게 됩니다. 특히, 물가지수 등을 발표할 때 시장 변동성이 크기 때문에 정해진 시간에 계좌에 있는 모든 종목을 매도할 수 있는 알고리즘이 필요합니다.

 

 알고리즘 구성을 크게 아래와 같습니다.

 1. 시간 관련 그래픽 GUI 만들기

 2. 시간관련 그래픽 GUI에 특정 시간 값 저장 및 불러오기

  (1) 특정 값 입력 및 불러오기

  (2) 특정 값 데이터 베이스 만들기

 3. 코딩하기

  (1) 시간 스레드 구성하기

  (2) 시간 스레드 안에 특정 조건에서 계좌에 있는 모든 종목 매도 코딩하기

 

반응형

 

 위의 코딩과정은 초급반 및 중급반에 이미 한번 다뤘습니다. 중급반에서는 링크: 12강부터 한번 보셔도 될 것 같습니다.

 자 그럼 GUI관련 부터 한번 설명드리겠습니다. 이미 한번 다뤘던 부분을 반복하기 때문에 알고 계신 분들은 리마인드 하신다고 생각하면 될 것 같으며, 처음 보시는 분들은 기초반 또는 중급반을 수강하시기 바랍니다(무료입니다).

 

 1. 시간 관련 그래픽 GUI 만들기

 아래 그림과 같이 QT Designer에서 Time Edit 생성 후 원하는 위치에 도킹시킵니다. 이때, object_name은 본인이 원하시는 것으로 하면 되는데 저 같은 경우에는 stop_time이라 정의하였습니다. 혹시 QT Designer에 대해 잘 모르실 경우 블로그에서 검색해 보시면 잘 나와 있습니다.

QT Designer에서 Time Edit 생성
QT Designer에서 Time Edit 생성

 2. 시간 관련 그래픽 GUI에 특정 시간 값 저장 및 불러오기

 위의 Time Edit에 우리는 원하는 값을 넣거나 가져와야겠죠? 어떻게 하는지 간단히 알아보겠습니다. 심화 코딩은 다음 3강에서 알아보도록 하시죠.

 

 

 

 (1) 특정 값 입력 및 불러오기

 아래 코드를 보시면 2가지가 보입니다. setDisplyFormat과 setTime입니다. 2 가지가 있어야 원하는 값을 입력할 수 있습니다. setDisplyFormat의 경우 시/분/초를 나타내기 위한 것으로 아래와 같이 동일하게 입력하십시오.

 그리고 stop_time에 원하는 값을 넣기 위해 setTime을 사용하며, 값을 넣을 때 반드시 QTime 함수를 사용하고 아래와 같은 예제로 집어넣습니다.

        self.stop_time.setDisplayFormat('hh:mm:ss')
        self.stop_time.setTime(QTime(16, 30, 00))

 또한 QTime을 사용하기 위해서는 아래와 같이 QtTest 부모 클래스에서 모든 함수를 가져와야 하며, 아래 코드는 코딩하는 페이지 제일 위에 해주세요. 이 부분은 기초반에서 많이 설명드렸습니다.

from PyQt5.QtTest import *        # Timer 관련 함수 가졍괴

 

QtTest 부모 클레스
QtTest 부모 클레스

 

 Time Edit에 특정 값을 setDisplyFormat과 setTime을 이용해 입력했으니 우리가 코딩하는 곳에서 저 값을 불러와야겠죠? 아래의 코딩과 같이 time(). toString("HHmmss") 함수를 사용합니다.

 

 

a = self.parent.stop_time.time().toString("HHmmss") # 멈추고 싶을 때
self.stop_meme = int(a)

 

 설명드리면, 우선 위의 코드는 스레드에 들어가기 때문에 스레드에서 부모 클래스에서 만든 GUI에 접속하기 위해서는 parent 함수를 사용하죠? parent함수 다음 stop_time의 Time Edit에 접속 후 그 값을 불러오기 위해 time(). toString("HHmmss") 함수를 사용합니다. 이때 시분초로 값을 들고 오죠. 만약 입력값이 14:30:00초라면 불러오게 되면 string(문자) 값으로 143000이 됩니다. 우리는 나중에 시간 값 a를 어디서든 사용할 수 있게 self.stop_meme에 넣게 됩니다. 이때 중요한 점은 int 즉 정수로 넣습니다. 차 후에 시간을 계속 확인할 텐데 이 값이 정수이므로 서로 비교하기 위해 int로 바꾸게 됩니다.

 

 3. 결론 및 정리

 - QT Designer를 이용해 GUI를 만들었습니다.

 - GUI는 Time Edit를 이용해 만듭니다.

 - Time Edit에 값을 입력하기 위해서는 setDisplyFormat과 setTime 함수를 이용합니다.

 - Time Edit에 값을 불러오기 위해서는 time(). toString("HHmmss")

 

 어찌 되었든 이번 강의에서는 간단하게 개념만 이해하시고 다음 강의에서 코딩을 시작해보시죠. 그렇다고 그냥 넘어가시면 안 됩니다. 감사합니다.

반응형

.link_tit