AUTO TRADE
좌측 카테고리를 눌러서 주제를 선택하시기 바랍니다.
-
학습 목표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 -
지난 게시글(클릭 시 이동)을 통해 대신증권의 CYBOS PLUS 내 통신 방식은 어떠한 방식으로 이루어지는지에 대해 알아보았다. 다시 한 번 정리하자면, 대신증권의 통신 방식은 크게 요청/응답 방식과 구독/생산 방식으로 구분할 수 있으나, 그 구분은 어디까지나 단발성 데이터 요청인지 아니면 실시간 주가 데이터 수신과 같은 지속성 데이터 요청인지에만 기준을 두면 되고, 근본적으로 데이터를 입력하는 방식은 `SetInputValue()`를 통해서 이루어지며 데이터 입력 후의 데이터 요청은 `Request()`나 `BlockRequest()` 또는 `Subscribe()` 함수를 통해 데이터를 요청하고 `GetHeaderValue()`나 `GetDataValue()` 함수를 통해 데이터를 불러온다. 이제 사..
대신증권 CYBOS PLUS 이해하기 (2) - 통신방식 이해하기지난 게시글(클릭 시 이동)을 통해 대신증권의 CYBOS PLUS 내 통신 방식은 어떠한 방식으로 이루어지는지에 대해 알아보았다. 다시 한 번 정리하자면, 대신증권의 통신 방식은 크게 요청/응답 방식과 구독/생산 방식으로 구분할 수 있으나, 그 구분은 어디까지나 단발성 데이터 요청인지 아니면 실시간 주가 데이터 수신과 같은 지속성 데이터 요청인지에만 기준을 두면 되고, 근본적으로 데이터를 입력하는 방식은 `SetInputValue()`를 통해서 이루어지며 데이터 입력 후의 데이터 요청은 `Request()`나 `BlockRequest()` 또는 `Subscribe()` 함수를 통해 데이터를 요청하고 `GetHeaderValue()`나 `GetDataValue()` 함수를 통해 데이터를 불러온다. 이제 사..
2024.07.21 -
지난 게시글에서 CYBOS 5와 CYBOS PLUS를 설치했는데, 이번 게시글에서 부터는 CYBOS PLUS는 어떠한 방식으로 동작하는지와 기본적으로 어떠한 함수들이 존재하는지에 대해 정리해보고자 한다. CYBOS PLUS, 데이터 요청과 수신 방식 알아보기대신증권 홈페이지(클릭 시 이동)에 따르면, 대신증권의 Open API 통신 방식은 크게 ① 요청/응답(Requect/Reply, RQ/RP) 방식과 ② 구독/생산(Subscribe/Publish, SB/PB) 방식으로 동작한다고 설명하고 있다. 대체로 키움증권 영웅문의 동작 방식과 거의 동일한데, ①번의 요청/응답 방식은 단순하게 1회 요청에 대한 1회 응답의 방식을 갖고 있으며 ②번의 구독/생산 방식은 1회 요청에 대한 다회 응답의 방식을 갖고 ..
대신증권 CYBOS PLUS 이해하기 (1) - 통신 방식 알아보기지난 게시글에서 CYBOS 5와 CYBOS PLUS를 설치했는데, 이번 게시글에서 부터는 CYBOS PLUS는 어떠한 방식으로 동작하는지와 기본적으로 어떠한 함수들이 존재하는지에 대해 정리해보고자 한다. CYBOS PLUS, 데이터 요청과 수신 방식 알아보기대신증권 홈페이지(클릭 시 이동)에 따르면, 대신증권의 Open API 통신 방식은 크게 ① 요청/응답(Requect/Reply, RQ/RP) 방식과 ② 구독/생산(Subscribe/Publish, SB/PB) 방식으로 동작한다고 설명하고 있다. 대체로 키움증권 영웅문의 동작 방식과 거의 동일한데, ①번의 요청/응답 방식은 단순하게 1회 요청에 대한 1회 응답의 방식을 갖고 있으며 ②번의 구독/생산 방식은 1회 요청에 대한 다회 응답의 방식을 갖고 ..
2024.07.21 -
증권사를 옮기게 된 배경나는 원래는 키움증권 영웅문을 애용해왔었는데, 도저히 못쓰겠다 싶어서 이번에는 증권사 이전을 결심했다. 잘 돌아가던 프로그램은 고사하고, 관련 데이터를 구축하거나 하는 데에 있어서 여러 가지 오류들(특히 TR 회신과 관련된 제한)이 많았기 때문이다.사실 오류로 인해서 시스템 전체를 들어내고 다른 증권사를 이용하는 데에 있어서 무엇보다도 걱정됐던 부분은 단 하나, '여태까지 만들었던 것들을 싹다 옮기는 걸 할 수 있을까'하는 걱정이었다. 그럼에도 증권사를 옮기고자 하는 데에 큰 결심을 내릴 수 있었던 이유는 '증권사 거래 수수료 혜택'도 있기 때문이었다. 키움증권은 현재 매수도 모두 0.015%를 내면서 거래하고 있는데, 대신증권에서는 이벤트를 진행하고 있고 첫 한 달만 무료긴 하지..
대신증권 CYBOS PLUS 설치기 (1) - 난 증권사를 옮기겠다.증권사를 옮기게 된 배경나는 원래는 키움증권 영웅문을 애용해왔었는데, 도저히 못쓰겠다 싶어서 이번에는 증권사 이전을 결심했다. 잘 돌아가던 프로그램은 고사하고, 관련 데이터를 구축하거나 하는 데에 있어서 여러 가지 오류들(특히 TR 회신과 관련된 제한)이 많았기 때문이다.사실 오류로 인해서 시스템 전체를 들어내고 다른 증권사를 이용하는 데에 있어서 무엇보다도 걱정됐던 부분은 단 하나, '여태까지 만들었던 것들을 싹다 옮기는 걸 할 수 있을까'하는 걱정이었다. 그럼에도 증권사를 옮기고자 하는 데에 큰 결심을 내릴 수 있었던 이유는 '증권사 거래 수수료 혜택'도 있기 때문이었다. 키움증권은 현재 매수도 모두 0.015%를 내면서 거래하고 있는데, 대신증권에서는 이벤트를 진행하고 있고 첫 한 달만 무료긴 하지..
2024.07.14