1번 특강에서 역배열 차트의 개념을 배웠습니다. 결국 주식일봉차트데이터가 필요한데 이번 강의에서는 일봉차트데이터를 가져오는 opt10081에 대하여 알아보겠습니다
[유튜브 강의, 링크]와 같이 보시면 많은 도움이 되실 겁니다.
1. KOA Studio 주식일봉차트 가져오기 opt10081 알아보기
KOA Studio를 확인해보면 3가지의 입력이 필요합니다.
- SetInputValue : 종목코드 입력
- SetInputValue : 기준일자, 기준일자로부터 600개의 데이터를 가져옵니다.
- SetInputValue : 수정주가구분, 특정 구분이 필요 없기 때문에 0으로 합니다.
그리고 받아올 때 저번 강의에서 계속 반복해 말씀드렸던 CommRqData를 합니다.
2. 파이썬 코딩하기
31강에이어 Qthread_2에 지속적으로 코딩해 보겠습니다.
(1) 4개의 변수 추가
- self.Predic_Screen : 일봉차트를 위한 스크린 번호
- self.calcul_data : 일봉차트 조회를 하고 반환된 결과값을 저장하는 객체
- self.second_filter : 일봉차트 조회 후 이평선 결과값을 비교하여 역배일인지 확인
- self.Predic_statrt : 이 부분은 강의에서 제외하도록 하겠습니다. 미래를 예측할 수 있는 함수입니다.
(2) 역배열 평가 함수
- self.Invers_arrangement() 제작
(3) 역배열 평가 함수 구성 : 주식일봉차트조회 요청
주식일봉차트를 조회하겠습니다. 우선 code_list 객체를 리스트 형태로 만든 후 계좌에 저장된 종목들의 번호를 전부 저장합니다.(리스트는 [1, 2, 3 ….] 이런식으로 나가는 표현 형식 입니다)
- for code in self.k.acc_portfolio.keys() : 메타클레스 기반의 싱글턴에 저장된 종목번호를 가져오기 위해 self.k를 한 후 acc_portfolio애 저장된종목코드 번호를 keys() 함수를 적용해 가져온 후 code에 저장합니다.
- code에 있는 종목을 리스트 형태로 code_list에 붙여 둡니다. 이때 append 함수를 사용합니다.
- enumerate함수를 사용하여 code_list에 들어있는 종목 코드 번호를 하나씩 빼옵니다.
- 그리고 종목에 대한 주식일봉차트조회를 너무 빈번히 하면 키움서버에서 임시 락이 걸리기 때문에 적당한 간격으로 주문을 전송하기 위해 1초의 지연을 QTest.qWait(1000) 함수를 사용합니다. 1000의 단위는 ms 입니다.
- 앞서 KOA Studio에서 말씀드린 3가지의 SetInputValue를 입력합니다.
- 그런데 1개의 이상한 코드가 보이시죠? DisconnectRealData, 컴퓨터의 프로그램이 갑자기 종료되면 프로그램의 모든 값들은 초기화 되지만 키움서버는 저희 컴퓨터가 또는 프로그램이 종료된지 모르죠? 그렇기 때문에 주문을 보낸 값에 대한 반환을 지속적으로 하게 됩니다. 나중에 실시간으로 넘어가게 되면 컴퓨터에서 프로그램 종료 후 재 실행하면 명령을 넣지도 않았는데 원하지 않는 값들이 반환된딥니다. 이로인해 무수한 에러가 발생할 수 있습니다. 따라서, 우리 컴퓨터 또는 프로그램이 종료된것을 키움서버에 알리고 초기화 하기위해 스크린 번호를 끊는 것입니다. 이 부분은 해도 되고 하지 않아도 되나 저는 안정성을 위해 하는 편입니다. 실시간 처리에서는 상당히 깊게 생각을 해야 되는 부분이 많아서 웬만하면 하시는 것을 추천드립니다.
- 3개의 입력값 중 [SetInputValue : 기준일자.] 가 보이지 않죠? 이 값을 적지 않으면 오늘이 기준이 됩니다. 따라서 원하는 값을 적으시면 그 날을 기준으로 600일치 값이 들어오게 됩니다.
- 다음으로 종목코드 및 수정주가구분을 입력합니다.
- 이제 관련된 값을 CommRqDta를 이용해 받아 옵니다. 입력값을 차 후 반환된 값을 받아오는 함수 이름(주식일봉차트조회), 그리고 주문 전송 이름 opt10081, 그리고 0을 입력하는데 연속 조회할 항목이 있으면 2를 입력하는데 여러분들은 그렇지 않기 때문에 0을 입력 하십싱요. 그리고, 스크린번호를 입력합니다.
- 다음으로 self.detail_account_info_event_loop.exec_()를 사용하여 주문이 완료될 때 까지 다음 코드가 실행되는 것을 막습니다.
오늘 설명드린 부분은 이전에 설명드린 것과 매우 유사하기 때문에(계속 유사할 것입니다.) 간략히 설명 드렸습니다. 27강과 내용이 90% 똑같기 때문에 혹시 더 자세한 설명을 원하시면 들어가서 복습해 보십시요.
감사합니다.
'주식 자동매매 강의 > 기초반(모든 코딩의 뿌리)' 카테고리의 다른 글
[특강 4] 역배열 차트 주식 탐지 알고리즘(4), 5일/20일 이평선 만든 후 역배열 탐지하기 (3) | 2022.05.24 |
---|---|
[특강 3] 역배열 차트 주식 탐지 알고리즘(3), 주식일봉차트 가져오기 (3) | 2022.05.23 |
[특강 1] 역배열 차트 주식 탐지 알고리즘(1), 개념 설명, 알면 피할 수 있다 (2) | 2022.05.20 |
주식자동매매 31강. 계좌관리하기 (8), opt10045 최종 요약 및 코드 공개 (7) | 2022.05.19 |
주식자동매매 30강. 계좌관리하기 (7), opt10045 결과 GUI에 입력하기 (2) | 2022.05.18 |