python
-
[스케쥴링] 특정 시간에 실행하기 - 휴장일 커버Python/텔레그램봇:채권모니터링 2020. 12. 21. 19:21
파이썬에서 datetime.datetime object끼리는 크기 비교가 된다는 점을 이용해, 특정 시간을 기준으로 대기/실행 작업을 수행한다. 대기할 경우, datetime.datetime 객체와 datetime.timedelta를 더해 다음 기준 시간을 계산한다. time.sleep(datetime.timedelta(days=1, seconds=10).total_seconds())로 적당한 휴지시간을 둘 수 있다. + 휴장일을 커버할 수 있도록 구성했다 [python] 모듈 정리하기 까지해서 한 번 보내는 사이클은 완료되었다. 이제 해당 작업을 장이 열리는 시간에 반복하면 된다. 목표 하루에 확인은 4번만 하기로 하고, 주간에만 실행되니까, 월요일부터 금요일까지 10시 20분, 12시 20분, 2시 ..
-
[datetime] 시간포맷: datetime.strftime("%Y-%m-%d")Python 2020. 12. 18. 21:43
strftime으로 현재 시간 등을 출력할 때, 자주 안 쓰는 포맷코드는 기억하기가 쉽지 않다. 제목인 datetime.strftime("%Y-%m-%d")는 "2020-12-18"처럼 4자리 연도-2자리 월-2자리 일 형태다. 혹시 또 필요할 수 있으니, 자주 쓸 법한 것들은 정리해두고자 한다. 공식문서에서 strftime() and strptime() Format Codes(strftime()과 strptime() 포맷 코드) 로 검색하면 전체 테이블을 확인할 수 있다. Directive Meaning Example %a 짧은 요일이름 Sun, Mon, …, Sat.. %A 전체 요일이름 Sunday, Monday, …, Saturday %w 숫자로 표현한 요일, 0이 일요일, 6이 토요일임 0, 1..
-
[python] 모듈 정리하기Python/텔레그램봇:채권모니터링 2020. 12. 18. 19:48
전체 코드가 길진 않지만, 작업 단위별로 파일을 따로 두는 게 확인하기 수월할 것 같아 코드를 분리하기로 했다. 폴더에서 스크립트 임포트를 임포트하면서 약간 헤맸어서 여기에 정리해두었다: hayjo.tistory.com/63 [import] 폴더 안의 스크립트 임포트하기 일반적으로 폴더에 코드를 정리해놓고 불러다 쓰려면 from folder import script를 하면 된다. 폴더가 여러 개 있거나, 여러 파일에서 코드를 임포트하려면 디렉토리 사이를 .으로 연결하면 된다. 폴더 hayjo.tistory.com 전체 작업은 이렇게 나뉜다. 데이터 받아오기1: requests로 한국거래소 사이트에서 OTP 발급받은 후 필요한 데이터 csv형태로 받아오기 데이터 받아오기2: requests로 한국은행 경제..
-
[TelegramBot] 봇 생성과 메시지전송Python/텔레그램봇:채권모니터링 2020. 12. 18. 19:08
python-telegram-bot 패키지의 telegram.Bot.sendMessage(chat_id, text)로 데이터를 전송한다. 생성 및 작동 확인 기존 텔레그램 계정에서 @botfather를 친구 추가하고 /newbot을 입력하면, 이름을 뭘로 할 거냐고 물어본다. Bot이나 _bot처럼 이름 끝을 bot으로 해서 대답하면 축하한다면서 봇 토큰을 준다. 봇 토큰은 나중에 @botfather에서 /mybots -> 해당 봇 선택 -> API Token에서 확인할 수 있다. 혹시라도 노출되었다면 Revoke current token으로 갱신하면 된다. 기존 계정에서 방금 만든 봇을 친구 추가하고, 시작을 누르면 /start 메시지가 전송된다. 아래 url로 들어가면 방금 메시지를 보낸 유저 정보가..
-
[import] 폴더 안의 스크립트 임포트하기Python 2020. 12. 16. 21:43
일반적으로 폴더에 코드를 정리해놓고 불러다 쓰려면 from folder import script를 하면 된다. 폴더가 여러 개 있거나, 여러 파일에서 코드를 임포트하려면 디렉토리 사이를 .으로 연결하면 된다. 폴더 구조가 아래와 같이 되어있을 때, main.py에서 f~의 파일들을 임포트하는 경우: 더보기 위의 폴더구조 생성할 때 사용한 코드 import os path = os.getcwd() for i in range(1,4): p1 = path + '/' + 'f' + str(i) os.mkdir(p1) for j in range(1,4): p2 = p1 + '/' + 'f' + str(j) os.mkdir(p2) for k in range(1,4): p3 = p2 + '/' + 'm' + str(k..
-
[Pandas] 데이터 정리 (2) 필터링(query) 및 정렬Python/텔레그램봇:채권모니터링 2020. 12. 15. 12:03
현재 데이터를 pandas dataframe에 넣고, NULL값 정리까지 끝난 상태. 이제 목적에 맞게 데이터를 필터링할 차례다. 목적: 투자등급 A-이상이면서 잔존기간이 3년 미만인, 매력적인 가격대의 채권 찾아내기. 매력적인 가격대는 1) 평균 금리에 비해 저렴하게 매도 매물이 있는 종목 2) 혹은 거래량이 있는 종목 중에 적당한 매수가격대가 없는 종목 으로 정했다. 일단 투자등급을 걸러야 하니 'BBB', 'BB', 'B'와 'BBB+', 'BB+', 'B+', 'BBB-', 'BB-', 'B-'를 버리고, 잔존기간이 1095일 이상인 종목을 버리고, 수익률이 평균 금리 미만인 종목을 버리고, 나의 채권 기대수익률은 2% 이상이기 때문에 매수수익률이 2% 미만으로 걸려있는 종목도 버린다. 다만 0...
-
[Pandas] 데이터 정리 (1) read_csv(na_values) & applyPython/텔레그램봇:채권모니터링 2020. 12. 15. 11:37
데이터를 csv 형태로 확보했으니, 이제 입맛대로 정렬해서 원하는 데이터만 골라낼 차례다. python의 pandas 라이브러리를 사용할 예정이고, 우선 데이터를 불러와서 NULL값을 처리하고 날짜 포맷을 변경한다. 일단 설치를 하고 # python -m pip install --upgrade pip # pip install pandas 데이터는 이렇게 생겼다. 가격, 수익률, 거래량, 거래대금은 '-'로 표시된 NULL 데이터가 있다. 종목명,가격,수익률,거래량,거래대금,매도최우선호가 가격,매도최우선호가 수익률,매수최우선호가 가격,매수최우선호가 수익률,신용등급,잔존기간,표준코드 HMM199CB,"10,856.0","0.000","42,122,597","44,815,973,553","10,840.0","..
-
[ECOS API] 한국은행 경제통계 API 이용 (2) jsonPython/텔레그램봇:채권모니터링 2020. 12. 14. 14:34
원래는 API 기본 값인 xml로 데이터를 처리하다가, 뒤늦게 json타입도 지원되는 걸 발견하고 환승하면서 코드를 class로 정리해서 모아두기로 했다. 주요 목적은 인증키와 STAT_CODE와 ITEM_CODE1, count 정보를 담은 객체를 만들어두고, 필요할 때마다 최근 데이터를 불러오는 함수 작성하기. 아래와 같은 모양이다. setting = { 'key': 'asdf' 'dataType': 'json', 'language': 'kr', } # 이쪽에 기본 정보를 정리해두고 corpBondAAm = Ecos(setting, STAT_CODE='060Y001', ITEM_CODE1='010300000', count=19) print(corpBondAAm.getLatest()) # {'202012..