분류 전체보기
-
프로그램 구현 목표파이참에서 MySQL에 데이터베이스 생성하기파이썬의 Magic Methods 활용하기차트 데이터를 저장할 클래스 생성하기지난 게시글에서는 ①데이터베이스의 존재 여부를 확인하는 기능과 ②데이터베이스와 연결하는 기능을 구현하였다. 이번 게시글에서부터는 데이터베이스를 생성하는 기능을 구현하고, 프로그램 시작과 동시에 해당 데이터베이스의 존재 여부를 판단하고 존재하지 않으면 데이터베이스를 생성하도록 하는 기능을 구현할 예정이다. 파이참에서 MySQL에 데이터베이스 생성하기데이터베이스를 생성할 함수를 con_mysql.py 파일의 `class check_db` 클래스 내부에 `def _make_db(self, db_name):`이라는 이름으로 하여 생성해주도록 하자. 이제 이 함수의 인자로 전달..
대신증권 CYBOS PLUS 프로그램 구현 (15) - 차트 데이터 저장하기 ②프로그램 구현 목표파이참에서 MySQL에 데이터베이스 생성하기파이썬의 Magic Methods 활용하기차트 데이터를 저장할 클래스 생성하기지난 게시글에서는 ①데이터베이스의 존재 여부를 확인하는 기능과 ②데이터베이스와 연결하는 기능을 구현하였다. 이번 게시글에서부터는 데이터베이스를 생성하는 기능을 구현하고, 프로그램 시작과 동시에 해당 데이터베이스의 존재 여부를 판단하고 존재하지 않으면 데이터베이스를 생성하도록 하는 기능을 구현할 예정이다. 파이참에서 MySQL에 데이터베이스 생성하기데이터베이스를 생성할 함수를 con_mysql.py 파일의 `class check_db` 클래스 내부에 `def _make_db(self, db_name):`이라는 이름으로 하여 생성해주도록 하자. 이제 이 함수의 인자로 전달..
2024.09.18 -
프로그램 구현 목표MySQL 설치 및 구조 이해하기MySQL과 파이썬 연결하기 : sqlalchemy데이터베이스 존재 여부 확인하기이번 게시글에서는 이전에 제작한 차트 데이터 저장 함수를 활용하여 획득한 차트 데이터를 MySQL이라는 데이터베이스 프로그램을 설치한 후, MySQL의 구조를 이해하고 우리가 조회한 차트 데이터를 저장하고 또 다시 불러오는 방법에 대해 살펴보고자 한다. MySQL 설치 및 구조 이해하기이 프로그램을 설치하는 방법은 워낙에 다양한 게시글에서 설명하고 있으니 이 게시글에서는 설치 방법에 대한 설명은 제외하고, 참고하면 좋은 게시글의 링크를 첨부하여 둘테니 그 게시글의 설치 방법을 참고하도록 하자.※ 설치할 때 입력한 비밀번호는 기억해두도록 하자. 아래에서 사용할 때 필요하다. ..
대신증권 CYBOS PLUS 프로그램 구현 (14) - 차트 데이터 저장하기 ①프로그램 구현 목표MySQL 설치 및 구조 이해하기MySQL과 파이썬 연결하기 : sqlalchemy데이터베이스 존재 여부 확인하기이번 게시글에서는 이전에 제작한 차트 데이터 저장 함수를 활용하여 획득한 차트 데이터를 MySQL이라는 데이터베이스 프로그램을 설치한 후, MySQL의 구조를 이해하고 우리가 조회한 차트 데이터를 저장하고 또 다시 불러오는 방법에 대해 살펴보고자 한다. MySQL 설치 및 구조 이해하기이 프로그램을 설치하는 방법은 워낙에 다양한 게시글에서 설명하고 있으니 이 게시글에서는 설치 방법에 대한 설명은 제외하고, 참고하면 좋은 게시글의 링크를 첨부하여 둘테니 그 게시글의 설치 방법을 참고하도록 하자.※ 설치할 때 입력한 비밀번호는 기억해두도록 하자. 아래에서 사용할 때 필요하다. ..
2024.09.16 -
프로그램 구현 목표주문 초기화 및 계좌번호를 구하기 : CpTrade.CpTdUtil계좌 잔고 조회하기 : CpTrade.CpTd6033로그인과 동시에 계좌 조회하기대신증권에서 계좌를 조회할 때 제공해주는 함수는 `CpTrade`의 `CpTd6033` 모듈을 활용해야 하는데, 이 모듈을 사용하기 위해서는 아래의 세 가지 작업을 반드시 구축해주어야 한다.CpTrade.CpTdUtil 모듈의 TradeInit 함수 → 주문 초기화 기능 구현CpTrade.CpTdUtil 모듈의 AccountNumber 함수 → 계좌번호 조회 기능 구현CpTrade.CpTdUtil 모듈의 GoodsList 함수 → 계좌의 거래 가능 범위 구현 주문 초기화 및 계좌번호 구하기 : CpTrade.CpTdUtil대신증권 Open ..
대신증권 CYBOS PLUS 프로그램 구현 (13) - 로그인 시 계좌 조회하기프로그램 구현 목표주문 초기화 및 계좌번호를 구하기 : CpTrade.CpTdUtil계좌 잔고 조회하기 : CpTrade.CpTd6033로그인과 동시에 계좌 조회하기대신증권에서 계좌를 조회할 때 제공해주는 함수는 `CpTrade`의 `CpTd6033` 모듈을 활용해야 하는데, 이 모듈을 사용하기 위해서는 아래의 세 가지 작업을 반드시 구축해주어야 한다.CpTrade.CpTdUtil 모듈의 TradeInit 함수 → 주문 초기화 기능 구현CpTrade.CpTdUtil 모듈의 AccountNumber 함수 → 계좌번호 조회 기능 구현CpTrade.CpTdUtil 모듈의 GoodsList 함수 → 계좌의 거래 가능 범위 구현 주문 초기화 및 계좌번호 구하기 : CpTrade.CpTdUtil대신증권 Open ..
2024.09.07 -
프로그램 구현 목표최대로 회신 가능한 데이터 확인하기분봉 차트 조회 함수 제작하기연속 조회 기능 구현하기15분봉 말고 다른 분봉도 조회해보죠 ① GUI로 기능 구현하기15분봉 말고 다른 분봉도 조회해보죠 ② 함수의 인자로 전달받기 최대로 회신 가능한 데이터 확인하기여기서 살펴볼 회신 가능한 데이터라는 개념은 일봉 차트를 구현할 때 확인했던 2,856개(분봉은 2,499개임)라는 개념과는 달리, 분봉 차트 데이터의 경우에만 적용되는 조회 가능한 범위의 한계가 있다. 대신증권 운영진 측의 답변에 따르면 아래와 같이 정리된다.1분봉: 2년5분봉: 5년틱봉: 20일 분봉 차트 조회 함수 제작하기분봉 차트는 기존에 살펴봤던 내용과 같이 데이터의 개수로만 조회가 가능하다. 그 전에 앞서 이전에 제작해두었던 일봉·..
대신증권 CYBOS PLUS 프로그램 구현 (12) - 분봉 차트 조회하기프로그램 구현 목표최대로 회신 가능한 데이터 확인하기분봉 차트 조회 함수 제작하기연속 조회 기능 구현하기15분봉 말고 다른 분봉도 조회해보죠 ① GUI로 기능 구현하기15분봉 말고 다른 분봉도 조회해보죠 ② 함수의 인자로 전달받기 최대로 회신 가능한 데이터 확인하기여기서 살펴볼 회신 가능한 데이터라는 개념은 일봉 차트를 구현할 때 확인했던 2,856개(분봉은 2,499개임)라는 개념과는 달리, 분봉 차트 데이터의 경우에만 적용되는 조회 가능한 범위의 한계가 있다. 대신증권 운영진 측의 답변에 따르면 아래와 같이 정리된다.1분봉: 2년5분봉: 5년틱봉: 20일 분봉 차트 조회 함수 제작하기분봉 차트는 기존에 살펴봤던 내용과 같이 데이터의 개수로만 조회가 가능하다. 그 전에 앞서 이전에 제작해두었던 일봉·..
2024.09.06 -
프로그램 구현 목표두 번보다도 많은 횟수의 데이터를 요청해보자요청한 데이터 개수만큼만 결과값을 전달받아보자 두 번보다도 많은 횟수의 데이터를 요청해보자현재까지 구현한 코드는 단순하게 2,856개의 데이터를 두 번 요청하는 기능밖에 수행하지 못한다. 왜냐하면 동일한 작업을 계속해서 처리하도록 하는 기능이 구현되어 있지 않기 때문이다. 이해가 가지 않는다면, 3번을 요청해야만 회신받을 수 있는 데이터 개수인 6,000개를 요청해보면 된다. 아래의 결과값만 봐도 어렵지 않게 이해할 수 있는데, 정확히 5712개의 데이터만 반환되고 있다. 이는 10,000개를 요청하나 13,000개를 요청하나 똑같은 결과값만을 반환해줄 뿐이다.□ 6,000개를 요청했을 때의 결과값더보기더보기self.object:CpCybos ..
대신증권 CYBOS PLUS 프로그램 구현 (11) - 일봉 차트 조회 : 연속 조회 사용하기 ②프로그램 구현 목표두 번보다도 많은 횟수의 데이터를 요청해보자요청한 데이터 개수만큼만 결과값을 전달받아보자 두 번보다도 많은 횟수의 데이터를 요청해보자현재까지 구현한 코드는 단순하게 2,856개의 데이터를 두 번 요청하는 기능밖에 수행하지 못한다. 왜냐하면 동일한 작업을 계속해서 처리하도록 하는 기능이 구현되어 있지 않기 때문이다. 이해가 가지 않는다면, 3번을 요청해야만 회신받을 수 있는 데이터 개수인 6,000개를 요청해보면 된다. 아래의 결과값만 봐도 어렵지 않게 이해할 수 있는데, 정확히 5712개의 데이터만 반환되고 있다. 이는 10,000개를 요청하나 13,000개를 요청하나 똑같은 결과값만을 반환해줄 뿐이다.□ 6,000개를 요청했을 때의 결과값더보기더보기self.object:CpCybos ..
2024.09.06 -
프로그램 구현 목표조회 횟수당 최대로 조회할 수 있는 데이터 확인해보기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