분류 전체보기
-
지난 게시글에서는 매수 조건 충족 종목(self.buy_list 변수)을 대상으로 for문을 통해 한 종목 한 종목 매수하는 방법에 대해 알아보았다. 이번 게시글에서는 일단 먼저 self.account를 보기 좋게 좀 편집하고, 현재 잔고가 부족한 경우에는 매수를 못하도록 하는 코드를 제작해보도록 하겠다. self.account, 데이터프레임화 class algorithm1(): def __init__(self, start_date, end_date, all_range): self.all_range = all_range self.today = start_date self.account = {'date':[], 'code':[], 'buy_price':[], 'quantity':[]} self.init_m..
백테스팅 구축 (8) - 매도 함수 구축지난 게시글에서는 매수 조건 충족 종목(self.buy_list 변수)을 대상으로 for문을 통해 한 종목 한 종목 매수하는 방법에 대해 알아보았다. 이번 게시글에서는 일단 먼저 self.account를 보기 좋게 좀 편집하고, 현재 잔고가 부족한 경우에는 매수를 못하도록 하는 코드를 제작해보도록 하겠다. self.account, 데이터프레임화 class algorithm1(): def __init__(self, start_date, end_date, all_range): self.all_range = all_range self.today = start_date self.account = {'date':[], 'code':[], 'buy_price':[], 'quantity':[]} self.init_m..
2021.07.06 -
지난 포스팅에서 길고 긴 오류 수정 과정을 거치고 넘어왔다. 이제 오류가 없었으면 하지만 사실 오류는 언제 발생할지도 모르고 어디서 발생할지도 모른다. 기껏 게시글을 보면서 "오... 잘 따라하기만 하면 나도 할 수 있을 것 같아."라는 생각에 따라하기 시작했다가 "아 뭔데... 왜 제대로 안 만드는데.."라는 생각이 들었다면 변명의 여지가 없지만, 너그러운 마음으로 이해해주십사 하는 마음으로 이번 게시글을 작성한다. 디테일한 매수 조건 설정 일전에 시작일자를 20200103으로 설정하고 백테스팅을 진행해본 결과, 2020년 1월 3일에 매수할 종목이 총 10개가 나왔다. 아래에 나와 있는 종목의 종가 중 가장 작은 값이 30만원이니 종목당 30만원씩만 매수한다고 가정하면 하루에만 300만원 어치를 매수..
백테스팅 구축 (7) - 매수 조건 설정 및 계좌 현황 제작지난 포스팅에서 길고 긴 오류 수정 과정을 거치고 넘어왔다. 이제 오류가 없었으면 하지만 사실 오류는 언제 발생할지도 모르고 어디서 발생할지도 모른다. 기껏 게시글을 보면서 "오... 잘 따라하기만 하면 나도 할 수 있을 것 같아."라는 생각에 따라하기 시작했다가 "아 뭔데... 왜 제대로 안 만드는데.."라는 생각이 들었다면 변명의 여지가 없지만, 너그러운 마음으로 이해해주십사 하는 마음으로 이번 게시글을 작성한다. 디테일한 매수 조건 설정 일전에 시작일자를 20200103으로 설정하고 백테스팅을 진행해본 결과, 2020년 1월 3일에 매수할 종목이 총 10개가 나왔다. 아래에 나와 있는 종목의 종가 중 가장 작은 값이 30만원이니 종목당 30만원씩만 매수한다고 가정하면 하루에만 300만원 어치를 매수..
2021.07.05 -
지난 게시글에서 이동평균선 간 대소 비교를 통해 매수 가능 종목을 튜플 형태로 자료를 정리한 후에 마지막에는 데이터프레임으로 만들어서 print()문을 적용해서 출력했었다. 하지만 언뜻 봐도 매수 대상 종목이 많았고, 매일 매일 매수 종목들이 10개씩 생긴다면 단순한 모의 백테스팅에서 뿐만 아니라 실전 투자에 있어서도 문제가 발생하게 된다. 하지만 이 문제는 나중에 해결하는 거로 하고, 이번 게시글부터는 buy_list 변수에 입력된 모든 종목을 매수한다고 가정하고 각각 얼만큼의 금액만큼 매수할 것인지를 설정하고 그 결과를 살펴볼 예정이다. 코드 오류 수정 (1) - def __init__ 부분 빨간 글씨로 오류가 발생하지는 않았지만 일자 계산에 있어서 오류가 발생했다. 입력한 일자가 20200101인 ..
백테스팅 구축 (6) - 오류 수정지난 게시글에서 이동평균선 간 대소 비교를 통해 매수 가능 종목을 튜플 형태로 자료를 정리한 후에 마지막에는 데이터프레임으로 만들어서 print()문을 적용해서 출력했었다. 하지만 언뜻 봐도 매수 대상 종목이 많았고, 매일 매일 매수 종목들이 10개씩 생긴다면 단순한 모의 백테스팅에서 뿐만 아니라 실전 투자에 있어서도 문제가 발생하게 된다. 하지만 이 문제는 나중에 해결하는 거로 하고, 이번 게시글부터는 buy_list 변수에 입력된 모든 종목을 매수한다고 가정하고 각각 얼만큼의 금액만큼 매수할 것인지를 설정하고 그 결과를 살펴볼 예정이다. 코드 오류 수정 (1) - def __init__ 부분 빨간 글씨로 오류가 발생하지는 않았지만 일자 계산에 있어서 오류가 발생했다. 입력한 일자가 20200101인 ..
2021.07.05 -
지난 게시글에서는 특정 일자의 차트 데이터를 조회하는 코드를 모두 구축했고, 잘 조회되는 것을 확인했다. 이번 게시글에서는 이전부터 계속 설명했던 이동평균선 간의 골든크로스와 데드크로스를 기준으로 매수가 가능한 종목인지 아닌지를 판단하는 코드를 구축하고자 한다. 여느 때처럼, 함수부터 제작하자. 거래의 가불가 판단하기 거래의 가불가를 판단하기 위해서는 일단 데이터가 필요하고, 우리는 그 데이터를 check_list() 함수의 self.chart_data라는 변수 안에 저장했다. 따라서 self.chart_data라는 변수를 또 다른 함수(justify_ma 함수)로 전달해준 후에, 그 함수 내에서 거래의 가능 여부를 판단한 후에 거래가 가능하다면 True를, 불가능하다면 False를 반환함으로써 해당 종..
백테스팅 구축 (5) - 매수 조건 제작지난 게시글에서는 특정 일자의 차트 데이터를 조회하는 코드를 모두 구축했고, 잘 조회되는 것을 확인했다. 이번 게시글에서는 이전부터 계속 설명했던 이동평균선 간의 골든크로스와 데드크로스를 기준으로 매수가 가능한 종목인지 아닌지를 판단하는 코드를 구축하고자 한다. 여느 때처럼, 함수부터 제작하자. 거래의 가불가 판단하기 거래의 가불가를 판단하기 위해서는 일단 데이터가 필요하고, 우리는 그 데이터를 check_list() 함수의 self.chart_data라는 변수 안에 저장했다. 따라서 self.chart_data라는 변수를 또 다른 함수(justify_ma 함수)로 전달해준 후에, 그 함수 내에서 거래의 가능 여부를 판단한 후에 거래가 가능하다면 True를, 불가능하다면 False를 반환함으로써 해당 종..
2021.07.04 -
지난 게시글에서 while문을 통해 백테스팅을 진행하는 일자가 우리가 입력했던 종료일자(end_date)와 같아지는 순간 진행을 멈추도록 하는 코드를 구축했다. 이번 게시글에서는 while문 아래에서 하루 하루 돌면서 그 날의 종목의 차트 데이터를 불러오고 그를 바탕으로 매수 조건에 충족하는지를 살펴보는 코드를 구축할 예정이다. 실제 거래와 백테스팅 간의 괴리 사실 우리가 구현하고자 하는 거래 전략을 검증(백테스팅) 해보는 방법은 크게 두 가지가 있다. 머리로 가볍게 생각해낼 수 있는 전략들을 직접 차트를 보면서 어렵지 않게 분석할 수 있지만 그 수치들을 일일이 직접 계산하고 엑셀 등과 같은 데이터 관리 프로그램에 저장해야 한다는 단점이 있는 방법과 머리로 생각해낸 전략을 오랜 시간 정상적으로 동작하는 ..
백테스팅 구축 (4) - 일자별 차트 데이터 불러오기지난 게시글에서 while문을 통해 백테스팅을 진행하는 일자가 우리가 입력했던 종료일자(end_date)와 같아지는 순간 진행을 멈추도록 하는 코드를 구축했다. 이번 게시글에서는 while문 아래에서 하루 하루 돌면서 그 날의 종목의 차트 데이터를 불러오고 그를 바탕으로 매수 조건에 충족하는지를 살펴보는 코드를 구축할 예정이다. 실제 거래와 백테스팅 간의 괴리 사실 우리가 구현하고자 하는 거래 전략을 검증(백테스팅) 해보는 방법은 크게 두 가지가 있다. 머리로 가볍게 생각해낼 수 있는 전략들을 직접 차트를 보면서 어렵지 않게 분석할 수 있지만 그 수치들을 일일이 직접 계산하고 엑셀 등과 같은 데이터 관리 프로그램에 저장해야 한다는 단점이 있는 방법과 머리로 생각해낸 전략을 오랜 시간 정상적으로 동작하는 ..
2021.07.04 -
이전 게시글에서는 차트 데이터를 가공하는 코드를 구축하고 그를 저장하는 방법에 대해 알아보았다. 따라서 이번 포스팅에서는 하루 하루를 돌면서 매수 조건을 충족시키는 종목 리스트를 구하고, 그를 바탕으로 거래를 진행하는 방법에 대해 살펴볼 예정이다. 특정 일자에 매수 조건을 충족하는 종목 선정하기 우리는 이전에 백테스팅을 하기 위해 start_date와 end_date, 그리고 all_range라는 세 개의 일자 변수를 설정했고, 이 일자 변수를 기준으로 해서 백테스팅을 진행할 계획을 수립했다. 그렇다면 start_date부터 시작해서 하루하루를 더하며 거래를 할 종목들을 찾아야 하는데, 종목을 찾기 위해서는 그 전에 매수 조건을 설정해야 한다. 매수 조건의 경우 이전 게시글에서 이동평균선을 구축했으니 해..
백테스팅 구축 (3) - 일자 계산하기이전 게시글에서는 차트 데이터를 가공하는 코드를 구축하고 그를 저장하는 방법에 대해 알아보았다. 따라서 이번 포스팅에서는 하루 하루를 돌면서 매수 조건을 충족시키는 종목 리스트를 구하고, 그를 바탕으로 거래를 진행하는 방법에 대해 살펴볼 예정이다. 특정 일자에 매수 조건을 충족하는 종목 선정하기 우리는 이전에 백테스팅을 하기 위해 start_date와 end_date, 그리고 all_range라는 세 개의 일자 변수를 설정했고, 이 일자 변수를 기준으로 해서 백테스팅을 진행할 계획을 수립했다. 그렇다면 start_date부터 시작해서 하루하루를 더하며 거래를 할 종목들을 찾아야 하는데, 종목을 찾기 위해서는 그 전에 매수 조건을 설정해야 한다. 매수 조건의 경우 이전 게시글에서 이동평균선을 구축했으니 해..
2021.07.04 -
지난 포스팅에서 백테스팅 절차에 대한 코드를 제작했었고 데이터를 저장하는 과정에 있어서 발생한 오류를 곧바로 수정하겠다고 했었다. 따라서 이번 포스팅에서는 클래스를 초기화하는 방법에 대해 살펴보고자 한다. 무슨 문제에요? 종목코드: 001210 저장일자: 20210608 최신일자: 20210702 종목코드: 001210 데이터가 구식 데이터입니다. date open high low close volume trade_volume 0 20210702 3280 3295 3220 3245 56122 183 1 20210701 3255 3280 3200 3280 98289 318 2 20210630 3305 3335 3165 3260 192283 621 3 20210629 3375 3375 3305 3310 10..
키움증권 Open API - 차트 데이터 함수 수정지난 포스팅에서 백테스팅 절차에 대한 코드를 제작했었고 데이터를 저장하는 과정에 있어서 발생한 오류를 곧바로 수정하겠다고 했었다. 따라서 이번 포스팅에서는 클래스를 초기화하는 방법에 대해 살펴보고자 한다. 무슨 문제에요? 종목코드: 001210 저장일자: 20210608 최신일자: 20210702 종목코드: 001210 데이터가 구식 데이터입니다. date open high low close volume trade_volume 0 20210702 3280 3295 3220 3245 56122 183 1 20210701 3255 3280 3200 3280 98289 318 2 20210630 3305 3335 3165 3260 192283 621 3 20210629 3375 3375 3305 3310 10..
2021.07.04 -
지난 포스팅에서 눈치가 빠른 분이라면 뭔가 이상한 부분을 분명히 느끼셨을 것이다. 바로 백테스팅 과정에 대한 설명이 기존 의도와는 다르게 서술되었기 때문이다. 즉, 실제 거래 방법과 동일하게 하루 하루 돌면서 종목을 선정하고 그 선정한 종목을 바탕으로 백테스팅을 하는 방법과 한 종목에 대해 백테스팅을 하는 방법을 이야기하고 전자를 바탕으로 전략을 구축해보겠다고 서술했는데, 그렇게 서술하게 될 경우 종목 선정에 관한 부분을 별도로 설정해야 했기 때문에 후자의 방법으로 코드를 제작했었다. 따라서 이번 게시글에서는 종목 선정 기준을 임의로 설정하고, 그를 바탕으로 하루 하루 조건을 충족시키는 종목을 찾는 코드를 제작해보고자 한다. 가장 흔하디 흔한 거래 전략으로는 이동평균선 간의 골든 크로스 시 매수, 데드 ..
백테스팅 구축 - (2) 차트 데이터 가공하기지난 포스팅에서 눈치가 빠른 분이라면 뭔가 이상한 부분을 분명히 느끼셨을 것이다. 바로 백테스팅 과정에 대한 설명이 기존 의도와는 다르게 서술되었기 때문이다. 즉, 실제 거래 방법과 동일하게 하루 하루 돌면서 종목을 선정하고 그 선정한 종목을 바탕으로 백테스팅을 하는 방법과 한 종목에 대해 백테스팅을 하는 방법을 이야기하고 전자를 바탕으로 전략을 구축해보겠다고 서술했는데, 그렇게 서술하게 될 경우 종목 선정에 관한 부분을 별도로 설정해야 했기 때문에 후자의 방법으로 코드를 제작했었다. 따라서 이번 게시글에서는 종목 선정 기준을 임의로 설정하고, 그를 바탕으로 하루 하루 조건을 충족시키는 종목을 찾는 코드를 제작해보고자 한다. 가장 흔하디 흔한 거래 전략으로는 이동평균선 간의 골든 크로스 시 매수, 데드 ..
2021.07.03 -
이전 포스팅에서는 백테스팅 전략에 대해 간단하게 서술했었고, 이번 포스팅에서는 백테스팅 전략에 대해 제작하고자 할 예정이다. 일단 백테스팅의 경우에는 크게 두 가지 방법이 있다. 종목코드를 입력하면 그 종목에 대해서만 거래 전략 테스트 일자를 입력하면 하루 하루 종목을 선정한 후에 거래 전략 테스트 이 중 후자의 방법이 보다 실질적인 거래와 가장 유사한 형태의 백테스팅 전략이라고 볼 수 있기 때문에 여기서는 후자의 방법대로 백테스팅을 하는 방법에 대해 다루어볼 예정이다. 일자 입력과 일자의 변수 처리 일단 기본적으로 일자를 기반으로 백테스팅을 구축하기 위해서는 시작 일자와 종료 일자를 입력하고 그를 하나의 변수로서 받아와야 한다. 이를 변수로 받아오기 위해서는 class를 생성한 후에, 그 아래에 def..
백테스팅 구축 - (1) 일자 변수 처리 및 차트 데이터 조회이전 포스팅에서는 백테스팅 전략에 대해 간단하게 서술했었고, 이번 포스팅에서는 백테스팅 전략에 대해 제작하고자 할 예정이다. 일단 백테스팅의 경우에는 크게 두 가지 방법이 있다. 종목코드를 입력하면 그 종목에 대해서만 거래 전략 테스트 일자를 입력하면 하루 하루 종목을 선정한 후에 거래 전략 테스트 이 중 후자의 방법이 보다 실질적인 거래와 가장 유사한 형태의 백테스팅 전략이라고 볼 수 있기 때문에 여기서는 후자의 방법대로 백테스팅을 하는 방법에 대해 다루어볼 예정이다. 일자 입력과 일자의 변수 처리 일단 기본적으로 일자를 기반으로 백테스팅을 구축하기 위해서는 시작 일자와 종료 일자를 입력하고 그를 하나의 변수로서 받아와야 한다. 이를 변수로 받아오기 위해서는 class를 생성한 후에, 그 아래에 def..
2021.07.03 -
지난 게시글에서는 파동의 기본적인 형태를 정형화하기 위한 노력의 결과로 등장한 엘리어트 파동 이론과 정형화된 파동 안에서 몇 가지 변형된 패턴이 등장할 수 있음을 서술했었다. 바로 그 요인들로 인해 파동 분석이 어려워지게 되었는데, 그 해결 방법으로 바로 기간적인 측면을 고려하면 된다고 설명했었다. 이전 게시글에서는 이야기하지 않았지만, 사실 본인은 파동 분석에 있어서 패턴이나 비율 역시 중요하긴 하지만, 기간이라는 시간적인 기준이 가장 중요하다고 보는 입장을 취하고 있다. 그래서 시간적인 기준이 뭔데요? 여기까지 와서 말을 돌리고 설명해주기 싫어하는 것처럼 보일 수 있겠지만, 이 시간적인 기준이라는 것은 본인이 결정해서 적용해야 하는 부분이다. 주식 시장에는 정해진 정답은 없고, 종목마다 서로 다른 특..
금융시장의 기술적 분석 (2) - 기간편지난 게시글에서는 파동의 기본적인 형태를 정형화하기 위한 노력의 결과로 등장한 엘리어트 파동 이론과 정형화된 파동 안에서 몇 가지 변형된 패턴이 등장할 수 있음을 서술했었다. 바로 그 요인들로 인해 파동 분석이 어려워지게 되었는데, 그 해결 방법으로 바로 기간적인 측면을 고려하면 된다고 설명했었다. 이전 게시글에서는 이야기하지 않았지만, 사실 본인은 파동 분석에 있어서 패턴이나 비율 역시 중요하긴 하지만, 기간이라는 시간적인 기준이 가장 중요하다고 보는 입장을 취하고 있다. 그래서 시간적인 기준이 뭔데요? 여기까지 와서 말을 돌리고 설명해주기 싫어하는 것처럼 보일 수 있겠지만, 이 시간적인 기준이라는 것은 본인이 결정해서 적용해야 하는 부분이다. 주식 시장에는 정해진 정답은 없고, 종목마다 서로 다른 특..
2021.06.20 -
존 J. 머피가 저술한 금융시장의 기술적 분석 책은 주식 투자자에게 있어 한 번 쯤은 읽어볼 만한 가치가 있는 책이라고 생각된다. 본인은 이 책을 다섯 번 정도 읽었고, 저자가 말하고자 하는 바가 무엇인지 곰곰이 생각해보게 되었으며 더 나아가 그 내용들을 주식시장에는 어떻게 적용시킬 것인지에 대해 수없이 고민해왔다. 이 책에서는 여러 가지 차트 분석 방법들에 대해 서술하고 있으나, 본인은 가장 흔히들 알고 있는 파동에 대해 이야기해보고자 한다. 하지만 파동을 분석한다는 것, 결론부터 이야기하면 파동에 대해 회의적인 입장을 가지고 있는 사람들이 정말 많을 것이라 생각된다. 하지만 책의 저자는 파동을 분석하는 데에 있어서 시간, 비율, 패턴이라는 세 가지 개념을 반드시 함께 고려해야 한다고 서술하고 있다. ..
금융시장의 기술적 분석 (1) - 패턴편존 J. 머피가 저술한 금융시장의 기술적 분석 책은 주식 투자자에게 있어 한 번 쯤은 읽어볼 만한 가치가 있는 책이라고 생각된다. 본인은 이 책을 다섯 번 정도 읽었고, 저자가 말하고자 하는 바가 무엇인지 곰곰이 생각해보게 되었으며 더 나아가 그 내용들을 주식시장에는 어떻게 적용시킬 것인지에 대해 수없이 고민해왔다. 이 책에서는 여러 가지 차트 분석 방법들에 대해 서술하고 있으나, 본인은 가장 흔히들 알고 있는 파동에 대해 이야기해보고자 한다. 하지만 파동을 분석한다는 것, 결론부터 이야기하면 파동에 대해 회의적인 입장을 가지고 있는 사람들이 정말 많을 것이라 생각된다. 하지만 책의 저자는 파동을 분석하는 데에 있어서 시간, 비율, 패턴이라는 세 가지 개념을 반드시 함께 고려해야 한다고 서술하고 있다. ..
2021.06.20 -
어디서 개인정보가 유출되었고 그 개인정보를 어떻게 이용하는 건지는 모르겠지만 광고 문자는 쉴새 없이 온다. 특히 주식 투자 리딩이나 자동 매매 프로그램에 관한 광고가 주를 이루고, 본인은 광고 문자를 받는 대로 경찰청에서 제공하는 프로그램을 이용해서 꼬박꼬박 신고를 먹여주고 있다. 어느 정도의 효과가 있었던 것인지 광고 문자가 덜 오기 시작했으나, 이제는 신고 자체가 불가능한 해외 번호로 연락이 오기 시작했고 광고 대상도 점차 주식 투자가 아닌 바카라 등으로 넓어졌다. 사실 전부터 이런 내용에 대해 작성하고 싶었다. 실제로 주식을 주제로 하여 일부 채널에서 방송을 진행하는 사람들이 있는데, 그 안에서 조건검색식을 돈받고 파는(당시 약 100만원에 판매하고 있었음) 경우들이 있다. 그때 친구놈 하나가 그걸..
조건검색식 판매에 대한 사견어디서 개인정보가 유출되었고 그 개인정보를 어떻게 이용하는 건지는 모르겠지만 광고 문자는 쉴새 없이 온다. 특히 주식 투자 리딩이나 자동 매매 프로그램에 관한 광고가 주를 이루고, 본인은 광고 문자를 받는 대로 경찰청에서 제공하는 프로그램을 이용해서 꼬박꼬박 신고를 먹여주고 있다. 어느 정도의 효과가 있었던 것인지 광고 문자가 덜 오기 시작했으나, 이제는 신고 자체가 불가능한 해외 번호로 연락이 오기 시작했고 광고 대상도 점차 주식 투자가 아닌 바카라 등으로 넓어졌다. 사실 전부터 이런 내용에 대해 작성하고 싶었다. 실제로 주식을 주제로 하여 일부 채널에서 방송을 진행하는 사람들이 있는데, 그 안에서 조건검색식을 돈받고 파는(당시 약 100만원에 판매하고 있었음) 경우들이 있다. 그때 친구놈 하나가 그걸..
2021.06.18