Back to blog
2025년 3월 07일 오후 04:13
4 min read

매일 계좌잔고 메세지로 보내기

한국투자증권 API 와 게만아님 헬퍼를 이용해서 하루에 세번 계좌잔고를 자동으로 메세지로 보내기
  • 게만아님 강의 자료중 헬퍼를 이용해서, 한국투자증권 API를 통해 계좌의 잔고를 월요일 부터 금요일 까지 메세지 보내기 만들기
  • 하루에 한번, 한국투자증권의 API를 통해 token 발급받기
  • 계좌잔고 조회해서 메세지 보내기
  • 자동으로 잘 동작하는지 일주일 정도 모니터링 하면서 그 사이 실제 매매 공부하기

#1. 한국투자증권 API 의 토큰 받아오기

  1. 한국투자증권에서 ISA중개형 계좌를 생성후, API 사용을 신청하고
  2. API KEY를 myStockInfo.yaml 에 저장
  3. 게만아님 강의자료 KIS_MakeToken.py 를 이용
  4. 로컬 폴더에 stock_token_real(virtual).json 파일로 저장 확인
  5. crontab 에 하루에 두번씩 실행되도록 설정하기

로컬에서 실행해보니 잘 저장이 된다.

#2. 계좌잔고 조회해서 메세지 보내기

x_get_my_account.ipynb

import KIS_Common as Common
import KIS_API_Helper_KR as KisKR

import pprint
import time

import jandi_alert

#REAL 실계좌 VIRTUAL 모의 계좌
Common.SetChangeMode("REAL")

#현재 장이 열렸는지 여부
if KisKR.IsMarketOpen() == True:
	print("Maket is Open!!")
else:
	print("Maket is Closed!!")

datetime.datetime(2025, 3, 6, 2, 53, 2, 329589, tzinfo=<DstTzInfo ‘Asia/Seoul’ KST+9:00:00 STD>)
Time is NO!!!
Maket is Closed!!

# print(Common.GetNowDist())
print(" ")
print("------------------------------------")
print(" ")

#내 잔고 확인
pprint.pprint(KisKR.GetBalance())

print(" ")
print("------------------------------------")
print(" ")

#내 보유 주식 리스트 확인
my_list = KisKR.GetMyStockList()

# print( len(my_list) )
pprint.pprint(my_list)

infos = []
for el in my_list:
	infos.append({
		"title": el.get("StockName", ""),
		"description": f"{el.get('StockNowPrice')}, {el.get('StockAmt')}, {el.get('StockRevenueMoney')}, {el.get('StockRevenueRate')}"
	})

jandi_alert.SendMessageInfo("계좌현황", infos, "#FF0000")

REAL


{‘RemainMoney’: 329944.0, ‘StockMoney’: 169750.0, ‘StockRevenue’: -300.0, ‘TotalMoney’: 499694.0}


---> CTX_AREA_FK100: 64206909^01^N^N^01^01^N^

[{‘StockAmt’: ‘5’, ‘StockAvgPrice’: ‘34010.0000’, ‘StockCode’: ‘069500’, ‘StockName’: ‘KODEX 200’, ‘StockNowMoney’: ‘169750’, ‘StockNowPrice’: ‘33950’, ‘StockOriMoney’: ‘170050’, ‘StockRevenueMoney’: ‘-300’, ‘StockRevenueRate’: ‘-0.17’}]

#3. crontab 에 등록해서 하루에 3번(9시, 12시, 4시)에 계좌잔고 메세지 보내기

x_get_token.sh (token 자동으로 가져오기 python 실행)

#!/bin/bash

export PYENV_ROOT="/home/ubuntu/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"

cd /home/ubuntu/apps/

python KIS_MakeToken.py

x_get_my_account.sh (계좌 조회해서 메세지 보내는 notebook 파일 실행)

#!/bin/bash

export PYENV_ROOT="/home/ubuntu/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"

cd /home/ubuntu/apps

papermill ./x_get_my_account.ipynb ./output/x_get_my_account_$(date +%Y%m%d_%H%M%S).ipynb

crontab 에 등록


3 8,20 * * * /home/ubuntu/apps/x_get_token.sh 
10 9,12,16 * * 1-5 /home/ubuntu/apps/x_get_my_account.sh 

메세지 보내기 성공!

보기가 조금 불편하긴 하지만, 나중에 수정합시다. ㅎㅎ 며칠동안이나 잘 동작할지 보자구.

#4. 생각해볼 문제!

강의에선 python 파일로 개발해서 실행 테스트 후, FTP 로 접속해서 개발한 파일을 업로드 하고, 쉘 접속을 해서 파일을 실행하는 과정을 거치는데 아무래도 오류가 잦은 초보가 처음에 따라하기에 과정이 번거로운 듯 해서, jupyter lab 을 서버에 설치 후, 서버에서 직접 개발하는 방법으로 잔고조회 테스트를 진행해 봄

좋은점

  • 개발 후, FTP 로 배포하는 과정이 필요없어 편하다
  • notebook 파일을 실행후 결과도 ipynb 파일로 저장할 수 있고, 실행결과를 웹기반으로 탐색기 사용하듯이 쉽게 조회가 가능하다
  • python 파일을 직접 실행하는 것 보다, notebook에서 단계 단계 실행해볼 수 있어 초보가 개발하기 편하다
  • 게만아님 강의와 헬퍼는 시작단계에서 너무 많은 도움이 된다

걱정되는점

  • 웹기반으로 동작하고, jupyter lab의 인증은 비밀번호 하나만 넣기 때문에 보안에 취약할 위험이 있다. -> 클라우드 방화벽으로 해당 포트에 대한 ip 접근 제한으로 운영해볼 예정 -> 계좌에 아직 돈이 별로 없어서, 일단 시작은 해보기로 함
  • python 파일을 실행하는 것보다 아무래도 resource 는 많이 사용할테니, 1-core, 1GB-ram 서버에서 오랜기간 안정적으로 동작할지 모니터링 필요

다음에 할 것

일단 헬퍼는 설치하고, API동작을 확인했으니, 거래를 해봐야 할텐데.
자산배분과 퀀트, 단타 대략 강의는 미리 들었고, 어디부터 시작할까 고민이네!!!

자산배분 > 퀀트 > 단타 순서로 강의가 진행되는 이유가 있을꺼고,
자산배분은 게만아님의 업그레이드 로직을 구매해서 실행해보는게 나을 듯 싶으니,

음. 다음 공부는 퀀트부터 해보기로 결정!