- 게만아님 강의 자료중 헬퍼를 이용해서, 한국투자증권 API를 통해 계좌의 잔고를 월요일 부터 금요일 까지 메세지 보내기 만들기
- 하루에 한번, 한국투자증권의 API를 통해 token 발급받기
- 계좌잔고 조회해서 메세지 보내기
- 자동으로 잘 동작하는지 일주일 정도 모니터링 하면서 그 사이 실제 매매 공부하기
#1. 한국투자증권 API 의 토큰 받아오기
- 한국투자증권에서 ISA중개형 계좌를 생성후, API 사용을 신청하고
- API KEY를 myStockInfo.yaml 에 저장
- 게만아님 강의자료 KIS_MakeToken.py 를 이용
- 로컬 폴더에 stock_token_real(virtual).json 파일로 저장 확인
- 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동작을 확인했으니, 거래를 해봐야 할텐데.
자산배분과 퀀트, 단타 대략 강의는 미리 들었고, 어디부터 시작할까 고민이네!!!
자산배분 > 퀀트 > 단타 순서로 강의가 진행되는 이유가 있을꺼고,
자산배분은 게만아님의 업그레이드 로직을 구매해서 실행해보는게 나을 듯 싶으니,
음. 다음 공부는 퀀트부터 해보기로 결정!