[주식자동매매] 분할 매수/매도 코딩하기(8), 선정 종목 DB 구축(저장, 로드, 삭제)
본문 바로가기

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

[주식자동매매] 분할 매수/매도 코딩하기(8), 선정 종목 DB 구축(저장, 로드, 삭제)

반응형

 하루 전 선정 종목을 작성 후 컴퓨터가 꺼지거나 기타 상황으로 프로그램이 종료될 수 있기 때문에 반드시 선정 종목을 DB화 하셔야 합니다. 그 방법에 대하여 간단히 말씀드리겠습니다.

 

목차

 1. DB 저장

 2. DB 삭제

 3. DB 로드

 4. 결론

 [링크 : 데이터 베이스 상세 설명(기초반)]

 [링크 : 기초반 54강 완강]

 

 

1. DB 저장

 아래는 DB 저장에 대한 GUI 구성입니다. Push Button이 클릭되었을 때 DB 저장을 할 것이며, ObjectName은 Sabve_Stock입니다.

반응형

PushButton 설정
PushButton 설정

 그러면 코딩을 해 보겠습니다. 이미 기초반에서 했던 내용이므로 해석 위주로 설명드리겠습니다.

pushbutton 클릭 시 저장 함수 실행
pushbutton 클릭 시 저장 함수 실행

 - Save_Stock이 클릭되면 Save_selected_code 함수가 실행되게 합니다. 이때 connect 함수를 사용하여 두 값을 연결시킵니다.

 

Save_selected_code 함수
Save_selected_code 함수

 (1) Save_selected_code 함수가 실행되면 글자를 바꿔주기 위해 setText함수를 사용하고 색을 바꾸기 위해 setStyleSheet 함수를 사용합니다.

 (2) 우리가 만든 buylast 표에 들어있는 행의 개수 값을 가져옵니다. 만약 10개가 있다면 10개 종목에 대한 모든 값을 저장하셔야겠죠? 따라서 for 문을 사용하여 0부터 9까지 차례대로 집어넣습니다.

 그리고 buylast표의 모든 열 값을 item 함수를 사용해 가져옵니다. 0행의 0열부터 15열 까지 가져오네요. 총 16개의 데이터가 각 행마다 저장되어 있기 때문입니다.

 (3) 자그러면 가져온 값을 텍스트에 저장합니다. 우선 open 함수를 사용해 Selected_code.txt를 만듭니다. 그리고 거기에 우리가 앞서 가져온 모든 값들을  tab으로 구분하여 정열 한 후 끝나면 /n을 이용해 엔터 친 것과 동일한 효과 다음칸을 비워 둡니다. 텍스트 저장 형식은 아래와 같습니다.

텍스트 저장 형식
텍스트 저장 형식

2. DB 삭제

 DB 삭제를 위한 GUI는 아래와 같습니다. PushButton을 이용하며, ObjectName은 Del_Stock 입니다.

PushButton 설정
PushButton 설정

 코딩을 아래와 같이 시작하겠습니다.

Del_Stock이 클릭
Del_Stock이 클릭

 - Del_Stock이 클릭되면 delet_code 함수가 실행되게 합니다. 이때 connect 함수를 사용하여 두 값을 연결시킵니다.

delet_code 함수
d elet_code 함수

 (1) delet_code 함수가 실행되면 글자를 바꿔주기 위해 setText함수를 사용하고 색을 바꾸기 위해 setStyleSheet 함수를 사용합니다.

 (2) 만약 현재 경로 중 dist 폴더 안에 앞서 저장한 Selected_code.txt가 있다면 os.remove 함수를 사용하여 Selected_code.txt를 삭제합니다.

 

3. DB 로드

 DB 로드를 위한 GUI는 아래와 같습니다. PushButton을 이용하며, ObjectName은 Load_Stock 입니다.

PushButton 설정
PushButton 설정

 코딩을 아래와 같이 시작하겠습니다.

Load_code 함수가 실행
Load_code 함수가 실행

 - Load_Stock이 클릭되면 Load_code 함수가 실행되게 합니다. 이때 connect 함수를 사용하여 두 값을 연결시킵니다.

 

 아래부터는 설명이 길어집니다.

txt파일 불러와 self.Getanal_code에 저장
txt파일 불러와 self.Getanal_code에 저장

 (1) Load_code 함수가 실행되면 글자를 바꿔주기 위해 setText함수를 사용하고 색을 바꾸기 위해 setStyleSheet 함수를 사용합니다.

 (2) 만약 현재 경로 중 dist 폴더 안에 앞서 저장한 Selected_code.txt가 있다면 open 함수를 사용하여 f에 모든 값을 집어넣고 readlines()함수를 이용해 모든 값을 lines에 집어넣습니다.

 (3) lines에 5 종목이 있다면 1 종목씩에 대한 모든 16개의 값들이 line에 들어갑니다. 그리고 line에 들어있는 모든 값들을 \t로 구분하여 리스트로 만듭니다. ls의[0]~ls[15]에대한 모든 값을 가져와 self.Getanal_code에 저장시키고 txt 파일을 닫습니다. 지금부터 우리가 원하는 모든 값들은 self.Getanal_code에 저장되어 있습니다.

 

다음으로 우리는 self.Getanal_code에 들어있는 모든 값들을 buylast 표에 입력하셔야 시각적으로 확인할 수 있겠죠?

GUI에 TXT 값 넣기
GUI에 TXT 값 넣기

 (1) 우선 앞서 저장 시 사용했던 column_head를 그대로 불러옵니다. 그리 고행과 열의 개수를 정해 줍니다. 행의 경우 self.Getanal_code의 길이를 보면 되겠죠?

 (2) buylast의 행/열/목차를 각 함수를 이용해 설정합니다. 함수에 대한 자세한 내용은 기초반을 찾아보세요. 아주 자세히 설명되어 있습니다. 링크는 위에 있어요.

 (3) 마지막으로 관련 값들을 buylast에 setIttem 함수를 이용해 집어넣습니다. 우선 0행 0열~15열, 1행 0열~15열 이런식으로 행의 개수 만큼 buylast에 집어 넣습니다.

 

 그리고 GUI에 입력한 값을 우측 정렬하고 싶으시면 setTextAlignment 함수를 사용하십시오. 자세한 사용방법은 역시 기초반 링크에 있습니다.

우측 정열
우측 정열

4. 결론

 기초반에 설명이 다 되어 있지만 리마인드 개념으로 한번 더 설명드렸습니다. 항상 반복 학습이 중요하죠. 다음 강의에서는 분할 매수/매도에 대한 실시간 자동매매를 코딩해 보겠습니다. 감사합니다.

반응형

.link_tit