키움증권
-
하나의 종목별로 일봉, 3분봉, 15분봉 데이터에 대해 데이터를 조회하고 `pandas` 라이브러리의 `to_sql` 메서드를 통해 데이터를 저장한다고 가정했을 때, 조회 단위별로 설정해주어야 하는 `time.sleep()` 값은 어떤 값이 적절한지 직접 비교해보았다.비교 대상은 차트 데이터 조회 중에 걸어둔 `time.sleep()` 내에 들어가는 시간과 해당 차트 데이터를 조회하는 데에 소요되는 시간으로, 차트 데이터를 조회하면서 '과다 조회 오류'가 발생하기 전까지 조회할 수 있었던 종목의 개수와 소요된 시간 및 종목당 소요된 시간을 비교하는 것이다. [실험 조건] 1. 일봉, 3분봉, 15분봉을 기준으로 상장기준일 이후의 모든 차트 데이터를 조회한다. 2. 일봉 데이터는 일반적인 ..
키움증권 Open API 시간 간격 설정하기하나의 종목별로 일봉, 3분봉, 15분봉 데이터에 대해 데이터를 조회하고 `pandas` 라이브러리의 `to_sql` 메서드를 통해 데이터를 저장한다고 가정했을 때, 조회 단위별로 설정해주어야 하는 `time.sleep()` 값은 어떤 값이 적절한지 직접 비교해보았다.비교 대상은 차트 데이터 조회 중에 걸어둔 `time.sleep()` 내에 들어가는 시간과 해당 차트 데이터를 조회하는 데에 소요되는 시간으로, 차트 데이터를 조회하면서 '과다 조회 오류'가 발생하기 전까지 조회할 수 있었던 종목의 개수와 소요된 시간 및 종목당 소요된 시간을 비교하는 것이다. [실험 조건] 1. 일봉, 3분봉, 15분봉을 기준으로 상장기준일 이후의 모든 차트 데이터를 조회한다. 2. 일봉 데이터는 일반적인 ..
2024.10.06 -
키움증권에서 제공하는 개발 가이드 내 실시간 데이터 FID 리스트를 살펴보면 여러 가지 FID들이 제공되고 있지만, 8.19 주문 체결과 8.20 잔고는 OnReceiveRealData 이벤트가 아닌 OnReceiveChejanData 내에서 처리해야한다. OnRecieveChejanData 이벤트 처리하기이 부분은 여타 이벤트 처리 방법과 크게 다르지 않다. 키움증권 내에서 발생하는 이벤트는 아래의 7가지로, 그 외에 발생하는 이벤트는 존재하지 않는다. 따라서 아래 7개의 이벤트만 실행할 함수와 연결해주면 된다.self.kiwoom.OnReceiveTrData.connect(self.receive_trdata) self.kiwoom.OnReceiveRealData.connect(self...
키움증권 Open API - 체결 데이터 및 잔고 관리하기 (1)키움증권에서 제공하는 개발 가이드 내 실시간 데이터 FID 리스트를 살펴보면 여러 가지 FID들이 제공되고 있지만, 8.19 주문 체결과 8.20 잔고는 OnReceiveRealData 이벤트가 아닌 OnReceiveChejanData 내에서 처리해야한다. OnRecieveChejanData 이벤트 처리하기이 부분은 여타 이벤트 처리 방법과 크게 다르지 않다. 키움증권 내에서 발생하는 이벤트는 아래의 7가지로, 그 외에 발생하는 이벤트는 존재하지 않는다. 따라서 아래 7개의 이벤트만 실행할 함수와 연결해주면 된다.self.kiwoom.OnReceiveTrData.connect(self.receive_trdata) self.kiwoom.OnReceiveRealData.connect(self...
2022.05.24 -
지난 게시글에서 언급했듯, 이번 글에서는 개별적 문제점들에 대한 해결 방법을 살펴볼 예정이다. 다만 문제점 ①이 아닌 문제점 ②를 먼저 다룰 예정인데, 이렇게 해야 수순이 맞다. 왜냐하면 관심종목이라는 역할을 수행할 수 있는 데이터베이스를 생성하기 위해서는 일단 대입할 종목코드 리스트가 필요한데, 그 종목코드 리스트는 조건검색식[0151]을 통해야 보다 수월하게 데이터를 조회할 수 있기 때문이다. 키움증권 상에서 조건검색식을 만드는 방법에 대해서는 여타 다른 게시글에서 충분히 설명하고 있으니 검색해서 보시길 바란다. 본격적인 설명에 앞서 영웅문 내에서 설정한 조건검색식의 조건을 바탕으로 선정된 종목을 살펴보도록 하겠다. A : [골든 크로스] 10일 이동평균선이 20일 이동평균선을 D : [골든 크로스]..
키움증권 Open API - 관심종목 관리하기 (2)지난 게시글에서 언급했듯, 이번 글에서는 개별적 문제점들에 대한 해결 방법을 살펴볼 예정이다. 다만 문제점 ①이 아닌 문제점 ②를 먼저 다룰 예정인데, 이렇게 해야 수순이 맞다. 왜냐하면 관심종목이라는 역할을 수행할 수 있는 데이터베이스를 생성하기 위해서는 일단 대입할 종목코드 리스트가 필요한데, 그 종목코드 리스트는 조건검색식[0151]을 통해야 보다 수월하게 데이터를 조회할 수 있기 때문이다. 키움증권 상에서 조건검색식을 만드는 방법에 대해서는 여타 다른 게시글에서 충분히 설명하고 있으니 검색해서 보시길 바란다. 본격적인 설명에 앞서 영웅문 내에서 설정한 조건검색식의 조건을 바탕으로 선정된 종목을 살펴보도록 하겠다. A : [골든 크로스] 10일 이동평균선이 20일 이동평균선을 D : [골든 크로스]..
2022.03.12 -
결론부터 이야기하자면 현재 키움증권 Open API 내에서는 관심종목을 관리할 수 있는 함수를 제공하지 않고 있다. 물론 KOA Studio에서 관심종목을 검색해보면 [OPTKWFID : 관심종목정보요청] 이라는 TR 목록이 존재하지만 이는 우리가 흔히 알고 있는 그 관심종목이 아니다. 코드를 통해 조회할 수 있는 [관심종목정보요청] 은 단순하게 해당 종목에 대한 정보를 요청하고 데이터를 받아오는 것 그 이상도 이하도 아닌 기능이다. 그렇다면 우리가 필요한 관심종목이라는 기능을 어떻게 구현할 수 있을까? 데이터베이스 활용하기 제목에서 알 수 있듯이, 데이터베이스를 활용하는 방법밖엔 없다. 이 과정에서 중요한 건 계좌 잔고에 대한 데이터도 함께 구축해주어야 한다는 것이다. 단순하게 주가 차트를 조회할 수 ..
키움증권 Open API - 관심종목 관리하기 (1)결론부터 이야기하자면 현재 키움증권 Open API 내에서는 관심종목을 관리할 수 있는 함수를 제공하지 않고 있다. 물론 KOA Studio에서 관심종목을 검색해보면 [OPTKWFID : 관심종목정보요청] 이라는 TR 목록이 존재하지만 이는 우리가 흔히 알고 있는 그 관심종목이 아니다. 코드를 통해 조회할 수 있는 [관심종목정보요청] 은 단순하게 해당 종목에 대한 정보를 요청하고 데이터를 받아오는 것 그 이상도 이하도 아닌 기능이다. 그렇다면 우리가 필요한 관심종목이라는 기능을 어떻게 구현할 수 있을까? 데이터베이스 활용하기 제목에서 알 수 있듯이, 데이터베이스를 활용하는 방법밖엔 없다. 이 과정에서 중요한 건 계좌 잔고에 대한 데이터도 함께 구축해주어야 한다는 것이다. 단순하게 주가 차트를 조회할 수 ..
2022.03.12 -
※ 키움증권 설명서에서 이야기하는 trcode란 Transaction Code의 약칭입니다. ※ 각 Transaction Code(또는 Tr 이름) 클릭 시 사용 방법 링크로 연결됩니다. ※ [call real]은 실시간 데이터를 발생시킴을 의미합니다. ※ 선물옵션 및 지수 관련 데이터는 추후 업데이트 예정입니다. ※ 모든 Transaction Code를 사용하기 위해서는 반드시 이벤트 처리를 해주어야 합니다. ※ 모든 데이터는 멀티 데이터 기반이나, 싱글 데이터와 멀티 데이터가 구분되어 표기된 trcode는 getrepeatcnt()를 사용 이벤트 처리 관련 게시글 바로가기 조건검색식 관련 게시글 바로가기 파이썬 동작 bit 확인 관련 게시글 바로가기 GetRepeatCnt() 함수 사용 바로가기 데이..
키움증권 TR 코드 및 사용 방법 총 정리※ 키움증권 설명서에서 이야기하는 trcode란 Transaction Code의 약칭입니다. ※ 각 Transaction Code(또는 Tr 이름) 클릭 시 사용 방법 링크로 연결됩니다. ※ [call real]은 실시간 데이터를 발생시킴을 의미합니다. ※ 선물옵션 및 지수 관련 데이터는 추후 업데이트 예정입니다. ※ 모든 Transaction Code를 사용하기 위해서는 반드시 이벤트 처리를 해주어야 합니다. ※ 모든 데이터는 멀티 데이터 기반이나, 싱글 데이터와 멀티 데이터가 구분되어 표기된 trcode는 getrepeatcnt()를 사용 이벤트 처리 관련 게시글 바로가기 조건검색식 관련 게시글 바로가기 파이썬 동작 bit 확인 관련 게시글 바로가기 GetRepeatCnt() 함수 사용 바로가기 데이..
2022.02.09 -
결론부터 말하자면, 현재 키움증권 Open API 내에서는 관심종목을 불러오는 코드를 지원하지 않고 있다. 개발가이드 상에서는 CommKwRqData 함수를 통해 '주식 관심종목정보'를 불러올 수 있다고 하지만, 여기서 이야기하는 관심종목은 영웅문 내에서 이용하는 '관심종목'과는 전혀 다른 것이다. 해당 코드의 동작 결과를 사전에 확인할 수 있는 KOS Studio를 통해 CommKwRqData를 실행해봐도 그 결과값으로 관심종목 내에 있는 종목 코드를 반환하는 것이 아니라 그냥 그 종목에 대한 정보만을 반환하고 있다. CommKwRqData("종목코드", "연속조회여부", "조회종목개수", "0", "RQName", "화면번호"); CommKwRqData("03940;023590", "연속조회여부", ..
키움증권 Open API 관심종목 불러오기(불가능)결론부터 말하자면, 현재 키움증권 Open API 내에서는 관심종목을 불러오는 코드를 지원하지 않고 있다. 개발가이드 상에서는 CommKwRqData 함수를 통해 '주식 관심종목정보'를 불러올 수 있다고 하지만, 여기서 이야기하는 관심종목은 영웅문 내에서 이용하는 '관심종목'과는 전혀 다른 것이다. 해당 코드의 동작 결과를 사전에 확인할 수 있는 KOS Studio를 통해 CommKwRqData를 실행해봐도 그 결과값으로 관심종목 내에 있는 종목 코드를 반환하는 것이 아니라 그냥 그 종목에 대한 정보만을 반환하고 있다. CommKwRqData("종목코드", "연속조회여부", "조회종목개수", "0", "RQName", "화면번호"); CommKwRqData("03940;023590", "연속조회여부", ..
2021.12.20 -
지난 게시글에서는 특정 종목의 종목코드가 if_savepoint 데이터베이스 안에 저장되어 있는지를 판단하는 코드를 제작하였고, 이번 게시글에서 if문과 else문 아래 부분의 코드 제작을 마무리할 예정이다. if문은 filtered_code 안에 있는 종목이 item_savepoint 데이터베이스 안에 있는 경우이고, else문은 반대로 filtered_code안에는 있지만 item_savepoint 데이터베이스 안에는 없는 종목이다. 해당 종목의 날짜 불러오기 일단 filtered_code() 안에 있는 종목이 item_savepoint 데이터베이스에 있는 경우에는 해당 종목 코드와 함께 저장된 저장 일자를 불러와야 한다. 그러기 위해서는 SELECT 명령어와 WHERE 명령어를 함께 사용해서 불러와..
키움증권 Open API - 차트 데이터 이어서 조회하기 (2)지난 게시글에서는 특정 종목의 종목코드가 if_savepoint 데이터베이스 안에 저장되어 있는지를 판단하는 코드를 제작하였고, 이번 게시글에서 if문과 else문 아래 부분의 코드 제작을 마무리할 예정이다. if문은 filtered_code 안에 있는 종목이 item_savepoint 데이터베이스 안에 있는 경우이고, else문은 반대로 filtered_code안에는 있지만 item_savepoint 데이터베이스 안에는 없는 종목이다. 해당 종목의 날짜 불러오기 일단 filtered_code() 안에 있는 종목이 item_savepoint 데이터베이스에 있는 경우에는 해당 종목 코드와 함께 저장된 저장 일자를 불러와야 한다. 그러기 위해서는 SELECT 명령어와 WHERE 명령어를 함께 사용해서 불러와..
2021.06.09 -
이번 게시글에서 다룰 내용은 반드시 데이터베이스가 구축이 되어 있어야만 이어서 조회하는 것이 가능하다. 아직 데이터베이스를 구축하지 않았다면 반드시 이전 게시글을 보면서 차트 데이터 조회를 관리하기 위한 데이터베이스를 구축하고 넘어와야만 이번 게시글을 이해하고 따라갈 수 있다. 키움증권 Open API - 차트 데이터 관리 DB 제작 (2) 지난 게시글에서 item_savepoint라는 데이터베이스 안에 item_savepoint라는 테이블을 생성한 채로 마무리했으니 이번 게시글에서는 그 내용에 이어서 item_savepoint라는 테이블 안에 종목 코드들을 입력 trustyou.tistory.com item_savepoint 데이터베이스 불러오기 본격적인 내용을 시작하기 전에 앞서, 기본적으로 우리가 ..
키움증권 Open API - 차트 데이터 이어서 조회하기 (1)이번 게시글에서 다룰 내용은 반드시 데이터베이스가 구축이 되어 있어야만 이어서 조회하는 것이 가능하다. 아직 데이터베이스를 구축하지 않았다면 반드시 이전 게시글을 보면서 차트 데이터 조회를 관리하기 위한 데이터베이스를 구축하고 넘어와야만 이번 게시글을 이해하고 따라갈 수 있다. 키움증권 Open API - 차트 데이터 관리 DB 제작 (2) 지난 게시글에서 item_savepoint라는 데이터베이스 안에 item_savepoint라는 테이블을 생성한 채로 마무리했으니 이번 게시글에서는 그 내용에 이어서 item_savepoint라는 테이블 안에 종목 코드들을 입력 trustyou.tistory.com item_savepoint 데이터베이스 불러오기 본격적인 내용을 시작하기 전에 앞서, 기본적으로 우리가 ..
2021.06.08 -
지난 게시글에서 item_savepoint라는 데이터베이스 안에 item_savepoint라는 테이블을 생성한 채로 마무리했으니 이번 게시글에서는 그 내용에 이어서 item_savepoint라는 테이블 안에 종목 코드들을 입력하고 차트 데이터를 저장한 경우에는 저장이 된 날짜를 입력하도록 하는 방법에 대해 알아볼 예정이다. 종목코드 입력하기 item_savepoint 안에는 'code'와 'sv_day'라는 두 개의 칼럼이 있는데, 그 중 code라는 부분에 종목 코드를 입력하기 위한 코드는 어떤 구조를 갖추고 있는지 알아보자. 결론부터 말하자면, 앞의 게시글에서도 여러 번 사용했었지만 cur.execute()라는 형태를 이용하되, 그 안에서 사용할 명령어는 INSERT이다. 즉, 무언갈 생성할 때에는 ..
키움증권 Open API - 차트 데이터 관리 DB 제작 (2)지난 게시글에서 item_savepoint라는 데이터베이스 안에 item_savepoint라는 테이블을 생성한 채로 마무리했으니 이번 게시글에서는 그 내용에 이어서 item_savepoint라는 테이블 안에 종목 코드들을 입력하고 차트 데이터를 저장한 경우에는 저장이 된 날짜를 입력하도록 하는 방법에 대해 알아볼 예정이다. 종목코드 입력하기 item_savepoint 안에는 'code'와 'sv_day'라는 두 개의 칼럼이 있는데, 그 중 code라는 부분에 종목 코드를 입력하기 위한 코드는 어떤 구조를 갖추고 있는지 알아보자. 결론부터 말하자면, 앞의 게시글에서도 여러 번 사용했었지만 cur.execute()라는 형태를 이용하되, 그 안에서 사용할 명령어는 INSERT이다. 즉, 무언갈 생성할 때에는 ..
2021.06.08 -
지난 게시글에서는 filtered_code() 함수를 통해 불러온 종목 코드들을 바탕으로 전체 종목의 일봉 차트 데이터를 조회하는 부분까지 알아봤다. 이번 게시글에서 알아볼 내용은 바로 차트 데이터를 DB에 저장하고 그를 어떻게 관리해야 하는지 등에 대한 방법론적인 부분에 대해 다루어볼 예정이다. 차트 데이터 DB에 저장하기 지난 시간에 제작했던 코드를 보면 for code in code_list:라고 제작한 부분이 있는데, 이는 code_list 안에 있는 ['000020', '000040', '000050' ···]와 같은 값들 중에서 code = '000020'이라는 가정 하에 코드를 실행하고, 그 다음 번 반복에서는 code = '000040'이라는 가정 하에 코드를 실행하는 방식으로 동작한다. ..
키움증권 Open API - 차트 데이터 관리 DB 제작 (1)지난 게시글에서는 filtered_code() 함수를 통해 불러온 종목 코드들을 바탕으로 전체 종목의 일봉 차트 데이터를 조회하는 부분까지 알아봤다. 이번 게시글에서 알아볼 내용은 바로 차트 데이터를 DB에 저장하고 그를 어떻게 관리해야 하는지 등에 대한 방법론적인 부분에 대해 다루어볼 예정이다. 차트 데이터 DB에 저장하기 지난 시간에 제작했던 코드를 보면 for code in code_list:라고 제작한 부분이 있는데, 이는 code_list 안에 있는 ['000020', '000040', '000050' ···]와 같은 값들 중에서 code = '000020'이라는 가정 하에 코드를 실행하고, 그 다음 번 반복에서는 code = '000040'이라는 가정 하에 코드를 실행하는 방식으로 동작한다. ..
2021.06.08 -
이번 게시글에서는 이전에 제작했던 filtered_code() 함수와 rq_chart_data 함수를 이용해서 전체 종목의 종목 코드를 조회한 후에 해당 종목을 데이터베이스에 저장하는 방법에 대해 포스팅하고자 한다. filtered_code() 함수 보완 여느 때와 마찬가지로 if문 아래에 다음과 같은 코드를 제작함으로써 필터링을 거친 종목 코드들을 불러올 수 있다. 하지만 지난 포스팅에서 제작하다 만 부분이 조금 있기 때문에, 이번 포스팅에서 마저 마무리 제작하고 for문을 돌리도록 하겠다. 2021년 6월 기준, 우선주 또는 ETN 등의 종목을 걸러내는 방법은 아래와 같다. if 검색할 단어 in 대상 단어: 예를 들어 우선주를 걸러내고 싶다면 if "우" in codename과 같은 형태로, 스팩주..
키움증권 Open API - 전 종목 차트 자동 조회하기이번 게시글에서는 이전에 제작했던 filtered_code() 함수와 rq_chart_data 함수를 이용해서 전체 종목의 종목 코드를 조회한 후에 해당 종목을 데이터베이스에 저장하는 방법에 대해 포스팅하고자 한다. filtered_code() 함수 보완 여느 때와 마찬가지로 if문 아래에 다음과 같은 코드를 제작함으로써 필터링을 거친 종목 코드들을 불러올 수 있다. 하지만 지난 포스팅에서 제작하다 만 부분이 조금 있기 때문에, 이번 포스팅에서 마저 마무리 제작하고 for문을 돌리도록 하겠다. 2021년 6월 기준, 우선주 또는 ETN 등의 종목을 걸러내는 방법은 아래와 같다. if 검색할 단어 in 대상 단어: 예를 들어 우선주를 걸러내고 싶다면 if "우" in codename과 같은 형태로, 스팩주..
2021.06.08 -
사실 지난 포스팅들을 바탕으로 대부분의 이벤트 처리가 가능하고 본인 역시 스스로 제작해보길 바라는 마음을 갖고 있긴 하지만 사실 또 제작하다가 오류가 발생했는데 어디서 오류가 발생한 건지, 어떻게 제작하는 것이 올바르게 작동하는 것인지 잘 모를 때에는 누군가의 도움이 필요하기 때문에 이번 포스팅도 제작하게 되었다. 차트 데이터 요청 함수 제작하기앞전 포스팅에서 제작했던 일봉 차트의 경우에는 def rq_chart_data로 제작했으나 분봉은 일봉과는 다른 값을 전송해야 하기 때문에 분봉 차트 조회는 별도의 함수를 제작함으로써 조회 요청을 할 수 있다. 즉 일봉 차트 조회의 경우에는 종목코드, 기준일자, 수정주가구분을 입력했지만 분봉 차트 조회의 경우에는 종목코드, 틱범위, 수정주가구분을 입력해주어야 한..
키움증권 Open API - 3분봉 차트 조회사실 지난 포스팅들을 바탕으로 대부분의 이벤트 처리가 가능하고 본인 역시 스스로 제작해보길 바라는 마음을 갖고 있긴 하지만 사실 또 제작하다가 오류가 발생했는데 어디서 오류가 발생한 건지, 어떻게 제작하는 것이 올바르게 작동하는 것인지 잘 모를 때에는 누군가의 도움이 필요하기 때문에 이번 포스팅도 제작하게 되었다. 차트 데이터 요청 함수 제작하기앞전 포스팅에서 제작했던 일봉 차트의 경우에는 def rq_chart_data로 제작했으나 분봉은 일봉과는 다른 값을 전송해야 하기 때문에 분봉 차트 조회는 별도의 함수를 제작함으로써 조회 요청을 할 수 있다. 즉 일봉 차트 조회의 경우에는 종목코드, 기준일자, 수정주가구분을 입력했지만 분봉 차트 조회의 경우에는 종목코드, 틱범위, 수정주가구분을 입력해주어야 한..
2021.06.07