AUTO TRADE
좌측 카테고리를 눌러서 주제를 선택하시기 바랍니다.
-
지난 게시글을 통해 설치와 설정하는 방법에 대해 다루었고, 이번 포스팅에서는 파이썬 내에서 MySQL과 연결하는 방법과 사용방법에 대해 살펴볼 예정이다. 일단 이 MySQL은 앞전에서 다루었던 차트 데이터 조회에 대한 부분이 반드시 선행되어야만 아래의 내용들을 사용할 수 있기 때문에 아직 차트 데이터에 대한 코드 구축이 안 되어 있다면 그 글을 먼저 보고 넘어오도록 하자. 물론 차트 데이터 저장이 아닌 다른 목적으로 이용하고자 하는 경우라면 바로 읽어도 아무런 상관이 없다. 그리고 내용을 알아보기 전에 앞서, 이번 포스팅에서 사용할 모듈은 sql alchemy와 mysql 두 개인데, 파이썬에서 설치하는 방법은 파이썬 prompt를 통해 pip install sqlalchemy, pip install m..
[자동 매매 시스템 구축하기] 차트 데이터 조회 여부 (2) - MySQL 연동지난 게시글을 통해 설치와 설정하는 방법에 대해 다루었고, 이번 포스팅에서는 파이썬 내에서 MySQL과 연결하는 방법과 사용방법에 대해 살펴볼 예정이다. 일단 이 MySQL은 앞전에서 다루었던 차트 데이터 조회에 대한 부분이 반드시 선행되어야만 아래의 내용들을 사용할 수 있기 때문에 아직 차트 데이터에 대한 코드 구축이 안 되어 있다면 그 글을 먼저 보고 넘어오도록 하자. 물론 차트 데이터 저장이 아닌 다른 목적으로 이용하고자 하는 경우라면 바로 읽어도 아무런 상관이 없다. 그리고 내용을 알아보기 전에 앞서, 이번 포스팅에서 사용할 모듈은 sql alchemy와 mysql 두 개인데, 파이썬에서 설치하는 방법은 파이썬 prompt를 통해 pip install sqlalchemy, pip install m..
2022.07.08 -
지난 게시글에서 차트 데이터를 조회하는 방법에 대해 모두 살펴봤고, 이번 게시글에서는 드디어 데이터베이스(DB)와 연동하는 방법에 대해 살펴볼 예정이다. 사실 자동 매매 시스템을 구축하는 데에 있어서 데이터베이스를 활용하는 것은 상당히 중요하다. 백테스트 시에는 저장돼있는 주가 데이터를 불러와서 사용해야 하고, 실거래 시에도 분할 매매를 구현하기 위해서는 데이터베이스 내에 계좌 잔고 테이블을 생성해서 사용해줘야 하기도 하다. 따라서 이번 목차에서는 MySQL을 설치하고 MySQL과 파이썬을 연결하고 pandas의 to_sql과 real_sql을 사용하는 방법에 대해 알아볼 예정이다. 일단 프로그램부터 깔아보자. MySQL 다운로드 링크 : https://www.mysql.com/downloads/ 위 링..
[자동 매매 시스템 구축하기] 차트 데이터 조회 여부 (1) : MySQL 설치지난 게시글에서 차트 데이터를 조회하는 방법에 대해 모두 살펴봤고, 이번 게시글에서는 드디어 데이터베이스(DB)와 연동하는 방법에 대해 살펴볼 예정이다. 사실 자동 매매 시스템을 구축하는 데에 있어서 데이터베이스를 활용하는 것은 상당히 중요하다. 백테스트 시에는 저장돼있는 주가 데이터를 불러와서 사용해야 하고, 실거래 시에도 분할 매매를 구현하기 위해서는 데이터베이스 내에 계좌 잔고 테이블을 생성해서 사용해줘야 하기도 하다. 따라서 이번 목차에서는 MySQL을 설치하고 MySQL과 파이썬을 연결하고 pandas의 to_sql과 real_sql을 사용하는 방법에 대해 알아볼 예정이다. 일단 프로그램부터 깔아보자. MySQL 다운로드 링크 : https://www.mysql.com/downloads/ 위 링..
2022.07.08 -
지난 게시글에서 삼성전자(005930)의 3분봉 차트 데이터를 데이터프레임(DataFrame)을 기반으로 데이터를 정리하는 방법까지 작성했다. 사실 이번 게시글을 코드를 구축하기 보다는 코드 실행 시 발생할 수 있는 오류 상황에 대처하는 방법에 대해 소개하고자 하는 목적이 크다. 차트 데이터를 조회하는 과정에 있어서 가장 주의해야 하는 부분이 있는데, 바로 "과도한 시세 조회 요청" 오류가 빈번하게 발생한다는 것이다. 과도한 시세 조회 요청? 키움증권 사에 따르면 "서버의 안정적 운영을 위해 개인별로 데이터 요청의 횟수를 제한하고 있다."고 하는데, 이에 대한 명확한 가이드라인은 제공해주지 않고 있다.(제재 기준을 명확하게 알려준다면 서버가 감당할 수 있는 최대 수치로 사용할까봐 그러는 건가?) 이와 관..
[자동 매매 시스템 구축하기] 차트 데이터 조회하기 (4)지난 게시글에서 삼성전자(005930)의 3분봉 차트 데이터를 데이터프레임(DataFrame)을 기반으로 데이터를 정리하는 방법까지 작성했다. 사실 이번 게시글을 코드를 구축하기 보다는 코드 실행 시 발생할 수 있는 오류 상황에 대처하는 방법에 대해 소개하고자 하는 목적이 크다. 차트 데이터를 조회하는 과정에 있어서 가장 주의해야 하는 부분이 있는데, 바로 "과도한 시세 조회 요청" 오류가 빈번하게 발생한다는 것이다. 과도한 시세 조회 요청? 키움증권 사에 따르면 "서버의 안정적 운영을 위해 개인별로 데이터 요청의 횟수를 제한하고 있다."고 하는데, 이에 대한 명확한 가이드라인은 제공해주지 않고 있다.(제재 기준을 명확하게 알려준다면 서버가 감당할 수 있는 최대 수치로 사용할까봐 그러는 건가?) 이와 관..
2022.07.07 -
지난 게시글에서 차트 데이터를 요청하고 연속 조회를 구현하는 방법까지 모두 다루었으니, 이번 게시글에서는 해당 데이터를 데이터프레임(DataFrame)화 시켜서 보기 편하게 만드는 목적도 있겠지만 데이터베이스에 저장하기 용이한 형태로 데이터형을 변환하는 방법에 대해 알아볼 예정이다. 판다스(Pandas)의 데이터프레임(DataFrame) 데이터프레임(DataFrame)이란 단순하게 엑셀과 같은 형태라 이해하면 된다. 즉, 데이터 하나 하나마다 각자의 행과 열에 알맞은 값이 입력되어 있는 자료형이다. 이런 구조의 데이터여야만 추후 데이터에 접근하기 용이하다. 데이터프레임을 만들어내는 방법에는 다양한 방법들이 있는데, 가장 흔하게 사용되는 방법은 튜플 형태의 자료형을 만들어서 데이터프레임화(pd.DataFr..
[자동 매매 시스템 구축하기] 차트 데이터 조회하기 (3)지난 게시글에서 차트 데이터를 요청하고 연속 조회를 구현하는 방법까지 모두 다루었으니, 이번 게시글에서는 해당 데이터를 데이터프레임(DataFrame)화 시켜서 보기 편하게 만드는 목적도 있겠지만 데이터베이스에 저장하기 용이한 형태로 데이터형을 변환하는 방법에 대해 알아볼 예정이다. 판다스(Pandas)의 데이터프레임(DataFrame) 데이터프레임(DataFrame)이란 단순하게 엑셀과 같은 형태라 이해하면 된다. 즉, 데이터 하나 하나마다 각자의 행과 열에 알맞은 값이 입력되어 있는 자료형이다. 이런 구조의 데이터여야만 추후 데이터에 접근하기 용이하다. 데이터프레임을 만들어내는 방법에는 다양한 방법들이 있는데, 가장 흔하게 사용되는 방법은 튜플 형태의 자료형을 만들어서 데이터프레임화(pd.DataFr..
2022.07.05 -
지난 게시글에서는 차트 데이터를 요청하고 결과값을 받아오는 방법에 대해 알아보았고, 이번 게시글에서는 해당 차트 데이터가 900건에서 끝마치지 않고 계속해서 조회하는 방법과 self 변수를 사용해서 데이터를 축적시켜 사용하는 방법에 대해 알아볼 예정이다. 연속 조회 회당 900건에 그치는 차트 데이터를 900건에서 멈추지 않고 추가적으로 조회하도록 하는 것을 연속 조회라 한다. 실제로도 이전에 제작했던 def __commrqdata() 내에서도 pre 라는 인자를 전달해줄 것을 요구하고 있는데, 이 pre 에 들어가는 값이 바로 연속조회와 단일조회를 결정짓는 부분이라고 볼 수 있다. 또한 데이터를 수신하여 각 함수와 연결시켜주는 def receive_trdata() 부분에서도 맨 마지막 인자로 PreNe..
[자동 매매 시스템 구축하기] 차트 데이터 조회하기 (2)지난 게시글에서는 차트 데이터를 요청하고 결과값을 받아오는 방법에 대해 알아보았고, 이번 게시글에서는 해당 차트 데이터가 900건에서 끝마치지 않고 계속해서 조회하는 방법과 self 변수를 사용해서 데이터를 축적시켜 사용하는 방법에 대해 알아볼 예정이다. 연속 조회 회당 900건에 그치는 차트 데이터를 900건에서 멈추지 않고 추가적으로 조회하도록 하는 것을 연속 조회라 한다. 실제로도 이전에 제작했던 def __commrqdata() 내에서도 pre 라는 인자를 전달해줄 것을 요구하고 있는데, 이 pre 에 들어가는 값이 바로 연속조회와 단일조회를 결정짓는 부분이라고 볼 수 있다. 또한 데이터를 수신하여 각 함수와 연결시켜주는 def receive_trdata() 부분에서도 맨 마지막 인자로 PreNe..
2022.07.05 -
지난 게시글에서 데이터를 요청하기 위해 필요한 SetInputValue와 CommRqData, 그리고 이벤트를 함수와 연결한 후에 해당 함수 내에서 GetCommData를 이용해 데이터를 얻어오는 것까지 코드를 구축했다. 하지만 자동 매매 시스템을 구축하기 위해서는 특정 종목의 매수 가격과 매도 가격을 계산해내기 위해 차트 데이터를 요청하는 절차가 필요하기 마련이다. 따라서 이번 게시글에서는 차트 데이터를 요청하는 방법에 대해 살펴보고, 지난 게시글에서는 다루지 않았던 CommRqData의 세 번째 인자인 nPreNext 에 대해서도 함께 살펴볼 예정이다. 차트 데이터 조회 코드를 제작하기 전에 앞서 차트 데이터를 조회한 후에 DB에 저장을 할 것인지 아니면 조회하여 해당 데이터만 사용한 후에 버릴 것인..
[자동 매매 시스템 구축하기] 차트 데이터 조회하기 (1)지난 게시글에서 데이터를 요청하기 위해 필요한 SetInputValue와 CommRqData, 그리고 이벤트를 함수와 연결한 후에 해당 함수 내에서 GetCommData를 이용해 데이터를 얻어오는 것까지 코드를 구축했다. 하지만 자동 매매 시스템을 구축하기 위해서는 특정 종목의 매수 가격과 매도 가격을 계산해내기 위해 차트 데이터를 요청하는 절차가 필요하기 마련이다. 따라서 이번 게시글에서는 차트 데이터를 요청하는 방법에 대해 살펴보고, 지난 게시글에서는 다루지 않았던 CommRqData의 세 번째 인자인 nPreNext 에 대해서도 함께 살펴볼 예정이다. 차트 데이터 조회 코드를 제작하기 전에 앞서 차트 데이터를 조회한 후에 DB에 저장을 할 것인지 아니면 조회하여 해당 데이터만 사용한 후에 버릴 것인..
2022.07.04 -
지난 게시글에서 캡슐화라는 개념에 대해 살펴보았고, SetInputValue와 CommRqData라는 두 개의 함수를 캡슐화를 고려하며 코드를 제작했었다. 그렇다면 이제는 데이터를 요청하는 데에 있어서 어떠한 값들을 입력해야하는지에 대해 어떤 자료를 참고해야 하는지 살펴보고, 실제로 데이터를 요청하고 수신해서 출력하는 방법에 대해 알아보고자 한다.(분량 김) 일단 데이터를 요청하는 구조는 이전 게시글에서도 여러 번 살펴봤듯이, SetInputValue → CommRqData → Event → connect to definition → GetCommData의 순서로 이루어진다. SetInputValue에 무슨 데이터를 입력해야 돼? 어떤 데이터를 입력해야 하는지는 사실 어떤 데이터를 수신받고자 하는지에 따..
[자동 매매 시스템 구축하기] 데이터 요청·수신하기지난 게시글에서 캡슐화라는 개념에 대해 살펴보았고, SetInputValue와 CommRqData라는 두 개의 함수를 캡슐화를 고려하며 코드를 제작했었다. 그렇다면 이제는 데이터를 요청하는 데에 있어서 어떠한 값들을 입력해야하는지에 대해 어떤 자료를 참고해야 하는지 살펴보고, 실제로 데이터를 요청하고 수신해서 출력하는 방법에 대해 알아보고자 한다.(분량 김) 일단 데이터를 요청하는 구조는 이전 게시글에서도 여러 번 살펴봤듯이, SetInputValue → CommRqData → Event → connect to definition → GetCommData의 순서로 이루어진다. SetInputValue에 무슨 데이터를 입력해야 돼? 어떤 데이터를 입력해야 하는지는 사실 어떤 데이터를 수신받고자 하는지에 따..
2022.07.02 -
지난 게시글에서 살펴봤듯이, 키움증권 Open API 상에서 데이터를 요청하는 방법에는 SetInputValue와 CommRqData를 사용하는 방법과 dynamicCall("")을 사용하는 방법 두 가지가 있다. 이번 게시글에서는 두 가지 방법 중 전자에 해당하는 방법을 사용하는 방법에 대해 알아볼 예정이다. 본인의 경우 항상 코드를 구축하기 전에 앞서 실질적으로 구현해내고자 하는 형태를 고안한 후에 코드를 제작했다. 그니까, 어떤 버튼을 눌렀을 때 어떤 동작이 수행되도록 처리할 것인지를 생각하고 어떤 데이터들을 받아올 것인지에 대해 고민해본 후에 코드를 제작했다는 것이다. 이 과정에서 반복적으로 사용되어야 할 것 같은 코드라면 잘게 잘게 쪼개서 부분적으로 사용할 수 있도록 하는 캡슐화라는 개념이 등장..
[자동 매매 시스템 구축하기] 자료 요청 구조 구축하기(캡슐화)지난 게시글에서 살펴봤듯이, 키움증권 Open API 상에서 데이터를 요청하는 방법에는 SetInputValue와 CommRqData를 사용하는 방법과 dynamicCall("")을 사용하는 방법 두 가지가 있다. 이번 게시글에서는 두 가지 방법 중 전자에 해당하는 방법을 사용하는 방법에 대해 알아볼 예정이다. 본인의 경우 항상 코드를 구축하기 전에 앞서 실질적으로 구현해내고자 하는 형태를 고안한 후에 코드를 제작했다. 그니까, 어떤 버튼을 눌렀을 때 어떤 동작이 수행되도록 처리할 것인지를 생각하고 어떤 데이터들을 받아올 것인지에 대해 고민해본 후에 코드를 제작했다는 것이다. 이 과정에서 반복적으로 사용되어야 할 것 같은 코드라면 잘게 잘게 쪼개서 부분적으로 사용할 수 있도록 하는 캡슐화라는 개념이 등장..
2022.07.02 -
키움증권 Open API 모듈을 이용해서 로그인하는 방법은 개발 가이드 내에서도 자세하게 다루고 있는 내용인데, 사실 이제부터 코드를 구축하기 위해서는 Open API를 사용하기 위한 방법에 대해 알고 있어야 한다. Open API를 통해 데이터를 획득하는 방법에는 크게 두 가지가 있는데, 아래의 사진을 참고하면 된다. 둘 간의 차이점을 알아보자면, 방법 ①은 KOA Studio 상에서 하단의 두 번째 메뉴인 TR 목록에 해당하는 데이터를 의미하고, 방법 ②는 네 번째 메뉴인 개발가이드 내에서 언급하고 있는 함수를 의미한다는 것이다. 보다 자세히 이야기해보자면, 방법 ①은 CommRqData 함수를 사용하는 과정에 있어서 반드시 "opt" 또는 "opw"라는 영단어가 포함된다는 것이고, 방법 ②는 "op..
[자동 매매 시스템 구축하기] 키움증권 Open API 로그인키움증권 Open API 모듈을 이용해서 로그인하는 방법은 개발 가이드 내에서도 자세하게 다루고 있는 내용인데, 사실 이제부터 코드를 구축하기 위해서는 Open API를 사용하기 위한 방법에 대해 알고 있어야 한다. Open API를 통해 데이터를 획득하는 방법에는 크게 두 가지가 있는데, 아래의 사진을 참고하면 된다. 둘 간의 차이점을 알아보자면, 방법 ①은 KOA Studio 상에서 하단의 두 번째 메뉴인 TR 목록에 해당하는 데이터를 의미하고, 방법 ②는 네 번째 메뉴인 개발가이드 내에서 언급하고 있는 함수를 의미한다는 것이다. 보다 자세히 이야기해보자면, 방법 ①은 CommRqData 함수를 사용하는 과정에 있어서 반드시 "opt" 또는 "opw"라는 영단어가 포함된다는 것이고, 방법 ②는 "op..
2022.07.01 -
이전 게시글까지 해서 Pycharm, Python, 키움증권 Open API 모듈, KOA Studio까지 설치했고, 이번 게시글에서는 프로그램을 디자인할 수 있는 근간이 되는 Qt GUI를 설치하여 직접 디자인해보고 코드와 연결하는 내용까지 진행해보도록 하자. Qt GUI 설치하고 실행하기 앞서 설치했던 파이참을 열어보도록 하자. 이전 게시글에서 IDE에 대해 설명했던 적이 있는데, IDE는 말 그대로 통합개발환경을 의미하는 만큼, 다양한 프로그램들을 설치하거나 실행하는 동작들을 모두 수행할 수 있다. 한줄로 요약하자면, 그냥 개발할 수 있는 환경 그 자체를 제공해주니 다른 데 왔다갔다 하지 말고 프로그램 내에서 다 해결할 수 있다는 것이다. 이말인 즉슨, 우리는 파이참을 통해 Qt GUI를 설치할 수..
[자동 매매 시스템 구축하기] GUI 생성·제작·연결이전 게시글까지 해서 Pycharm, Python, 키움증권 Open API 모듈, KOA Studio까지 설치했고, 이번 게시글에서는 프로그램을 디자인할 수 있는 근간이 되는 Qt GUI를 설치하여 직접 디자인해보고 코드와 연결하는 내용까지 진행해보도록 하자. Qt GUI 설치하고 실행하기 앞서 설치했던 파이참을 열어보도록 하자. 이전 게시글에서 IDE에 대해 설명했던 적이 있는데, IDE는 말 그대로 통합개발환경을 의미하는 만큼, 다양한 프로그램들을 설치하거나 실행하는 동작들을 모두 수행할 수 있다. 한줄로 요약하자면, 그냥 개발할 수 있는 환경 그 자체를 제공해주니 다른 데 왔다갔다 하지 말고 프로그램 내에서 다 해결할 수 있다는 것이다. 이말인 즉슨, 우리는 파이참을 통해 Qt GUI를 설치할 수..
2022.07.01 -
IDE란 통합 개발 환경(Integrated Development Environment)의 줄임말로, 단순하게 개발 환경을 의미한다고 보면 된다. IDE에는 Microsoft 사의 Visual Code, JetBrains의 Pycharm 등 다양한 프로그램들이 있지만 개인적으로는 Pycharm(이하 파이참)을 선호한다. 사용하는 이용자들의 의견에 따르면 Visual Code가 조금 더 가볍게 돌릴 수 있다는 이야기들이 있긴 하지만 애당초 IDE는 컴퓨터 성능이 크게 받쳐줘야 하는 게 아니다 보니 본인 취향에 맞게 사용하면 된다. 파이참 설치하기 파이참 설치 사이트에 방문하면 아래의 같이 Community 하단에 다운로드 버튼이 있다. 왼쪽의 Professional은 유료니 우리는 그냥 무료 버전을 다운로..
[자동 매매 시스템 구축하기] IDE와 파이썬 설치하기IDE란 통합 개발 환경(Integrated Development Environment)의 줄임말로, 단순하게 개발 환경을 의미한다고 보면 된다. IDE에는 Microsoft 사의 Visual Code, JetBrains의 Pycharm 등 다양한 프로그램들이 있지만 개인적으로는 Pycharm(이하 파이참)을 선호한다. 사용하는 이용자들의 의견에 따르면 Visual Code가 조금 더 가볍게 돌릴 수 있다는 이야기들이 있긴 하지만 애당초 IDE는 컴퓨터 성능이 크게 받쳐줘야 하는 게 아니다 보니 본인 취향에 맞게 사용하면 된다. 파이참 설치하기 파이참 설치 사이트에 방문하면 아래의 같이 Community 하단에 다운로드 버튼이 있다. 왼쪽의 Professional은 유료니 우리는 그냥 무료 버전을 다운로..
2022.06.29 -
본인은 이제 어느 정도 알고리즘을 기반으로 동작하는 거래 로직이 안정화되었다는 생각이 들어, 이제는 자동 매매 시스템을 구축하고자 하는 분들을 위해 자동 매매 시스템을 구축하는 동안에 쌓아온 지식과 사용해왔던 방법들을 글로나마 남겨두고 싶다는 생각이 들어 작성을 시작하게 되었다. 뭐부터 해야 할까? 자동 매매 시스템을 구축하기 전에 앞서, 여태까지의 경험으로 미루어보아 자동 매매를 진행하기 위해 처리해주어야 하는 데이터들이 예상외로 많고 정상적으로 거래가 이루어지도록 하기 위해 준비해야 하는 준비물들도 예상외로 많다. 따라서 데이터 조회부터 종목 선정 그리고 주문과 후속 데이터 처리를 포함하여 Qt GUI를 이용한 프로그램 제작 등등 다양한 분야의 개념을 사용하여 자동 매매 시스템을 구축하는 방법에 대해..
[자동 매매 시스템 구축하기] 기본 설명서본인은 이제 어느 정도 알고리즘을 기반으로 동작하는 거래 로직이 안정화되었다는 생각이 들어, 이제는 자동 매매 시스템을 구축하고자 하는 분들을 위해 자동 매매 시스템을 구축하는 동안에 쌓아온 지식과 사용해왔던 방법들을 글로나마 남겨두고 싶다는 생각이 들어 작성을 시작하게 되었다. 뭐부터 해야 할까? 자동 매매 시스템을 구축하기 전에 앞서, 여태까지의 경험으로 미루어보아 자동 매매를 진행하기 위해 처리해주어야 하는 데이터들이 예상외로 많고 정상적으로 거래가 이루어지도록 하기 위해 준비해야 하는 준비물들도 예상외로 많다. 따라서 데이터 조회부터 종목 선정 그리고 주문과 후속 데이터 처리를 포함하여 Qt GUI를 이용한 프로그램 제작 등등 다양한 분야의 개념을 사용하여 자동 매매 시스템을 구축하는 방법에 대해..
2022.06.29