아래 그림에서 12강까지 파란색 부분을 완료하였습니다. 이번 강의부터는 실시간 자동매매를 위한 빨간색 부분을 코딩할 것이며, 자동매매 시작 스레드와 장 중 멈춤/장 재시작 부분의 기초를 다지도록 하겠습니다.
1. 장 중 멈춤/장 재시작 설정
투자를 하다보면 특정 시간대에는 멈추고 또는 재시작을 할 경우가 있습니다. 많이들 알려져 있지만 단타의 경우 오전 9시부터 오전 10시 오후 2시 30분부터 오후 3시 10분까지 해야 된다고 합니다. 그때 거래량이 가장 활발하기 때문입니다. 이렇게 전략적 구동을 위해서 시간에 관련된 함수가 반드시 필요합니다. 개인적으로 이 부분 값을 불러오고 실시간 매매에 적용한다고 고생 좀 하였습니다. 왜 그런지는 차차 말씀드리겠습니다.
(1) GUI 구성 : Time Edit를 만들고 장 중 멈춤 objectName은 statime이라 명칭 합니다. 그리고 장 재시작 objectName은 stptime이라 명칭합니다. objectName은 본인이 원하는 값을 넣으면 됩니다.
(2) GUI 값 초기 세팅 코딩
GUI 세팅을 보시면 오전/오후 + 시간으로 구분되어 있습니다. 실시간 자동매매 시 시간 정보가 시/분/초로 전송되어 오기 때문에 아래와 같이 바꿔줘야 코딩이 편하게 됩니다.
- 장 중 멈춤 statime이라는 GUI값을 시/분/초로 바꾸기 위해 setDisplayFormat 함수를 사용하여 ("hh:mm:ss")로 바꿔 줍니다. stptime도 동일합니다.
- 그리고 장 중 멈춤 시간 정보 입력을 위해 setTime 함수를 사용하고 QTime 함수를 사용하여 (14, 00, 00)으로 세팅합니다. 이 부분은 본인이 원하는 값을 넣으시면 됩니다. 장 중 재시작도 동일합니다.
2. 자동매매 시작 Thread 함수 구현하기
(1) GUI 구성 : pushButtom을 만들어 objectName을 Start_Auto로 구성합니다.
(2) 메인 Kiwoom_meme.py에서 Start_Auto가 클릭되면 실시간 자동매매를 하는 start_stock 함수가 실행되게 합니다.
start_stock 함수의 경우 실행되는 순간 setText함수를 이용해 글씨가 완료로 바뀌고 setStyleSheet함수를 이용해 빨간색으로 변하게 합니다. 그리고 Thread53을 start 되게 하는데 이제부터 Thread53이 실시간 자동매매를 담당하는 스레드입니다.
그리고 혹시 기억을 못 하실 까 봐 Thread를 가져오기 위해서는 Kiwoom_meme.py에서 Thread53을 아래와 같이 import 하셔야 됩니다(이 부분은 기초반에서 많이 반복하였습니다).
(3) 실시간 자동매매를 담당하는 Thread53 기본 세팅
- 1 같은 경우 부모 클래스의 기능을 받아오는 구간입니다. PyQt5를 통해 스레드 기능, kiwoom에서 싱글턴 함수, datetime을 통해 현재 시간을 받아오는 기능, threading 함수를 통해 지역 스레드 기능 등을 가져옵니다. 아 참고로 re함수의 경우 어떤 문장에서 내가 원하는 단어를 찾기 위해 사용되는 함수로써 다음 강의에서 설명드릴 테니 이런 게 있구나라고 넘어가시면 될 것 같습니다.
- 2의 경우 Thrad53을 만들고 QThread를 넣음으로써 스레드 기능을 할당합니다.
- 3의 경우 부모 클래스(Kiwoom_meme.py)에서 사용되는 GUI를 스레드에서도 사용할 수 있게 self.parent에 parent를 상속시킵니다. 그리고 부모와 현재 스레드 클래스를 초기화하고 Kiwoom() 클래스(싱글턴, 로그인 및 키움 서버로 기타 주문 전송을 위한 마법의 언어)를 self.k에 인스턴스화 합니다.
이번 강의는 여기서 끝내도록 하겠습니다. 이해가 어려운 부분은 기초반을 참고하시거나 질문해주시면 되겠습니다. 감사합니다.
'주식 자동매매 강의 > 중급반(시황 및 차트 구현)' 카테고리의 다른 글
[키움 조건검색식 주식자동매매(14)] 2분마다 검색된 종목 실시간 등록 및 장 중 매수 멈춤/재시작 명령 (2) | 2022.08.15 |
---|---|
[키움 조건검색식 주식자동매매(14)] 중복 매수 방지 및 매매를 위한 기본 세팅 (8) | 2022.08.14 |
[키움 조건검색식 주식자동매매(12)] 매수/매도 파라미터 DB화 하기 (9) | 2022.08.11 |
[키움 조건검색식 주식자동매매(11)] 매매(매수/매도) GUI Double Spinn Box DB 초기화 작업 (7) | 2022.08.10 |
[키움 조건검색식 주식자동매매(10)] 등록종목 매수/매도 GUI 설정하기(복습 포함) (6) | 2022.08.09 |