[키움 조건검색식 주식자동매매(7)] 조건검색식 종목 받아온 후 QTableWidget에 전시하기
본문 바로가기

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

[키움 조건검색식 주식자동매매(7)] 조건검색식 종목 받아온 후 QTableWidget에 전시하기

반응형

 저번 강의에 이어 조건 검색식 종목을 가져온 후 원하는 테이블 위젯에 값을 전시하기 위한 코딩을 하겠습니다. self.request_stock()과 self.serachItem2() 함수를 구성하겠습니다.

 

self.request_stock()과 self.serachItem2() 함수
self.request_stock()과 self.serachItem2() 함수

 

  혹시 이해가 되지 않으시는 분들은 이전 강의 또는 기초반 강의를 완강하시기 바랍니다. 중급반 강의인만큼 자세한 설명은 생략합니다.

 

 1. 조건검색식 종목 요청하기 : Sendcondition

아래는 조건검색식 종목 키움 서버로 요청하기 위한 self.requeest_stock()함수 입니다.

반응형

self.request_stock()
self.request_stock()

(1) 우리가 선택할 조건 검색식 이름을 콤보 박스에서 가져옵니다. 이때 콤보 박스의 objectName은 kiwoom_list이고 currentText() 함수를 사용해 원하는 값을 가져옵니다.

조건식 선택
조건식 선택

 (2) 우리가 가져온 값은 이름이므로, 실제 키움 서버에 명령을 위해서는 코드 번호가 필요합니다. 따라서 우리가 선택한 코드 이름과 우리가 가진 모든 조건식 리스트가 있는 condition_litst를 비교하여 있으면 멈추고 없으면 k의 값을 1씩 증가 시킵니다. 만약 2번째에서 code_name과 condition_litst의 값이 동일하다면 k는 1이 됩니다(키움은 0부터 시작하죠)

 그 후에 condition_litst에 들어 있는 2번째 index값을 가져오면 그 값이 code_number가 됩니다.

 

 (3) Sendondition에 우리가 원하는 code_number를 넣어 키움 서버에 키움조건검색식 종목을 요청합니다. 즉 테스트에 대한 조건식을 키움서버에 요청했으므로 그에 상응한 값을 OnReceiveTrCondition에 반환하게 되고 result에는 1 또는 0을 반환합니다. 만약 result에 1이 반환되면 조건 검색식 요청이 성공한 것이고 0이 반환되면 실패한 것입니다. 실패에는 여러 이유가 있지만 대부분 1분내 여러번 검색식을 요청할 때 발생하게 됩니다.

 그리고 eventLoop를 실행해 키움 서버에서 종목이 반환되기 전까지 다음 코드가 실행되지 않도록 막습니다.

 

 2. 종목을 받아오는 OnReceiveTrCondition 

 조건검색식 종목을 받아오는 OnReceiveTrCondition입니다.

OnReceiveTrCondition
OnReceiveTrCondition

 (1) OnReceiveTrCondition : codelist에는 원하는 종목의 리스트가 들어 있고 만약 30개가 넘어간다면 sPrevNext가 2가 됩니다. 실시간 검색 시 최대 검색 종목수가 10개를 넘어가지 못하므로 2가 될 확률은 없습니다.

 (2) 받아온 종목은 12345;12333;11111; 이런 식으로 구분되어 있는 것을 split함수를 사용하여 [12345, 12333, 11111]이런 식으로 받아오게 구성합니다.

 (3) 받아온 모든 종목을 하나씩 검수하여 self.k.code_list에 저장합니다.

 (4) 완료되면, eventLoop함수를 끊어 줍니다.

 

 3. 받아온 종목을 GUI에 전시하기 

 받아온 종목을 GUI에 전시하기 위해 QTableWidget을 만드는데 objectName은 check_list입니다.

 

GUI 설정
GUI 설정

 아래 코드를 이용해 우리가 받아온 종목의 종목 이름과 코드 번호를 GUI에 전시합시다.

searchItem(2)
searchItem(2)

 (1) 이전에 우리가 받아온 종목을 저장한 self.k.code_list방에서 self.new_code로 복사합니다.

 (2) 코드 번호를 받아왔으니 종목 이름이 필요하겠죠. 코스피 또는 코스닥 이외에 필요 없는 종목도 거를 겸 self.k.All_Stock_Code에 저장된 종목(약 3600개) 중 self.new_code에 있는 종목과 동일한 종목이 있는지 확인하고 있다면 self.itemName에 종목명을 입력시킵니다.

 (3) 이 부분은 GUI를 구성하는 부분이며 너무 많이 설명드려서 생략하고 링크로 대체합니다. 기초반/중급반의 분할 매수매도에 설명드렸습니다. [링크 : 중급반 GUI 입력하기]

 

 4. 최종 결과

 검색된 결과가 성공적으로 전시되는 것을 확인할 수 있습니다. 이것만 성공해도 절반 이상 성공하신 겁니다. 여러분들은 어제 저 종목코드와 종목명으로 무엇이든 하실 수 있습니다. 혹시 이해가 어려우시면 언제든 질문 주십시오. 감사합니다.

최종 결과
최종 결과

반응형

.link_tit