Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SMS 아이콘

SMS(Stock Management System)

Google Gemini를 이용해 만든 주식 관리 프로그램입니다.

1. 프로그램 개요

이 프로그램은 Python의 tkinter와 여러 라이브러리를 활용하여 개발된 데스크톱 애플리케이션입니다. 사용자가 설정한 주식 종목의 가격을 주기적으로 조회하고, 특정 조건에 부합할 경우 알림을 보내는 기능을 제공합니다. 수집된 주가 데이터는 CSV 파일로 저장되며, 시각화 탭에서 가격 추이를 한눈에 확인할 수 있습니다.

2. 주요 기능

  • 실시간 주가 조회: 네이버 금융에서 지정된 주식 코드의 현재 가격과 회사명을 가져옵니다.
  • 데이터 수집 및 관리: 일별 주가를 자동으로 수집하여 로컬 CSV 파일에 저장합니다.
  • GUI 기반 설정: 주식 코드, 알림 시간, 분석 기간, 데이터 파일 경로 등을 GUI를 통해 손쉽게 설정할 수 있습니다.
  • 자동 실행 기능: 컴퓨터 시작 시 프로그램이 자동으로 실행되도록 설정할 수 있습니다. (Windows, macOS 지원)
  • 맞춤형 알림: 사용자가 설정한 기간 내 최고가 또는 최저가 대비 특정 비율로 가격이 변동할 경우, 데스크톱 알림을 보냅니다.
  • 주가 시각화: Matplotlib를 사용하여 주가 추이를 그래프로 표시하며, 특정 기간별로 데이터를 필터링하여 볼 수 있습니다.

3. 설치 및 실행 방법

dist 폴더의 SMS.exe 파일을 실행하면됩니다.
.py 파일을 받아 직접 실행 파일을 생성하고 싶으면 아래 방법을 따라해 보세요.

3.1. 프로그램 요구사항

프로그램을 실행하려면 다음 Python 라이브러리들을 설치해야 합니다. 터미널 또는 명령 프롬프트에서 아래 명령어를 실행하세요.

Bash

pip install requests beautifulsoup4 plyer matplotlib schedule pyinstaller
  • Windows: winreg 라이브러리는 내장되어 있어 별도 설치가 필요하지 않습니다.
  • macOS: getpass와 plistlib 라이브러리는 내장되어 있어 별도 설치가 필요하지 않습니다.

3.2. 프로그램 실행

스크립트를 다운로드한 후, 터미널에서 다음 명령어를 입력하여 실행합니다.

Bash

python -w -F -i SMS.ico SMS.py

PyInstaller 명령어 옵션 설명

  • python: PyInstaller를 실행하는 데 사용되는 파이썬 인터프리터입니다.
  • -w (--windowed): 콘솔 창 없이 GUI 애플리케이션을 실행합니다.
    이 옵션이 없으면 프로그램이 실행될 때 검은색 콘솔 창이 함께 나타납니다.
  • -F (--onefile): 모든 코드를 하나의 실행 파일(.exe 또는 .app)로 묶어 만듭니다.
    이 옵션이 없으면 여러 개의 파일과 폴더로 구성된 디렉터리가 생성됩니다.
  • -i SMS.ico (--icon=SMS.ico): 생성될 실행 파일에 SMS.ico 파일을 아이콘으로 지정합니다.
    이 아이콘은 윈도우 탐색기나 작업 표시줄에 표시됩니다.
  • SMS.py: 실행 파일로 만들고자 하는 원본 파이썬 스크립트 파일의 이름입니다.

4. GUI 사용 가이드

4.1. 설정 탭

  • 주식 코드: 분석을 원하는 주식 종목의 6자리 코드를 입력합니다.
    (예: 삼성전자 005930)
  • 알림 시간: 주가 알림을 받을 시간을 HH24:MM 형식으로 입력합니다.
    여러 시간을 설정하려면 쉼표(,)로 구분합니다.
    (예: 09:00,12:00,15:00)
  • 분석 기간: 주가 최고/최저가를 분석할 기간(일)을 쉼표(,)로 구분하여 입력합니다.
    (예: 20,120,250)
  • CSV 파일 경로: 주가 데이터가 저장될 CSV 파일의 경로를 지정합니다.
    ... 버튼을 눌러 경로를 쉽게 선택할 수 있습니다.
  • 컴퓨터 시작 시 자동 실행: 체크박스를 선택하면 컴퓨터를 켰을 때 프로그램이 자동으로 실행됩니다.
  • 알림 조건: + 조건 추가 버튼을 눌러 원하는 기간과 가격 변동률에 대한 알림 조건을 설정할 수 있습니다.
  • 설정을 변경한 후 하단의 설정 버튼을 눌러 변경사항을 적용해야 합니다.

4.2. 시각화 탭

  • 주가 추이 그래프: 설정된 기간에 따른 주가 변화를 선 그래프로 보여줍니다.
  • 기간별 버튼: 최근 N일 데이터 버튼을 클릭하여 원하는 기간의 주가 그래프를 빠르게 확인할 수 있습니다.
  • 오늘의 주가 분석: 현재 주가와 함께 설정된 분석 기간별 최고가, 최저가, 그리고 현재가와 최고/최저가 간의 비율을 실시간으로 보여줍니다.

5. 프로그램 구조 (기술 문서)

5.1. 클래스

  • StockApp(tk.Tk): 프로그램의 전체 GUI를 관리하는 메인 클래스입니다.
    Tkinter의 Tk 클래스를 상속받아 창 생성, 위젯 배치, 이벤트 처리 등의 역할을 수행합니다.

5.2. 주요 함수

  • get_stock_price(stock_code): 네이버 금융에서 현재가를 크롤링합니다.
  • get_historical_data_from_naver(stock_code, pages): 네이버 금융에서 과거 일별 주가 데이터를 스크랩합니다.
  • save_data(file_path, data): 리스트 형태의 데이터를 CSV 파일로 저장합니다.
  • get_historical_prices_from_csv(file_path): CSV 파일에서 주가 데이터를 불러와 딕셔너리 리스트로 반환합니다.
  • send_notification(title, message): plyer 라이브러리를 사용해 데스크톱 알림을 전송합니다.
  • check_startup_status(): 현재 OS의 시작 프로그램 등록 여부를 확인합니다.
  • add_to_startup_windows() / remove_from_startup_windows(): 윈도우 레지스트리를 수정하여 자동 실행을 설정/해제합니다.
  • add_to_startup_macos() / remove_from_startup_macos(): macOS의 LaunchAgents 디렉토리에 .plist 파일을 생성/삭제하여 자동 실행을 설정/해제합니다.
  • schedule_updates(): schedule 라이브러리를 이용해 사용자가 설정한 시간에 주가 업데이트를 예약합니다.
  • perform_update_and_notify(): 스케줄에 따라 실행되며, 주가 데이터 업데이트 및 알림 조건 확인을 수행합니다.
  • update_plot_with_period(period): Matplotlib를 이용해 주가 그래프를 생성하고 GUI에 표시합니다.




6. Google Gemini QnA 내용 정리

아래 리스트 내용을 클릭하시면 해당 문서로 이동합니다.




7. 버전 정보

  • v1.0.0: 첫 배포
  • v1.0.1: 버그 수정 및 버전 관리 시작
    • '컴퓨터 시작 시 자동 실행' 체크 박스를 체크 해제 하고 설정 버튼을 눌러도 설정 변경이 되지 않는 버그 수정
    • 버전 관리 시작
      • 파일명 변경
      • 파이썬 파일에 버전 관리 코드 추가
      • GUI에 버전 표시

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages