금일 강의는 매우 중요한 부분입니다. 조건 검색식으로 탐지된 종목을 실시간 등록하고 장 중 멈춤 또는 재시작 명령을 수행합니다. 그리고 우리가 분할 매수/매도한 가격도 동시에 저장해야 합니다.
1. 주기적으로 특정 행위를 하는 함수 만들기
이전 강의에서 주기적으로 조건검색식 종목을 가져오는 코딩을 했었죠? 이번에는 그 코딩을 약간 응용해서 종목 확인 및 시간 확인을 해보겠습니다.
- 이전 강의와 동일하게 printhellowWorld() 함수를 호출합니다.
아래는 printhellowWorld() 함수 구조입니다.
(1) 우선 오늘의 시간을 알기위해 strftime함수를 사용하여 시/분/초 정보를 new_time으로 저장합니다.
(2) 그리고 new_time에서 넘어온 데이터 중 알파벳을 제거하고 date_today에 저장합니다. new_time 데이터는 아래 그림과 같이 21H37M 52S 식으로 시/분/초를 구분해서 넘어오게 되고 우리는 H/M/S는 필요 업식 때문에 제거하는 것입니다.
(3) 그리고 threading함수와 Timer함수를 사용하여 60초마다 printhelloWord가 계속 실행되게 만듭니다.
위의 코딩을 마치면 date_today을 이용해 현재시간을 지속적으로 확인할 수 있고 60초마다 특정 행동을 할 수 있습니다.
2. 검색된 종목 확인 및 매수/매도가 설정 한 후 실시간 등록
이부분이 가장 중요한 부분입니다. 집중해서 잘 확인하시기 바랍니다. 혹시 이해가 되지 않으시면 기초반 또는 유튜브 강의가 제작될 때까지 연습하시고 계십시오.
(1) 스크린 넘버를 등록하는 곳입니다.
- self.screen_num 같은 경우는 종목을 실시간 등록하기 위한 스크린 번호입니다.
- self.screen_num2 같은 경우는 종목 매매를 위해 저장된 스크린 번호입니다.
(2) 이전 강의에서 2분마다 검색된 조건 검색식 종목을 portfolio_stock_dict에 저장하였죠? 이제 printhelloWord 함수가 1분마다 재시작되기 때문에 1분마다 portfolio_stock_dict에 어떤 종목이 있는지 확인합니다. 그리고 self.jungbok_prohibit에 portfolio_stock_dict에 대응하는 종목이 없다면 아래와 같이 우리가 세팅한 매매 값들을 저장합니다.
- self.k.protfolio_stock_dict [code]. update({"1차 가격": float() self.parent.textEdit_1.value()}) : portfolio_stock_dict에 저장된 코드에 1차 가격(1차 매수 가격)부터 8차 수량(손절 가격)까지 textEdit_1~16에서 읽어 들여 저장합니다. 차 후 이 값을 통해 실시간 현재가랑 비교하여 매매를 수행할 것입니다. 상당히 중요한 부분입니다.
- 그리고 매매를 위한 주문용 스크린 번호인 self.screen_num2도 같이 저장해야 겠죠
(3) 검색된 종목을 SetRealReg함수를 통해 실시간 등록합니다. 그리고 한번 실시간 등록된 종목은 다시 재 등록이 되지 않도록 막기 위해 self.jungbok_prohibit에 append함수를 사용하여 코드들을 저장시킵니다. 또한 하나의 스크린 번호에 50개의 종목이 저장되긴 하나 만약을 위해서 screen_num과 screen_num2를 1씩 증가시킵니다.
3. 장 중 매수 멈춤/재시작 명령
이전 강의에서 만든 장 중 매수 멈춤 또는 재시작 GUI를 가동해야겠죠?
(1) 앞서 가지고 온 현재 시간 값 date_today가 우리가 만든 GUI에 저장된 값 self.c_t1보다 크고 self.p1이 0일 경우 p1과 stop_mesu를 1로 만듭니다. 이제 p1이 1이 되었기 때문에 (1) 번 코드는 프로그램을 재 시작하지 않는 이상 절대 실행되지 않습니다. 그리고 stop_mesu가 1이 되었기 때문에 차 후 아래에서 코딩을 하겠지만, 매수가 멈추게 됩니다.
(2) 앞서 가지고 온 현재 시간 값 date_today가 우리가 만든 GUI에 저장된 값 self.c_t2보다 크고 self.p2가 0일 경우 p2를 1로 stop_mesu를 0으로 만듭니다. 이제 p2가 1이 되었기 때문에 (2) 번 코드는 프로그램을 재 시작하지 않는 이상 절대 실행되지 않습니다. 그리고 stop_mesu가 0이 되었기 때문에 매수를 재 시작하게 됩니다.
4. 결론
이번 강의는 생각보다 중요한 강의입니다. 조건 검색식에서 검색된 종목을 실시간 등록했을 뿐만 아니라 매매 조건까지 protfolio_stock_dict에 저장하였습니다. 그리고 장 중 매수 멈춤/재시작 코딩도 완료하였습니다. 관련 코드들은 기초반과 이전 강의에서 반복된 내용이므로 이해가 어려우시면 복습하시기 바랍니다. 감사합니다.
'주식 자동매매 강의 > 중급반(시황 및 차트 구현)' 카테고리의 다른 글
[키움 조건검색식 주식자동매매(16)] 실시간 매수 주문하기(중복매수 방지, 매수조건 확인) (15) | 2022.08.17 |
---|---|
[키움 조건검색식 주식자동매매(15)] 장 실시간 상태 및 등록 종목 현재가, 거래량 등 데이터 받기 (10) | 2022.08.16 |
[키움 조건검색식 주식자동매매(14)] 중복 매수 방지 및 매매를 위한 기본 세팅 (8) | 2022.08.14 |
[키움 조건검색식 주식자동매매(13)] 장 시작 시간 설정 및 자동매매 Thread(스레드) 구성하기 (2) | 2022.08.14 |
[키움 조건검색식 주식자동매매(12)] 매수/매도 파라미터 DB화 하기 (9) | 2022.08.11 |