분류 전체보기
-
지난 게시글(클릭 시 이동)을 통해 대신증권의 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 -
지난 게시글에서는 SendOrder 메서드를 통해 주문을 접수하는 함수를 제작했고, 이번 게시글에서는 해당 함수를 활용해서 매수 매도 함수가 정상적으로 동작하도록 하기 위한 함수를 구현할 예정이다. def algo1_buy_1():을 제작해보자. 지난 게시글에서 작성했던 부분에 이어, def algo1_buy_1() 함수 내에 self._send_order() 함수를 추가해주도록 하자. """알고리즘 매수함수1""" def algo1_buy_1(): print("알고리즘1의 첫 번째 매수함수를 실행합니다.") self._send_order(): 우리는 지난 게시글에서 def _send_order() 함수를 제작하면서 SendOrder 메서드는 상당히 많은 파라미터를 요구한다는 점을 확인할 수 있었는데, ..
[자동 매매 시스템 구축하기] 매수 매도 함수 구현하기 (3) - 매수 매도 함수 발생 시 디테일한 데이터 처리 구현하기 ②지난 게시글에서는 SendOrder 메서드를 통해 주문을 접수하는 함수를 제작했고, 이번 게시글에서는 해당 함수를 활용해서 매수 매도 함수가 정상적으로 동작하도록 하기 위한 함수를 구현할 예정이다. def algo1_buy_1():을 제작해보자. 지난 게시글에서 작성했던 부분에 이어, def algo1_buy_1() 함수 내에 self._send_order() 함수를 추가해주도록 하자. """알고리즘 매수함수1""" def algo1_buy_1(): print("알고리즘1의 첫 번째 매수함수를 실행합니다.") self._send_order(): 우리는 지난 게시글에서 def _send_order() 함수를 제작하면서 SendOrder 메서드는 상당히 많은 파라미터를 요구한다는 점을 확인할 수 있었는데, ..
2022.12.29 -
지난 게시글에서는 매수 함수와 매도 함수가 동작하는 그 로직에 대해 살펴봤고, 이번 게시글에서는 직접 매수 함수와 매도 함수를 만들어볼 예정이다. 물론 알고리즘은 어떻게 동작하는지 알고리즘은 어떤 로직으로 동작해야 하는지 등에 대해 모두 살펴봤었지만 아직은 그 내용이 익숙하지 않을 수 있다. 그래도 일단은 한 번 만들어 보고 그 후에 오류가 발생한다면 그 내용을 수정하는 방향으로 진행해보고자 한다. (물론 제작 과정에서 본인이 직접 겪은 오류들은 발생하지 않도록 할 것이다.) 제목에서 일단 매수와 매도를 따로 구분해놓긴 했지만, 실질적으로 두 함수는 모두 SendOrder 라는 하나의 메서드를 통해 동작한다. 차이점이 있다면 단순하게 매수를 실행할 함수에서 사용되는가 아니면 매도를 실행할 함수에서 사용되..
[자동 매매 시스템 구축하기] 매수 매도 함수 구현하기 (2) - 매수 매도 함수 발생 시 디테일한 데이터 처리 구현하기 ①지난 게시글에서는 매수 함수와 매도 함수가 동작하는 그 로직에 대해 살펴봤고, 이번 게시글에서는 직접 매수 함수와 매도 함수를 만들어볼 예정이다. 물론 알고리즘은 어떻게 동작하는지 알고리즘은 어떤 로직으로 동작해야 하는지 등에 대해 모두 살펴봤었지만 아직은 그 내용이 익숙하지 않을 수 있다. 그래도 일단은 한 번 만들어 보고 그 후에 오류가 발생한다면 그 내용을 수정하는 방향으로 진행해보고자 한다. (물론 제작 과정에서 본인이 직접 겪은 오류들은 발생하지 않도록 할 것이다.) 제목에서 일단 매수와 매도를 따로 구분해놓긴 했지만, 실질적으로 두 함수는 모두 SendOrder 라는 하나의 메서드를 통해 동작한다. 차이점이 있다면 단순하게 매수를 실행할 함수에서 사용되는가 아니면 매도를 실행할 함수에서 사용되..
2022.12.29 -
실제로 여러 프로그래밍 프로그램(python, C++ 등)들을 사용하다보면 오류가 발생하는 것을 어렵지 않게 확인할 수 있다. 사실 파이썬에 대한 얕은 지식을 바탕으로 한 아주 작고 개인적인 견해를 내놓자면 프로그래밍은 사실 오류를 찾아내고 오류가 없도록 버그를 정리하는 일이 모두라고 봐도 무방하다고 본다. 그렇기 때문에 어떤 오류가 발생했을 경우에 그것을 보다 편리하고 직관적으로 확인할 수 있도록 하는 작업이 필요하다. 하지만 파이썬을 시작한지 얼마 지나지 않은 입문 개발자의 경우에는 아래와 같은 코드를 자주 사용할 것이다. print("여기에요?") ##### 코드 ##### print("아님 여기에요?") ##### 코드 ##### 이와 같은 코드를 작성해놓고, '여기에요?'가 잘 출력되었다면 그 ..
파이썬 로그(log)와 포매터 사용하기실제로 여러 프로그래밍 프로그램(python, C++ 등)들을 사용하다보면 오류가 발생하는 것을 어렵지 않게 확인할 수 있다. 사실 파이썬에 대한 얕은 지식을 바탕으로 한 아주 작고 개인적인 견해를 내놓자면 프로그래밍은 사실 오류를 찾아내고 오류가 없도록 버그를 정리하는 일이 모두라고 봐도 무방하다고 본다. 그렇기 때문에 어떤 오류가 발생했을 경우에 그것을 보다 편리하고 직관적으로 확인할 수 있도록 하는 작업이 필요하다. 하지만 파이썬을 시작한지 얼마 지나지 않은 입문 개발자의 경우에는 아래와 같은 코드를 자주 사용할 것이다. print("여기에요?") ##### 코드 ##### print("아님 여기에요?") ##### 코드 ##### 이와 같은 코드를 작성해놓고, '여기에요?'가 잘 출력되었다면 그 ..
2022.12.24 -
어느 날 갑자기 발생한 오류이다. 본인은 기본적으로 카카오톡 나와의 채팅방을 통해 압축 파일을 업로드한 후 데스크탑과 노트북에 파일을 옮기며 코드를 수정하고 수저이 완료되면 다시 데스크탑으로 옮기는 등의 복잡한 수작업을 통해 작업하고 있었다. 하지만 여느 때처럼 노트북으로 파일을 가져와 코드를 수정하려던 차에 다음과 같은 오류가 발생했다. 별 짓을 다 해봐도 고쳐지지 않는 오류라 그런지 열이 잔뜩 받았다. 세 줄 요약 환경 변수니 뭐니 다 하라 하는데, 변경사항도 없었는데 갑자기 안 됐다. 그렇다보니 재설치해도 안 되더라. 오류가 발생한 py 파일의 코드를 그대로 다른 파일로 복붙해서 사용하니 되더라. 이름도 재지정해도 된다. 근데 당신에게 발생한 오류의 원인은 확실하게 모르니 다른 방법들도 시도해보기 ..
[PyCharm] CreateProcess error=2, 지정된 파일을 찾을 수 없습니다.어느 날 갑자기 발생한 오류이다. 본인은 기본적으로 카카오톡 나와의 채팅방을 통해 압축 파일을 업로드한 후 데스크탑과 노트북에 파일을 옮기며 코드를 수정하고 수저이 완료되면 다시 데스크탑으로 옮기는 등의 복잡한 수작업을 통해 작업하고 있었다. 하지만 여느 때처럼 노트북으로 파일을 가져와 코드를 수정하려던 차에 다음과 같은 오류가 발생했다. 별 짓을 다 해봐도 고쳐지지 않는 오류라 그런지 열이 잔뜩 받았다. 세 줄 요약 환경 변수니 뭐니 다 하라 하는데, 변경사항도 없었는데 갑자기 안 됐다. 그렇다보니 재설치해도 안 되더라. 오류가 발생한 py 파일의 코드를 그대로 다른 파일로 복붙해서 사용하니 되더라. 이름도 재지정해도 된다. 근데 당신에게 발생한 오류의 원인은 확실하게 모르니 다른 방법들도 시도해보기 ..
2022.12.10 -
이번 게시글에서부터는 실시간으로 등록되어 있는 데이터를 기반으로 매수와 매도 함수가 동작하도록 하는 로직을 구현하는 방법에 대해 살펴볼 예정이다. 특정 종목을 실시간으로 등록하는 방법은 실시간 데이터 얻기 (1) 게시글부터 다루고 있으니, 아직 구현하지 않았다면 해당 게시글을 바탕으로 기능을 구현하고 나서 넘어 오도록 하자. 실시간 데이터를 기반으로 한 거래의 방법 실시간 데이터를 기반으로 거래를 진행하는 방법은 의외로 단순하다. 현재가 데이터가 발생했을 때, 해당 가격이 기존에 설정한 매수 가격의 범위 내에 들어가 있다면 매수 함수가 동작하도록 하면 된다. 매수 함수는 기본적으로 SendOrder 함수를 통해 동작하게 되는데, 아직은 함수를 구현하지 않은 상태일 것이다. 그렇다면 기존에 설정한 매수 가..
[자동 매매 시스템 구축하기] 매수 매도 함수 구현하기 (1) - 실시간 등록을 기반으로 한 매수 매도 함수의 동작 방법이번 게시글에서부터는 실시간으로 등록되어 있는 데이터를 기반으로 매수와 매도 함수가 동작하도록 하는 로직을 구현하는 방법에 대해 살펴볼 예정이다. 특정 종목을 실시간으로 등록하는 방법은 실시간 데이터 얻기 (1) 게시글부터 다루고 있으니, 아직 구현하지 않았다면 해당 게시글을 바탕으로 기능을 구현하고 나서 넘어 오도록 하자. 실시간 데이터를 기반으로 한 거래의 방법 실시간 데이터를 기반으로 거래를 진행하는 방법은 의외로 단순하다. 현재가 데이터가 발생했을 때, 해당 가격이 기존에 설정한 매수 가격의 범위 내에 들어가 있다면 매수 함수가 동작하도록 하면 된다. 매수 함수는 기본적으로 SendOrder 함수를 통해 동작하게 되는데, 아직은 함수를 구현하지 않은 상태일 것이다. 그렇다면 기존에 설정한 매수 가..
2022.12.08 -
지난 게시글에서 종목코드와 전일 종가 데이터를 인자로 전달받아 상한가와 하한가를 계산해내는 함수를 구현했다. 그렇다면 이제 실제 데이터를 입력해봄으로써 상하한가 데이터를 올바르게 계산하고 있는지를 확인해보도록 하자. 여태까지 제작했던 게시글을 새로운 파일에서 새로운 클래스 내에 입력해서 테스트해볼 것인데, 그 코드는 아래와 같다. def __init__(self): 부분에서는 해당 클래스가 실행되었을 때 실행되는 부분을 의미한다. 즉, test라는 클래스가 호출됐을 때 self.kospi_code_list 와 self.kosdaq_code_list 변수 내에 각각 ['005930', '066580'], ['000020', '000040']이라는 데이터를 입력하도록 하는 것이다. 다만 우리는..
[자동 매매 시스템 구축하기] 상하한가 데이터 계산하기 (4) - 실제 데이터 확인해보기지난 게시글에서 종목코드와 전일 종가 데이터를 인자로 전달받아 상한가와 하한가를 계산해내는 함수를 구현했다. 그렇다면 이제 실제 데이터를 입력해봄으로써 상하한가 데이터를 올바르게 계산하고 있는지를 확인해보도록 하자. 여태까지 제작했던 게시글을 새로운 파일에서 새로운 클래스 내에 입력해서 테스트해볼 것인데, 그 코드는 아래와 같다. def __init__(self): 부분에서는 해당 클래스가 실행되었을 때 실행되는 부분을 의미한다. 즉, test라는 클래스가 호출됐을 때 self.kospi_code_list 와 self.kosdaq_code_list 변수 내에 각각 ['005930', '066580'], ['000020', '000040']이라는 데이터를 입력하도록 하는 것이다. 다만 우리는..
2022.12.03 -
※ 내돈 내산임. 애초에 광고같은 거 안 들어옴.세줄 요약이렇게 무겁고 튼튼한 메인보드 처음 봄(박스 들 때부터 느낌이 다름)H보드만 써왔던 나에게 램 슬롯 4개에 M.2 방열판과 나사 없는 M.2 설치는 아주 짜릿한 경험이었음.본인은 RGB를 비선호하기에, RGB를 끌 수 있는 기능이 있다는 건 정말이지 매력적인 기능임.서론이번에 나온 인텔 CPU가 13000대인 걸 생각하면, 본인 CPU는 i5-6500으로 얼추 구매한지 7년차에 접어드는 cpu임. 그간 램이나 그래픽카드는 계속 꾸준히 업그레이드 해왔으나 CPU는 메인보드도 같이 업그레이드해야 하기 때문에 비용 문제도 있거니와, 썩 느리다는 생각이 들지 않아서 업그레이드를 미뤄왔음. 하지만 최근 들어 두 개의 프로그램을 실행하면(게임하면서 유투브를 ..
기가바이트 B650M AORUS ELITE 제이씨현 메인보드 구매 후기※ 내돈 내산임. 애초에 광고같은 거 안 들어옴.세줄 요약이렇게 무겁고 튼튼한 메인보드 처음 봄(박스 들 때부터 느낌이 다름)H보드만 써왔던 나에게 램 슬롯 4개에 M.2 방열판과 나사 없는 M.2 설치는 아주 짜릿한 경험이었음.본인은 RGB를 비선호하기에, RGB를 끌 수 있는 기능이 있다는 건 정말이지 매력적인 기능임.서론이번에 나온 인텔 CPU가 13000대인 걸 생각하면, 본인 CPU는 i5-6500으로 얼추 구매한지 7년차에 접어드는 cpu임. 그간 램이나 그래픽카드는 계속 꾸준히 업그레이드 해왔으나 CPU는 메인보드도 같이 업그레이드해야 하기 때문에 비용 문제도 있거니와, 썩 느리다는 생각이 들지 않아서 업그레이드를 미뤄왔음. 하지만 최근 들어 두 개의 프로그램을 실행하면(게임하면서 유투브를 ..
2022.11.30 -
지난 게시글에서 호가가격단위 미만 절사를 적용하는 함수를 구현했으니, 이번에는 전달받은 종목코드를 기반으로 시장을 구분하고 그 시장 구분에 따라 각기 달리 적용되는 가격 범위 내에서 각기 다른 measure 값을 전달하도록 하는 함수를 구현해보도록 하자. 상하한가 계산 함수 생성하기 이번에 생성할 함수는 종목코드와 전일 종가(이하 기준 가격) 데이터를 받아온 후에 그 데이터를 기반으로 코스피와 코스닥 등의 시장 구분을 하고, 시장 구분에 따라 각기 다른 함수를 적용하여 상하한가를 계산하는 함수이다. def cal_limit(self, item_code, yclose): yclose = int(yclose) price_range = float(yclose * 0.3) 가장 먼저 cal_limit 이라는 이..
[자동 매매 시스템 구축하기] 상하한가 데이터 계산하기 (3) - 상하한가 계산 함수 생성하기지난 게시글에서 호가가격단위 미만 절사를 적용하는 함수를 구현했으니, 이번에는 전달받은 종목코드를 기반으로 시장을 구분하고 그 시장 구분에 따라 각기 달리 적용되는 가격 범위 내에서 각기 다른 measure 값을 전달하도록 하는 함수를 구현해보도록 하자. 상하한가 계산 함수 생성하기 이번에 생성할 함수는 종목코드와 전일 종가(이하 기준 가격) 데이터를 받아온 후에 그 데이터를 기반으로 코스피와 코스닥 등의 시장 구분을 하고, 시장 구분에 따라 각기 다른 함수를 적용하여 상하한가를 계산하는 함수이다. def cal_limit(self, item_code, yclose): yclose = int(yclose) price_range = float(yclose * 0.3) 가장 먼저 cal_limit 이라는 이..
2022.11.27 -
지난 게시글에서는 주식시장에서 상하한가 데이터가 어떠한 절차로 계산되는지에 대해 살펴보았다. 이번 게시글에서는 그 개념을 함수를 생성하고 함수 내에 계산 로직을 추가하는 등의 기능을 구현함으로써 상하한가 데이터를 자동적으로 계산하도록 할 것이다. 코스피와 코스닥을 먼저 구분해주자. 코스피와 코스닥을 구분하여 종목코드 리스트를 얻어오는 이유는 단순하다. 해당 종목이 상장된 시장이 코스피인가 코스닥인가에 따라 호가가격단위 미만 절사 기준 금액이 달라지기 때문이다. 실제로 대한민국 증권시장에는 약 2,000개가 넘는 종목이 상장되어 있는데, 다행히도 그 데이터를 매일매일 저장해줄 필요는 없다. 왜나하면 키움증권 Open API 내에서는 코스피 시장에 상장된 종목 리스트와 코스닥 시장에 상장된 종목 리스트를 반..
[자동 매매 시스템 구축하기] 상하한가 데이터 계산하기 (2) - 호가가격단위 절사 함수 생성하기지난 게시글에서는 주식시장에서 상하한가 데이터가 어떠한 절차로 계산되는지에 대해 살펴보았다. 이번 게시글에서는 그 개념을 함수를 생성하고 함수 내에 계산 로직을 추가하는 등의 기능을 구현함으로써 상하한가 데이터를 자동적으로 계산하도록 할 것이다. 코스피와 코스닥을 먼저 구분해주자. 코스피와 코스닥을 구분하여 종목코드 리스트를 얻어오는 이유는 단순하다. 해당 종목이 상장된 시장이 코스피인가 코스닥인가에 따라 호가가격단위 미만 절사 기준 금액이 달라지기 때문이다. 실제로 대한민국 증권시장에는 약 2,000개가 넘는 종목이 상장되어 있는데, 다행히도 그 데이터를 매일매일 저장해줄 필요는 없다. 왜나하면 키움증권 Open API 내에서는 코스피 시장에 상장된 종목 리스트와 코스닥 시장에 상장된 종목 리스트를 반..
2022.11.27