주식자동매매 38강. 선정 종목 데이터베이스화 하기(2), 저장된 Text 불러와 GUI에 전시하기
본문 바로가기

주식 자동매매 강의/기초반(모든 코딩의 뿌리)

주식자동매매 38강. 선정 종목 데이터베이스화 하기(2), 저장된 Text 불러와 GUI에 전시하기

반응형

37강에서 GUI에 선정된 종목을 Text로 저장하는 법을 알아보았습니다. 이번 강의에서는 저장된 Text파일을 불러와 다시 GUI에 전시하는 법을 알아보도록 하겠습니다.

 

[유튜브 강의, 링크]와 같이 보시면 많은 도움이 되실 겁니다.

 

#주식 자동매매

#자동으로 Text 로드 후 GUI에 전시하기

 

장 시작 하루 전날 종목을 선정하여 저장한 후 다음날 아침에 저장된 종목을 불러와 자동매매를 시작해야 하기 때문에 이번 강의가 필요합니다(키움 서버는 오전 5시 30분에 서버가 종료되어 자동매매를 계속 실행시켜 놓을 수 없습니다.)

 

1.  저장된 Text 불러와 GUI에 전시를 실행하는 명령어 함수

 - self.Load_Stock.clicked.connect(self.Load_code) :  37강에서 만든  push 버튼인 Load_Stock을 클릭하면 self.Load_code를 실행되게 해 놓았습니다. 

저장된 Text 불러와 GUI에 전시를 실행하는 명령어 함수
저장된 Text 불러와 GUI에 전시를 실행하는 명령어 함수

 

2.  저장된 Text 불러와 임의의 공간에 저장하기

 저장된 Text를 불러와 self.Getanal_code에 다 집어넣어 보겠습니다.

저장된 Text 불러와 임의의 공간에 저장하기
저장된 Text 불러와 임의의 공간에 저장하기

 - if os.path.exists("dist/Selected_code.txt") : dist라는 폴더 안에 Selected_code.txt파일 있으면 아래 코드를 실행합니다.

 

dist 폴더
dist 폴더

 -  f = open("dist/Selected_code.txt", "r", encoding="utf8) : Selected_code.txt를 읽어 들여 f에 저장합니다. utf8은 문자가 기호들을 컴퓨터에서 읽을 수 있게 변환한다 정도로만 이해하십시오.

 - lines = f.readlines() : readlines()라는 파이썬 내부 함수를 이용하여 f에 들어있는 값들을 lines에 입력합니다. 아래 그림을 보시면 3개의 종목 정보가 lines에 입력됩니다.

selected clode에 들어잇는 종목 수 3개
selected clode에 들어잇는 종목 수 3개

 - for line in lines : lines에 있는 숫자를 순차적으로 line에 넣습니다. 0, 1, 2,... 이런 식으로 요.

 - if line != "": 만약에 line이 "" 비어있지 !=않다면 아래 코드를 실행 합니다.

 - ls = line.split("\t") : line에  들어잇는 정보들을 \t로 구분하여 ls에 넣습니다.

   009150    삼성전기    149500    +1.28을 ==> [009150, 삼성전기, 149500, +1.28] 이렇게 입력시킵니다.

 - t_code = ls[0] : ls[0]에는 009150이 들어 있고 이를 t_code에 입력시킵니다. 나머지 동일 합니다.

 - dept = ls[3].split("\n")[0] : ls[3]에 들어있는 +1.28을 dept에 집어넣는데 37강에서 마지막 저장을 \n으로 해놨기 때문에 또 split를 이용하여 \n을 불리시킵니다.

 - self.Getanal_code.append([t_code, t_name, current_price, dept]) : append 함수를 사용하여 위에서 불러온 모든 값을 저장합니다. 총 3개가 존재하니 [ [삼성전기의 값], [바이넥스의 값], [삼성전자의 값]]으로 저장됩니다.

 - f.close() : 다 불러왔으니 열었던 Text를 종료합니다.

 

3.  임의의 공간에 입력된 값을 GUI에 전시하기

  GUI 중 Table Widget에 입력하는 방법은 2번은 설명드렸을 것입니다. 특히 33강에서는 정말 자세히 설명드렸으니 다시 읽어 보시기 바랍니다. 그래도? 다시 또 한 번 설명은 간단히 드리겠습니다.

임의의 공간에 입력된 값을 GUI에 전시하기
임의의 공간에 입력된 값을 GUI에 전시하기

 - colum_head: 열의 이름을 정의합니다.

 - len(column_head) : 총 4개의 열이 생성되겠군요

 - len(self.Getanal_code) : 총 3개의 종목이 들어 있으니 행은 3개가 만들어지겠군요

 - seltColumnCount ~ setSelectionMode를 통해 행과 열을 구성하고 열의 이름도 정의합니다.

 - self.buylast.setItem(index, 0, QTableWidgetItem(str(self.Gental_code[index][0]))) : 잘 보시면 index는 rouCount를 가져오니 행의 값입니다. 총 3개의 행이 있으니 0부터 2가 들어 가겠군요. 그리고 self.Gental_code[index][0] 즉 index가 0이면 0번째의 0, 즉, 삼성전기의 종목코드가 로드됩니다. 만약 index가 0이고 1이면 삼성전기의 종목명이 로드됩니다. 그리고 index가 2이고 0이면 삼성전자의 종목코드가 로드됩니다. 

 

반응형

 이렇게 하면 우리가 원하는 값을 최종 로드할 수 있습니다. 전체 코드는 39강에서 이번 챕터를 마무리하고 공개하도록 하겠습니다. 수고하셨습니다.

반응형

.link_tit