open api
-
프로그램 구현 목표조회 횟수당 최대로 조회할 수 있는 데이터 확인해보기Continue 속성 활용하여 이해하기개수 비교 로직 추가하기연속 조회 구현하기 조회 횟수당 최대로 조회할 수 있는 데이터 확인해보기이전에 만들어둔 프로그램을 실행시켜서 조회 개수 란에 3,000을 입력한 후 데이터를 조회해보면, 서버로부터 회신되는 데이터의 개수는 2,856개밖에 되지 않는다는 사실을 확인할 수 있다. 그렇다면 요청하고자 하는 차트 데이터의 유형에 따라 각각의 유형에 대하여 각기 다른 제한된 데이터 개수가 지정되어 있을까 ? 결론부터 이야기하자면, 일봉이든 주봉이든 분봉이든 틱봉이든 간에 2,856개의 데이터를 한도로 하여 데이터를 회신해준다. 그렇다면 결국에는 2,856개의 데이터가 회신된 후에 우리가 요청하고도 돌..
대신증권 CYBOS PLUS 프로그램 구현 (10) - 일봉 차트 조회 : 연속 조회 사용하기 ①프로그램 구현 목표조회 횟수당 최대로 조회할 수 있는 데이터 확인해보기Continue 속성 활용하여 이해하기개수 비교 로직 추가하기연속 조회 구현하기 조회 횟수당 최대로 조회할 수 있는 데이터 확인해보기이전에 만들어둔 프로그램을 실행시켜서 조회 개수 란에 3,000을 입력한 후 데이터를 조회해보면, 서버로부터 회신되는 데이터의 개수는 2,856개밖에 되지 않는다는 사실을 확인할 수 있다. 그렇다면 요청하고자 하는 차트 데이터의 유형에 따라 각각의 유형에 대하여 각기 다른 제한된 데이터 개수가 지정되어 있을까 ? 결론부터 이야기하자면, 일봉이든 주봉이든 분봉이든 틱봉이든 간에 2,856개의 데이터를 한도로 하여 데이터를 회신해준다. 그렇다면 결국에는 2,856개의 데이터가 회신된 후에 우리가 요청하고도 돌..
2024.09.02 -
프로그램 구현 목표오류 내용 확인하기오류 개선하기일봉 차트 데이터프레임화하기 오류 내용 확인하기지난 두 개의 게시글에서 일봉 차트를 조회할 때 일자 범위를 대상으로 조회하는 함수와 조회하고자 하는 데이터 개수를 기준으로 조회하는 함수를 구현하고 두 함수 모두를 GUI와 연결하여 차트 데이터를 조회할 수 있도록 하는 기능을 모두 구현했다. 하지만 차트 데이터를 조회하는 순서에 있어서, `def _day_range()` 함수를 먼저 사용하게 되면 이전에 데이터를 조회할 때 입력해두었던 일자 범위 데이터가 남아서 `def _len_chart()` 함수에도 영향을 미친다는 오류가 확인됐다. 아래의 데이터를 살펴보자.▶ 개수로 조회한 후에 일자 범위로 조회한 경우의 결과 데이터더보기self.object:CpCyb..
대신증권 CYBOS PLUS 프로그램 구현 (9) - 일봉 차트 조회 : 오류 개선프로그램 구현 목표오류 내용 확인하기오류 개선하기일봉 차트 데이터프레임화하기 오류 내용 확인하기지난 두 개의 게시글에서 일봉 차트를 조회할 때 일자 범위를 대상으로 조회하는 함수와 조회하고자 하는 데이터 개수를 기준으로 조회하는 함수를 구현하고 두 함수 모두를 GUI와 연결하여 차트 데이터를 조회할 수 있도록 하는 기능을 모두 구현했다. 하지만 차트 데이터를 조회하는 순서에 있어서, `def _day_range()` 함수를 먼저 사용하게 되면 이전에 데이터를 조회할 때 입력해두었던 일자 범위 데이터가 남아서 `def _len_chart()` 함수에도 영향을 미친다는 오류가 확인됐다. 아래의 데이터를 살펴보자.▶ 개수로 조회한 후에 일자 범위로 조회한 경우의 결과 데이터더보기self.object:CpCyb..
2024.09.01 -
프로그램 구현 목표데이터 개수를 가지고 차트 데이터 조회하기GUI의 pushButton과 연결하기 데이터 개수를 가지고 차트 데이터 조회하기지난 게시글에서는 일봉 차트 데이터를 조회하는 함수의 동작 방식을 알아보는 동시에 일자 범위를 가지고 일봉 차트 데이터를 조회하는 함수를 구현해보았다. 이번 게시글에서는 "요청 구분"이 2(개수)인 경우에 차트 데이터를 어떻게 수신받을 수 있는지에 대해 살펴보고 그에 대응하는 차트 데이터 조회 함수를 구현해보고자 한다. 이전 게시글에서 살펴보았듯이 "요청 구분"이 1(기간)인 경우에는 일봉 차트 데이터만 조회할 수 있었는데, "요청 구분"이 2(개수)인 경우에는 일봉을 포함하여 분봉, 주봉, 월봉, 틱봉 모두 조회가 가능하다.하지만 본격적으로 코드를 제작하기 전에 ..
대신증권 CYBOS PLUS 프로그램 구현 (8) - 일봉 차트 조회 : 데이터 개수프로그램 구현 목표데이터 개수를 가지고 차트 데이터 조회하기GUI의 pushButton과 연결하기 데이터 개수를 가지고 차트 데이터 조회하기지난 게시글에서는 일봉 차트 데이터를 조회하는 함수의 동작 방식을 알아보는 동시에 일자 범위를 가지고 일봉 차트 데이터를 조회하는 함수를 구현해보았다. 이번 게시글에서는 "요청 구분"이 2(개수)인 경우에 차트 데이터를 어떻게 수신받을 수 있는지에 대해 살펴보고 그에 대응하는 차트 데이터 조회 함수를 구현해보고자 한다. 이전 게시글에서 살펴보았듯이 "요청 구분"이 1(기간)인 경우에는 일봉 차트 데이터만 조회할 수 있었는데, "요청 구분"이 2(개수)인 경우에는 일봉을 포함하여 분봉, 주봉, 월봉, 틱봉 모두 조회가 가능하다.하지만 본격적으로 코드를 제작하기 전에 ..
2024.09.01 -
프로그램 구현 목표일봉 차트 데이터 조회 함수 생성하기일자 범위를 가지고 차트 데이터 조회하기 일봉 차트 데이터 조회 함수 생성하기함수를 구현하기 전에 앞서 우리는 캡슐화된 일봉 차트 데이터 조회 함수를 구현해야 한다. 다시 말해, 전체 종목에 대한 일봉 차트 데이터를 조회하는 함수를 생성하기 전에 특정 종목의 종목코드를 인자로 받아서 그 종목에 대한 일봉 차트 데이터를 조회하는 함수를 생성해주어야 한다. 왜냐하면 종목코드를 조회하는 함수는 이미 `def _GetStockListByMarket(self):` 함수를 통해서 구현해두었기 때문에, 이 함수에서 종목코드를 얻어다가 종목코드를 한개씩 인자로 전달하면서 그 종목에 대한 차트 데이터를 조회해야 하기 때문이다. 그렇다면 차트 데이터를 조회하는 모듈은 ..
대신증권 CYBOS PLUS 프로그램 구현 (7) - 일봉 차트 조회 : 일자 범위프로그램 구현 목표일봉 차트 데이터 조회 함수 생성하기일자 범위를 가지고 차트 데이터 조회하기 일봉 차트 데이터 조회 함수 생성하기함수를 구현하기 전에 앞서 우리는 캡슐화된 일봉 차트 데이터 조회 함수를 구현해야 한다. 다시 말해, 전체 종목에 대한 일봉 차트 데이터를 조회하는 함수를 생성하기 전에 특정 종목의 종목코드를 인자로 받아서 그 종목에 대한 일봉 차트 데이터를 조회하는 함수를 생성해주어야 한다. 왜냐하면 종목코드를 조회하는 함수는 이미 `def _GetStockListByMarket(self):` 함수를 통해서 구현해두었기 때문에, 이 함수에서 종목코드를 얻어다가 종목코드를 한개씩 인자로 전달하면서 그 종목에 대한 차트 데이터를 조회해야 하기 때문이다. 그렇다면 차트 데이터를 조회하는 모듈은 ..
2024.08.27 -
프로그램 구현 목표프로그램 로직 생각해보기전체 종목코드 조회 함수 캡슐화 완성하기 (1) : LineEdit 클래스 활용전체 종목코드 조회 함수 캡슐화 완성하기 (2) : ComboBox 클래스 활용 프로그램 로직 생각해보기이전 게시글에서 구현했던 `def _GetStockListByMarket(self)` 함수를 통해 데이터를 요청하는 구조에 있어서 우리는 물론 여러 가지 구조의 코드를 구현할 수 있긴 하겠지만, 대략적으로 요약해보자면 기본적으로 그 구조는 해당 함수에 전달할 시장 구분 데이터를 어떠한 방식으로 얻어올 것인지에 따라 아래와 같이 요약할 수 있을 것이다. 시장 구분 데이터를 별도로 전달받지 않고 함수 내부에서 직접 입력하여 데이터를 조회하고 종목코드 함수를 반환시장 구분 데이터를 Line..
대신증권 CYBOS PLUS 프로그램 구현 (6) - 전종목 종목코드 조회하기 ②프로그램 구현 목표프로그램 로직 생각해보기전체 종목코드 조회 함수 캡슐화 완성하기 (1) : LineEdit 클래스 활용전체 종목코드 조회 함수 캡슐화 완성하기 (2) : ComboBox 클래스 활용 프로그램 로직 생각해보기이전 게시글에서 구현했던 `def _GetStockListByMarket(self)` 함수를 통해 데이터를 요청하는 구조에 있어서 우리는 물론 여러 가지 구조의 코드를 구현할 수 있긴 하겠지만, 대략적으로 요약해보자면 기본적으로 그 구조는 해당 함수에 전달할 시장 구분 데이터를 어떠한 방식으로 얻어올 것인지에 따라 아래와 같이 요약할 수 있을 것이다. 시장 구분 데이터를 별도로 전달받지 않고 함수 내부에서 직접 입력하여 데이터를 조회하고 종목코드 함수를 반환시장 구분 데이터를 Line..
2024.08.26 -
프로그램 구현 목표종목코드 조회 함수 제작하기GUI 내부에서 종목코드 조회 버튼 생성하기파이썬 내부에서 종목코드 조회 버튼과 함수 연결하기종목코드 조회 함수 캡슐화 종목코드 조회 함수 제작하기대신증권 CYBOS PLUS에서 종목코드를 조회하는 함수는 `CpUtil.CpCodeMgr` 모듈의 `GetStockListByMarket` 함수를 통해 제공되고 있다. 이 함수는 아래의 사진에서 확인할 수 있듯이, 전달된 시장 구분 값에 따라 해당 시장에 소속된 주식 종목코드들을 반환하는 기능을 갖고 있다.1: 거래소(코스피)2: 코스닥3: K-OTC (금투협에서 운영하는 장외주식시장)4: KRX5: KONEX그렇다면 이제 해당 함수에 각각의 데이터를 전달하고 그 결과 데이터를 반환받아보도록 하자.## CpUtil..
대신증권 CYBOS PLUS 프로그램 구현 (5) - 전종목 종목코드 조회하기 ①프로그램 구현 목표종목코드 조회 함수 제작하기GUI 내부에서 종목코드 조회 버튼 생성하기파이썬 내부에서 종목코드 조회 버튼과 함수 연결하기종목코드 조회 함수 캡슐화 종목코드 조회 함수 제작하기대신증권 CYBOS PLUS에서 종목코드를 조회하는 함수는 `CpUtil.CpCodeMgr` 모듈의 `GetStockListByMarket` 함수를 통해 제공되고 있다. 이 함수는 아래의 사진에서 확인할 수 있듯이, 전달된 시장 구분 값에 따라 해당 시장에 소속된 주식 종목코드들을 반환하는 기능을 갖고 있다.1: 거래소(코스피)2: 코스닥3: K-OTC (금투협에서 운영하는 장외주식시장)4: KRX5: KONEX그렇다면 이제 해당 함수에 각각의 데이터를 전달하고 그 결과 데이터를 반환받아보도록 하자.## CpUtil..
2024.08.25 -
프로그램 구현 목표로그인 함수 이벤트 처리기 생성하기이벤트 처리 함수 보완하기지난 게시글에서 GUI와 파이썬 코드를 연결하는 기능을 구현하였기 때문에 이번 게시글에서부터는 여러 모듈을 활용하여 다양한 기능을 사용하는 코드를 구현해보고자 했으나 이벤트 처리에 있어서 다소 보완해야 할 부분들이 있어서 코드 구현을 잠깐 멈추고 이벤트 처리기를 보완하는 코드를 구현해보고자 한다. 이전에 `win32com` 모듈에서 제공하는 `WithEvents` 함수를 사용하여 이벤트를 처리하는 방법에 대해 살펴보았는데, 동일한 방식에 따라 로그인 함수에 대한 이벤트 처리기도 구현해보고 그 안에서 보완해야 할 부분에 대해서도 함께 구축하도록 하자. 로그인 함수 이벤트 처리기 생성하기우리가 Boss.py 파일 내에서 제작한 로그..
대신증권 CYBOS PLUS 프로그램 구현 (4) - 이벤트 처리 함수 보완하기프로그램 구현 목표로그인 함수 이벤트 처리기 생성하기이벤트 처리 함수 보완하기지난 게시글에서 GUI와 파이썬 코드를 연결하는 기능을 구현하였기 때문에 이번 게시글에서부터는 여러 모듈을 활용하여 다양한 기능을 사용하는 코드를 구현해보고자 했으나 이벤트 처리에 있어서 다소 보완해야 할 부분들이 있어서 코드 구현을 잠깐 멈추고 이벤트 처리기를 보완하는 코드를 구현해보고자 한다. 이전에 `win32com` 모듈에서 제공하는 `WithEvents` 함수를 사용하여 이벤트를 처리하는 방법에 대해 살펴보았는데, 동일한 방식에 따라 로그인 함수에 대한 이벤트 처리기도 구현해보고 그 안에서 보완해야 할 부분에 대해서도 함께 구축하도록 하자. 로그인 함수 이벤트 처리기 생성하기우리가 Boss.py 파일 내에서 제작한 로그..
2024.08.25 -
프로그램 구현 목표PyQt5 Qt Designer를 통해 코드와 연결하기버튼 하나 동작해보기지난 게시글까지는 로그인을 자동적으로 처리하는 방법에 대해 살펴보았고, 로그인 기능 자체도 정상적으로 동작하고 있음을 잘 확인하고 넘어왔다. 사실 여태까지 언급하지는 않았지만 우리가 제작했던 코드는 기본적으로 코드를 실행시킨 이후, 우리가 동작시키고자 하는 코드가 모두 돌아간 후에 Process finished with exit code 0이라는 문구와 함께 프로그램이 종료되는 문제점이 있었다. 즉, 프로그램을 실행시킨 후에 특정 코드에 대해서도 테스트해보고 싶어도 특정 구문만 모두 돌아간 후에는 프로그램이 종료되는 바람에 다른 코드를 확인해볼 수 없었다. 따라서 이번 게시글에서는 특정 구문이 모두 돌아간 후에도 ..
대신증권 CYBOS PLUS 프로그램 구현 (3) - GUI와 연결하기프로그램 구현 목표PyQt5 Qt Designer를 통해 코드와 연결하기버튼 하나 동작해보기지난 게시글까지는 로그인을 자동적으로 처리하는 방법에 대해 살펴보았고, 로그인 기능 자체도 정상적으로 동작하고 있음을 잘 확인하고 넘어왔다. 사실 여태까지 언급하지는 않았지만 우리가 제작했던 코드는 기본적으로 코드를 실행시킨 이후, 우리가 동작시키고자 하는 코드가 모두 돌아간 후에 Process finished with exit code 0이라는 문구와 함께 프로그램이 종료되는 문제점이 있었다. 즉, 프로그램을 실행시킨 후에 특정 코드에 대해서도 테스트해보고 싶어도 특정 구문만 모두 돌아간 후에는 프로그램이 종료되는 바람에 다른 코드를 확인해볼 수 없었다. 따라서 이번 게시글에서는 특정 구문이 모두 돌아간 후에도 ..
2024.08.18 -
프로그램 구현 목표CYBOS PLUS 자동 로그인 기능 구현하기 (바로가기 링크)접속을 시도하기 전에 접속 여부 구분하기 (현재 게시글)로그인 결과 확인하기 (현재 게시글)지난 게시글에서는 프로그램이 실행되는 동시에 Cybos Plus를 실행시켜 서버에 접속하도록 하는 클래스인 `class login:`을 생성해주고 해당 클래스가 호출되면 자동적으로 접속이 이루어지는지에 대해 살펴보았다. 이번 게시글에서는 이미 접속이 되어 있는 경우에는 해당 클래스를 호출하지 않도록 하고, 접속 요청 후에는 접속이 성공했는지 그 여부를 판단하도록 하는 코드를 구현해보고자 한다. (2) 접속을 시도하기 전에 접속 여부 구분하기접속 여부를 확인할 수 있는 함수는 `class cybos:` 클래스 내부의 `self.cybos..
대신증권 CYBOS PLUS 프로그램 구현 (2) - 자동로그인 구현하기 ②프로그램 구현 목표CYBOS PLUS 자동 로그인 기능 구현하기 (바로가기 링크)접속을 시도하기 전에 접속 여부 구분하기 (현재 게시글)로그인 결과 확인하기 (현재 게시글)지난 게시글에서는 프로그램이 실행되는 동시에 Cybos Plus를 실행시켜 서버에 접속하도록 하는 클래스인 `class login:`을 생성해주고 해당 클래스가 호출되면 자동적으로 접속이 이루어지는지에 대해 살펴보았다. 이번 게시글에서는 이미 접속이 되어 있는 경우에는 해당 클래스를 호출하지 않도록 하고, 접속 요청 후에는 접속이 성공했는지 그 여부를 판단하도록 하는 코드를 구현해보고자 한다. (2) 접속을 시도하기 전에 접속 여부 구분하기접속 여부를 확인할 수 있는 함수는 `class cybos:` 클래스 내부의 `self.cybos..
2024.08.18 -
프로그램 구현 목표CYBOS PLUS 자동 로그인 기능 구현하기접속을 시도하기 전에 접속 여부 구분하기 (바로가기 링크)로그인 결과 확인하기 (위 게시글과 동일한 링크)대신증권의 경우에는 기본적으로 CYBOS PLUS에 로그인을 해야 하는데, 대강 보면 매번 직접 눌러서 로그인을 해야만 하는 것 같지만 자동 로그인 기능을 구현하는 방법이 있다. 사실 Open API를 활용해서 자동 매매 프로그램을 구현하는데도 불구하고 매번 로그인을 직접 눌러서 진행해야 한다는 건 증권사에 있어서 가장 큰 오점이자 단점으로 작용할 수 있다. 본인만 하더라도 대신증권 CYBOS PLUS를 활용한 프로그램 코드를 구현할 때에는 코드를 실행했을 때 자동으로 로그인되는 기능이 없다는 걸 몰랐을 정도로 당연한 기능에 속한다. ..
대신증권 CYBOS PLUS 프로그램 구현 (1) - 자동 로그인 기능 구현하기 ①프로그램 구현 목표CYBOS PLUS 자동 로그인 기능 구현하기접속을 시도하기 전에 접속 여부 구분하기 (바로가기 링크)로그인 결과 확인하기 (위 게시글과 동일한 링크)대신증권의 경우에는 기본적으로 CYBOS PLUS에 로그인을 해야 하는데, 대강 보면 매번 직접 눌러서 로그인을 해야만 하는 것 같지만 자동 로그인 기능을 구현하는 방법이 있다. 사실 Open API를 활용해서 자동 매매 프로그램을 구현하는데도 불구하고 매번 로그인을 직접 눌러서 진행해야 한다는 건 증권사에 있어서 가장 큰 오점이자 단점으로 작용할 수 있다. 본인만 하더라도 대신증권 CYBOS PLUS를 활용한 프로그램 코드를 구현할 때에는 코드를 실행했을 때 자동으로 로그인되는 기능이 없다는 걸 몰랐을 정도로 당연한 기능에 속한다. ..
2024.08.18 -
학습 목표win32com에서 제공하는 WithEvents 이해하기이벤트 처리기에 처리할 이벤트 알려주기 win32com에서 제공하는 WithEvents 이해하기마이크로소프트 개발 도구 사이트에 보면 Visual Basic 내에서 사용되는 `WithEvents` 모듈에 대한 간략한 설명이 있다. 아래의 사진을 보면 '선언된 멤버 변수가 이벤트를 발생시킬 수 있는 클래스의 인스턴스를 참조하도록 지정'한다고 나와 있다. 하지만 그 내용을 자세히 살펴보기 보다는 `WithEvents`가 어떠한 방식으로 동작하는지를 이해하는 편이 코드를 구현하는 데에 조금 더 큰 도움이 될 것이다. 잠깐 멈춰서 `WithEvents`란 무엇인지에 대해 정의를 내려보자면 '이벤트가 발생했을 때 그 이벤트를 처리하는 클래스를 지..
대신증권 CYBOS PLUS 시작하기 (9) - WithEvents 알아보기학습 목표win32com에서 제공하는 WithEvents 이해하기이벤트 처리기에 처리할 이벤트 알려주기 win32com에서 제공하는 WithEvents 이해하기마이크로소프트 개발 도구 사이트에 보면 Visual Basic 내에서 사용되는 `WithEvents` 모듈에 대한 간략한 설명이 있다. 아래의 사진을 보면 '선언된 멤버 변수가 이벤트를 발생시킬 수 있는 클래스의 인스턴스를 참조하도록 지정'한다고 나와 있다. 하지만 그 내용을 자세히 살펴보기 보다는 `WithEvents`가 어떠한 방식으로 동작하는지를 이해하는 편이 코드를 구현하는 데에 조금 더 큰 도움이 될 것이다. 잠깐 멈춰서 `WithEvents`란 무엇인지에 대해 정의를 내려보자면 '이벤트가 발생했을 때 그 이벤트를 처리하는 클래스를 지..
2024.08.18 -
코드 구현 목표모듈 별로 각기 다른 py 파일 내에 각기 다른 이름으로 클래스 생성하기생성한 클래스 사용해보기지난 게시글에서는 CpSysDib.py 파일을 생성한 후 해당 파일 내에서 CpSysDib 내에 있는 `StockChart` 모듈을 대상으로 하는 인스턴스(`self.stockchart`)를 생성해주었고, 그 인스턴스를 활용하여 대신증권 서버에 데이터를 입력하거나 입력한 데이터를 서버로 전송하고, 그 결과 데이터를 수신했다. 이번 게시글에서는 CpSysDib.StockChart 모듈 뿐만 아니라, 이외에도 대신증권에서 제공하는 여러 모듈을 모듈 별로 하나의 파일을 생성하고 그 안에 클래스를 생성해볼 예정이다. (1) 모듈 별로 각기 다른 py 파일 내에 각기 다른 이름의 클래스 생성하기현재 Bos..
대신증권 CYBOS PLUS 시작하기 (8) - 모듈별로 클래스 생성하기코드 구현 목표모듈 별로 각기 다른 py 파일 내에 각기 다른 이름으로 클래스 생성하기생성한 클래스 사용해보기지난 게시글에서는 CpSysDib.py 파일을 생성한 후 해당 파일 내에서 CpSysDib 내에 있는 `StockChart` 모듈을 대상으로 하는 인스턴스(`self.stockchart`)를 생성해주었고, 그 인스턴스를 활용하여 대신증권 서버에 데이터를 입력하거나 입력한 데이터를 서버로 전송하고, 그 결과 데이터를 수신했다. 이번 게시글에서는 CpSysDib.StockChart 모듈 뿐만 아니라, 이외에도 대신증권에서 제공하는 여러 모듈을 모듈 별로 하나의 파일을 생성하고 그 안에 클래스를 생성해볼 예정이다. (1) 모듈 별로 각기 다른 py 파일 내에 각기 다른 이름의 클래스 생성하기현재 Bos..
2024.08.08