분류 전체보기
-
프로그램 구현 목표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 -
코드 구축 목표기작업한 차트 조회 함수들을 별도의 클래스로 생성메인으로 작업할 클래스에서 해당 클래스 호출하여 차트 조회해보기지난 두 번의 게시글에서 일봉, 주봉, 월봉, 분봉 차트 데이터를 조회하는 방법에 대해 살펴보았다. 이제 슬슬 하나의 파일 안에서 모든 코드를 제작하다 보니 코드가 관리하기 어려워지는 게 와닿을 것이다. 그래서 이번에는 새로운 폴더를 만들어서 그 안에 새롭게 파일을 생성하고, 파일 별로 하나의 클래스를 만들어서 아예 분리된 캡슐화 작업을 할 예정이다.일단 우리가 작업하고 있는 trade_cybos 프로젝트(폴더) 안에 COM이라는 이름을 가진 폴더를 생성한 후, CpSysDib.py 파일을 생성해주도록 하자. 앞으로 COM과 관련된 내용들은 모두 COM이라는 폴더 안에 기능을 구현..
대신증권 CYBOS PLUS 시작하기 (7) - 차트조회 클래스 생성하기코드 구축 목표기작업한 차트 조회 함수들을 별도의 클래스로 생성메인으로 작업할 클래스에서 해당 클래스 호출하여 차트 조회해보기지난 두 번의 게시글에서 일봉, 주봉, 월봉, 분봉 차트 데이터를 조회하는 방법에 대해 살펴보았다. 이제 슬슬 하나의 파일 안에서 모든 코드를 제작하다 보니 코드가 관리하기 어려워지는 게 와닿을 것이다. 그래서 이번에는 새로운 폴더를 만들어서 그 안에 새롭게 파일을 생성하고, 파일 별로 하나의 클래스를 만들어서 아예 분리된 캡슐화 작업을 할 예정이다.일단 우리가 작업하고 있는 trade_cybos 프로젝트(폴더) 안에 COM이라는 이름을 가진 폴더를 생성한 후, CpSysDib.py 파일을 생성해주도록 하자. 앞으로 COM과 관련된 내용들은 모두 COM이라는 폴더 안에 기능을 구현..
2024.08.04 -
학습 목표차트를 조회하는 여러 가지 방법하나의 함수로 분봉부터 일봉 주봉 월봉까지 모두 다 해결할 수 있을까 ?분봉 차트 데이터 조회하기지난 게시글에서 일봉 차트 데이터를 조회하는 방법에 대하여 살펴봤었는데, 사실 분봉 차트 데이터를 조회하는 방법도 숙지하고 있어야 한다. 간단하게 결론부터 설명하자면 분봉 차트 데이터는 `SetInputValue(6, ord("D"))` 부분에 있는 "D"를 "m"으로 변경해주기만 하면 되고, 주봉은 "W"로, 월봉은 "M"으로 변경해주면 된다. 각각 Day, min, Week, Month의 약자이므로 이 부분은 크게 어렵지 않다. 다만 요청하고자 하는 데이터의 형태에 따라 각기 다른 형태의 데이터를 전달받아야 한다는 점이 문제이다. 즉, 분봉 차트 데이터를 요청할 경우..
대신증권 CYBOS PLUS 시작하기 (6) - 분봉차트 데이터 조회하기학습 목표차트를 조회하는 여러 가지 방법하나의 함수로 분봉부터 일봉 주봉 월봉까지 모두 다 해결할 수 있을까 ?분봉 차트 데이터 조회하기지난 게시글에서 일봉 차트 데이터를 조회하는 방법에 대하여 살펴봤었는데, 사실 분봉 차트 데이터를 조회하는 방법도 숙지하고 있어야 한다. 간단하게 결론부터 설명하자면 분봉 차트 데이터는 `SetInputValue(6, ord("D"))` 부분에 있는 "D"를 "m"으로 변경해주기만 하면 되고, 주봉은 "W"로, 월봉은 "M"으로 변경해주면 된다. 각각 Day, min, Week, Month의 약자이므로 이 부분은 크게 어렵지 않다. 다만 요청하고자 하는 데이터의 형태에 따라 각기 다른 형태의 데이터를 전달받아야 한다는 점이 문제이다. 즉, 분봉 차트 데이터를 요청할 경우..
2024.08.04 -
학습 목표차트 데이터 조회 시 전달해야 하는 인자 목록차트 데이터 조회 시 데이터 수신 방법차트 데이터 조회 함수 캡슐화앞전 게시글에서 현재가를 조회하는 모듈(`Dscbo1.StockMst`)을 살펴보았고, 그 사용 방법에 대해서도 간략하게 살펴보았다. 사실 이쯤 되면 대신증권 홈페이지에 있는 도움말만 보고도 스스로 해당 함수의 기능을 구현할 수 있을 정도로 간단한 방식으로 동작한다는 것을 알게 되었을 것이다. 다만 차트 데이터를 조회하는 모듈(`CpSysDib.StockChart`)의 경우에는 데이터를 요청한 후 반환받는 함수인 `GetHeaderValue()` 뿐만 아니라 `GetDataValue()` 함수를 사용해야 한다는 점에서 현재가를 조회하는 모듈과는 다소 다른 방법으로 동작하는 것처럼 보일 ..
대신증권 CYBOS PLUS 시작하기 (5) - 일봉차트 데이터 조회하기학습 목표차트 데이터 조회 시 전달해야 하는 인자 목록차트 데이터 조회 시 데이터 수신 방법차트 데이터 조회 함수 캡슐화앞전 게시글에서 현재가를 조회하는 모듈(`Dscbo1.StockMst`)을 살펴보았고, 그 사용 방법에 대해서도 간략하게 살펴보았다. 사실 이쯤 되면 대신증권 홈페이지에 있는 도움말만 보고도 스스로 해당 함수의 기능을 구현할 수 있을 정도로 간단한 방식으로 동작한다는 것을 알게 되었을 것이다. 다만 차트 데이터를 조회하는 모듈(`CpSysDib.StockChart`)의 경우에는 데이터를 요청한 후 반환받는 함수인 `GetHeaderValue()` 뿐만 아니라 `GetDataValue()` 함수를 사용해야 한다는 점에서 현재가를 조회하는 모듈과는 다소 다른 방법으로 동작하는 것처럼 보일 ..
2024.08.04 -
학습 목표현재가 조회 함수 사용해보기현재가 조회 함수 캡슐화대신증권의 홈페이지에 따르면, CYBOS PLUS에서 현재가를 조회할 수 있는 함수(=오브젝트)는 `StockMst()`이다. 이번 게시글에서는 `StockMst()` 오브젝트를 포함하는 함수를 구현하고, 더 나아가 우리가 해당 함수의 인자(=parameter)로 종목코드만 전달해주면 그 종목의 현재가를 반환해주도록 하나의 캡슐 함수를 제작할 예정이다. (1) 현재가 조회 모듈의 인스턴스 생성하기현재가를 조회하는 함수를 제작하기 전에 앞서, 이전 게시글에서 살펴봤던 것과 같이 현재가를 조회하는 모듈의 인스턴스를 생성해주어야 한다. 이 모듈의 이름은 아래의 이미지와 같이 대신증권 도움말을 보면 어렵지 않게 확인할 수 있다. 아래 이미지에서 주황색..
대신증권 CYBOS PLUS 시작하기 (4) - 특정종목 현재가 조회하기학습 목표현재가 조회 함수 사용해보기현재가 조회 함수 캡슐화대신증권의 홈페이지에 따르면, CYBOS PLUS에서 현재가를 조회할 수 있는 함수(=오브젝트)는 `StockMst()`이다. 이번 게시글에서는 `StockMst()` 오브젝트를 포함하는 함수를 구현하고, 더 나아가 우리가 해당 함수의 인자(=parameter)로 종목코드만 전달해주면 그 종목의 현재가를 반환해주도록 하나의 캡슐 함수를 제작할 예정이다. (1) 현재가 조회 모듈의 인스턴스 생성하기현재가를 조회하는 함수를 제작하기 전에 앞서, 이전 게시글에서 살펴봤던 것과 같이 현재가를 조회하는 모듈의 인스턴스를 생성해주어야 한다. 이 모듈의 이름은 아래의 이미지와 같이 대신증권 도움말을 보면 어렵지 않게 확인할 수 있다. 아래 이미지에서 주황색..
2024.08.03 -
학습 목표대신증권의 모듈과 메서드(=함수) 살펴보기지난 게시글에서는 `IsConnect()` 함수를 통해 대신증권 서버와 연결되어 있는지에 대해 살펴보고, 그 결과값이 몇인지에 따라 각기 다른 내용을 출력하도록 하는 기능까지 구현했다. 여기서 우리가 더 추가적인 기능을 구현하기 위해서는 대신증권 CYBOS PLUS에서 제공하는 모듈로는 어떠한 것들이 있는지 이해해야 한다. (1) 상태 확인용 모듈: CpUtil.CpCybos우리가 서버와의 연결 여부를 확인할 때 `self.cybos`로 정의해두었던 모듈인 `CpUtil.CpCybos`는 기본적으로 CYBOS PLUS의 상태를 확인할 수 있는 모듈이다. 즉, 우리가 서버와의 연결 여부를 확인할 때 사용했던 `IsConnect` 함수는 기본적으로 접속 상..
대신증권 CYBOS PLUS 시작하기 (3) - 대신증권 모듈 이해하기학습 목표대신증권의 모듈과 메서드(=함수) 살펴보기지난 게시글에서는 `IsConnect()` 함수를 통해 대신증권 서버와 연결되어 있는지에 대해 살펴보고, 그 결과값이 몇인지에 따라 각기 다른 내용을 출력하도록 하는 기능까지 구현했다. 여기서 우리가 더 추가적인 기능을 구현하기 위해서는 대신증권 CYBOS PLUS에서 제공하는 모듈로는 어떠한 것들이 있는지 이해해야 한다. (1) 상태 확인용 모듈: CpUtil.CpCybos우리가 서버와의 연결 여부를 확인할 때 `self.cybos`로 정의해두었던 모듈인 `CpUtil.CpCybos`는 기본적으로 CYBOS PLUS의 상태를 확인할 수 있는 모듈이다. 즉, 우리가 서버와의 연결 여부를 확인할 때 사용했던 `IsConnect` 함수는 기본적으로 접속 상..
2024.07.29 -
학습 목표캡슐화 이해하기IsConnect 함수 캡슐화하기캡슐화라는 것은 특정 함수를 어디서 호출하든지 간에 동일한 논리 구조에 따라 동작하는 함수를 생성하는 것이라 생각하면 된다. 이번 게시글에서는 `IsConnect()` 함수를 하나의 캡슐화를 통해 프로그램 실행과 동시에 연결 성공 여부를 판단하도록 하는 함수를 제작할 예정이다. (1) 캡슐화란기본적으로 A라는 값을 전달했을 때 A라는 숫자에 10을 더한 숫자를 반환해주는 기능을 구현하고 싶다고 가정해보자. 그렇다면 캡슐화라는 이름을 가진 함수(`capsulation()`)는 A와 같이 특정 값을 전달받아야 하는데, 이를 함수의 인자(parameter)라고 한다. 함수는 얼마든지 많은 인자를 전달받을 수 있고 인자를 전달받지 않고도 얼마든지 구현할 ..
대신증권 CYBOS PLUS 시작하기 (2) - 연결함수 캡슐화학습 목표캡슐화 이해하기IsConnect 함수 캡슐화하기캡슐화라는 것은 특정 함수를 어디서 호출하든지 간에 동일한 논리 구조에 따라 동작하는 함수를 생성하는 것이라 생각하면 된다. 이번 게시글에서는 `IsConnect()` 함수를 하나의 캡슐화를 통해 프로그램 실행과 동시에 연결 성공 여부를 판단하도록 하는 함수를 제작할 예정이다. (1) 캡슐화란기본적으로 A라는 값을 전달했을 때 A라는 숫자에 10을 더한 숫자를 반환해주는 기능을 구현하고 싶다고 가정해보자. 그렇다면 캡슐화라는 이름을 가진 함수(`capsulation()`)는 A와 같이 특정 값을 전달받아야 하는데, 이를 함수의 인자(parameter)라고 한다. 함수는 얼마든지 많은 인자를 전달받을 수 있고 인자를 전달받지 않고도 얼마든지 구현할 ..
2024.07.26 -
이전에 첫 번째 게시글에서는 대신증권 CYBOS PLUS의 통신 방식을 간략하게 알아보았고, 두 번째 게시글에서는 통신 방식에 대해 하나의 예시를 들어 조금 더 자세하게 살펴보았다. 이번 게시글에서는 대신증권 CYBOS PLUS와 연결해보도록 하자. 그 전에, 대신증권의 CYBOS PLUS는 파이썬 언어를 통해 구현할 예정이며, 해당 시스템을 구현하기 위한 IDE인 파이참의 설치와 파이참 설정 방법은 해당 텍스트에 걸려 있는 링크를 통해 설치하고 설정을 변경하고 오도록 하자. (1) trade_cybos 프로젝트 생성프로젝트명은 `trade_cybos`로 하고, 해당 프로젝트의 전체적인 내용을 담을 파일 명을 `Boss.py`로 하여 프로젝트를 생성했다. 프로젝트 생성은 파일(F) - 새 프로젝트를 ..
대신증권 CYBOS PLUS 시작하기 (1) - 기본구조 구현하기이전에 첫 번째 게시글에서는 대신증권 CYBOS PLUS의 통신 방식을 간략하게 알아보았고, 두 번째 게시글에서는 통신 방식에 대해 하나의 예시를 들어 조금 더 자세하게 살펴보았다. 이번 게시글에서는 대신증권 CYBOS PLUS와 연결해보도록 하자. 그 전에, 대신증권의 CYBOS PLUS는 파이썬 언어를 통해 구현할 예정이며, 해당 시스템을 구현하기 위한 IDE인 파이참의 설치와 파이참 설정 방법은 해당 텍스트에 걸려 있는 링크를 통해 설치하고 설정을 변경하고 오도록 하자. (1) trade_cybos 프로젝트 생성프로젝트명은 `trade_cybos`로 하고, 해당 프로젝트의 전체적인 내용을 담을 파일 명을 `Boss.py`로 하여 프로젝트를 생성했다. 프로젝트 생성은 파일(F) - 새 프로젝트를 ..
2024.07.22