주식자동매매 37강. 선정 종목 데이터베이스화 하기(1), GUI 및 txet 저장하기
본문 바로가기

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

주식자동매매 37강. 선정 종목 데이터베이스화 하기(1), GUI 및 txet 저장하기

반응형

이번 강의에서는 36강에서 선정된 종목을 저장/삭제/불러오기를 해보겠습니다. 즉, 오늘 선정한 종목을 내일 사고/팔고 해야 할 것인데 내일 편의성을 위해 미리 저장해 놓는 것이죠. 자동매매를 위해서 다음날 불러오기만 하면 되겠죠?

 

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

 

1. GUI 구성하기

  Push Button 3개를 이용해 아래와 같이 구성합니다.

GUI 구성하기
GUI 구성하기

 - 불러 오기 object Name : Load_Stock

 - 종목 저장 object Name : Save_Stock

 - 종목 삭제 object Name : Del_Stock

 

 그러면 이번 강의에서는 종목 저장부터 알아보도록 하겠습니다.

 

2. 종목 저장 코딩하기

 Main 스크립트에서 파이썬 함수를 사용하기 위해 import 하는 것을 배우셨죠? 이번에는 import os를 합니다. 저희가 특정 데이터를 저장하거나 불러올 때, 정해진 디렉터리에(방에) 원하는 데이터가 있는지 확인해야 되겠죠? 그 기능을 하는 것이 os입니다.

import os
import os

 그리고 36강에서 코딩한 아래 부분에 부가기능 2를 만듭니다. 아래 부가기능을 지금 다 구성하셔도 되나, 저도 그렇고 여러분들의 집중력을 보존하고자 오늘은 종목 저장 push button을 누르면 종목 저장을 할 수 있는 함수 self.Save_slected_code를 실행하는 것만 알아 보도록 하겠습니다.

self.Save_slected_code 실행하기
self.Save_slected_code 실행하기

 self.Save_slected_code 함수는 아래와 같이 코딩되어 있습니다. 우선 원하는 구간에 이 함수를 구성하시면 되고 코드를 하나씩 알아보도록 하겠습니다.

self.Save_slected_code
self.Save_slected_code

 

 - for row in range(self.buylast.rowCount()) : 36강에서 선택된 종목 수 만큼 범위를 range로 계산합니다. 예로 5개의 종목이 있다면 range는 [0, 1, 2, 3, 4]로 구성될 것입니다. 그리고 하나씩 row에 들어가게 됩니다.

 - buylast GUI에 저장된 종목들의 코드, 이름, 가격, 신용비율을 읽어 들어오기 위해 아래와 같이 코드를 구성합니다.

 - code_n = self.buylast.item(row, 0).text() : buylast에 저장된 item 중 (0행, 0열)에 저장된 갑을. text()로 code_n에 저장합니다. 이때, row의 값을 종목 수와 동일하죠?  0번째 종목의 0열(코드번호), 0번째 종목의 1열(이름), 0번째 종목의 2열(현재가), 0번째 종목의 3열(신용비율)을 하나씩 가져옵니다. 만약 4번재 종목일 경우에도 0열부터 3열까지 값을 가져옵니다.

 - f = open("dist/Selected_code.txt", "a", encodeing = "utf8) : 우선 여러분들이 보시는 텍스 파일을 하나 만듭니다. dist 폴더 안에 Selected_code.txt라고 만들고 여기에 입력되는 값은 엎어 쓰지 않고 연달아 씁니다. 그리고 글자 형식은 utf8인데 구글에 가시면 상세한 설명이 있습니다. 확인해 보십시오.

 - 아래 그림을 보시면 Selected_code.txt가 만들어진 것을 확인할 수 있습니다. 그러면 이 텍스트 안에 위에서 정의한 값들을 저장해야 겠죠?

Selected_code
Selected_code

 - 텍스트에 저장을 하기 위해서는 write라는 함수를 사용합니다.

 - f.write("%s\t%s\t%s\t%s\t\n" % (code_n, name, price, dept)) :  % 는 서식 문자를 나타내고 s는 문자가 온다는 뜻합니다. 그리고 \는 tap을 뜻하며 한 칸을 tap만큼 띄운다는 뜻입니다. 그리고 \n은 한칸 밑으로 내려 다음 값과 구분한다는 뜻입니다. 어렵죠?? 이거는 많이 연습해보셔야 이해하기 쉬울 것입니다. 아래 그림을 보시죠.

  처음 %s에는 code_n이 저장되고, tab을 이용해 한칸을 띄웠죠? 그리고 두 번째 %s에는 name이 저장되고... 이런 식으로 된다는 의미입니다.

텍스트 저장하기 예제
텍스트 저장하기 예제

  - f.close : 열었던 텍스트 창을 닫아야 오류가 나지 않아요.

반응형

 강의가 약간 지루하거나 어려울 수 있습니다. 따라서, 유튜브 강의도 같이 진행하고 있으니 꼭 같이 보시면서 따라오시면 여러분들 누구나 자동매매를 구현할 수 있습니다. 코드는 이번 챕터 마무리될 때 다 같이 정리하여 공개하겠습니다.

 감사합니다.

반응형

.link_tit