주식 자동 매매 프로그램을 위한 프로젝트 폴더를 [needleeye]로 생성했다고 지난 포스트에서 말씀드렸습니다.
그리고 그 프로젝트만을 위한 개발 환경을 구축하기 위해 가상환경 세팅하는 방법도 함께 소개했습니다.
이번 포스트에서는 프로젝트 폴더 내에 어떤 하위 폴더, 파이썬 파일이 오게 될지 설명하려 합니다. 폴더링 혹은 파일 관리 스타일은 개개인마다 다를 수 있기 때문에 제가 소개하는 방법이 정답은 아닙니다.
제가 이런 스타일로 폴더/파일 관리를 하게 된 목적을 설명드리는 것이니 해당 목적에 부합하는 더 나은 방법이 있다면 얼마든지 조언해 주세요. 저도 배워야 할 게 너무 많습니다.
파이썬 프로젝트 폴더/파일 관리
▼ 주식 자동 매매 프로그래밍을 위한 제 프로젝트 폴더 [needleeye]는 아래와 같이 구현돼 있습니다. 조코딩님이 공유해 주신 코드 폴더의 구조와 많이 다르지요? 지금부터 하나하나 설명드리겠습니다.
폴더링
▲ [venv] 폴더는 프로젝트 폴더에 가상환경을 세팅한 후 생성된 폴더입니다. 주식 자동 매매 프로그램과 직접적인 관련이 있는 폴더는 아닙니다.
주식 자동 매매 프로그램과 직접 관련이 있는 코드나 데이터는 [app] 폴더에 들어갑니다.
[app] 폴더 하위에 있는 [data] 폴더는 주식 자동 매매 프로그램이 작동되는 데 필요한 데이터 등이 저장되는 폴더입니다. 주식 자동 매매 코드를 실행하면 자동 매매를 위해 종목을 선별하고 목표 가격을 결정하는 과정에서 특정 종목의 가격 시계열 데이터가 파일(.csv)로 저장됩니다. 이런 파일들이 한곳에 저장돼 파일 브라우저가 깔끔하게 보이도록 [data] 폴더를 만든 것입니다.
▼ [data] 폴더를 펼치면 이렇게 종목별 시계열 데이터가 좌르르
모의투자용 코드 파일
파일명 앞에 "virtual_"이라는 접두어(prefix)가 붙은 파일들은 '모의투자'를 위한 코드입니다.
주식 자동 매매 프로그램 코딩이 끝났다고 그걸 곧바로 실전투자에 사용하기에는 위험합니다. 무엇보다 종목 선별. 매수/매도 전략 로직이 유효한지 테스트를 해야 하지요. 실전투자용 코드를 아무런 변경도 하지 않고 모의투자용으로 사용할 수는 없기 때문에, 저렇게 미러링해서 "virtual_" 파일들을 별도로 만든 것입니다. 실전투자용 코드와 다른 부분이 제법 있어요.
모의투자용 코드로 테스트한 후, 아무런 이상이 없으면 실전투자용 코드에 반영합니다.
파일 설명
- [config.yaml] : 한국투자증권 API를 사용하기 위해 필요한 API Key나 계좌번호 등을 저장해둔 .yaml 파일입니다.
- [ksi_kr_resolver.py] : 한국투자증권 API를 활용해 구현한 파이썬 함수들을 작성한 파이썬 파일입니다. 한국투자증권 API에 종속된 내용이기 때문에 "ksi_"라는 접두어를 붙였습니다.
- [resolver.py] : 자동 매매 프로그램의 기능 구현에는 필요하지만 한국투자증권 API와 무관한 함수들을 정의해둔 파이썬 파일입니다. 예를 들어 관련 알림을 발송하는 함수는 한국투자증권 API를 활용한 게 아니기 때문에 이 파일에 작성돼 있습니다.
- [kr_trading.py] : 조건에 따라 종목을 선별하고, 전략(로직)에 따라 매수/매도를 실행하는 주식 자동 '매매(trading)'를 가능하게 하는 코드입니다. ksi_kr_resolver.py와 resolver.py에서 정의한 함수들이 코드 곳곳에서 호출됩니다.
- [test.py] : 새로 함수를 정의하거나 기존 함수를 수정할 때 그 부분만 뚝 떼서 테스트하기 위해 만든 임시 파일입니다.
/
제 폴더/파일을 관리의 핵심은 '모듈화'입니다. 사용하는 API에 따라 파일을 구분(모듈화), 특정 기능을 수행하는 함수를 각각 별도 정의(모듈화), 이렇게 정의한 함수들을 필요에 따라 호출.
그러면 코드 실행 중에 문제가 발생할 때, 문제가 발생한 위치(모듈)를 정확하게 알 수 있고 그만큼 문제 해결도 수월하죠. 한국투자증권이 아닌 다른 증권사의 API를 사용하게 되었을 때 대응도 효율적으로 할 수 있고요.
다음 포스트에서는 본격적으로 자동 매매 프로그램을 개발하기 위해, 한국투자증권 오픈API를 신청하는 방법과 매매 관련 알림을 내 폰으로 전송하는 방법을 알아보겠습니다.
'주식 자동 매매 프로젝트' 카테고리의 다른 글
[주식 자동 매매] 프로그램 개발 5: 기능 미리보기 (5) | 2024.11.15 |
---|---|
[주식 자동 매매] 프로그램 개발 4: 프로젝트 폴더/파일 관리 (1) | 2024.11.13 |
[주식 자동 매매] 프로그램 개발 2: 파이썬 가상 환경 세팅(feat. VS Code) (0) | 2024.11.11 |
[주식 자동 매매] 프로그램 개발 1: 맥북 VS Code & Homebrew로 파이썬 설치 (0) | 2024.11.10 |
[주식 자동 매매 프로그램] 개발 프로젝트 시작(feat. 조코딩 한국투자증권API 활용 코드) (2) | 2024.11.09 |