AUTO TRADE
좌측 카테고리를 눌러서 주제를 선택하시기 바랍니다.
-
지난 게시글에서는 종목별 데이터들을 하나의 변수로 모아 종목별 변수들을 구축했으니, 이번 게시글에서는 그 종목별 변수들을 대상으로 백테스팅을 진행할 종목을 선정할 예정이다. 종목 선정 기준은 무엇으로 설정해야 할지에 대한 고민은 개개인 모두가 다르겠지만, 여러 가지 조건들을 설정해서 종목을 선정할 수 있다는 것만큼은 확실하다. 여기서 어떤 기준 하에 종목을 선정할 것인지와 같은 세부적인 기준들은 개개인이 설정할 일이고, 본인이 게시글 본문에서 사용하는 기준들은 모두 개인적인 기준이니 만큼 '이렇게 하면 수익이 나나?'하는 생각은 지양하고 읽어주길 바란다. 설령 이 기준이 수익이 날 수 있는 종목을 골라주는 기준이라 하더라도, 그를 바탕으로 거래를 해왔던 사람만 수익을 낼 수 있지 그렇지 않았던 사람이라면..
2.3 백테스팅하기 - 종목 선정하기 (1)지난 게시글에서는 종목별 데이터들을 하나의 변수로 모아 종목별 변수들을 구축했으니, 이번 게시글에서는 그 종목별 변수들을 대상으로 백테스팅을 진행할 종목을 선정할 예정이다. 종목 선정 기준은 무엇으로 설정해야 할지에 대한 고민은 개개인 모두가 다르겠지만, 여러 가지 조건들을 설정해서 종목을 선정할 수 있다는 것만큼은 확실하다. 여기서 어떤 기준 하에 종목을 선정할 것인지와 같은 세부적인 기준들은 개개인이 설정할 일이고, 본인이 게시글 본문에서 사용하는 기준들은 모두 개인적인 기준이니 만큼 '이렇게 하면 수익이 나나?'하는 생각은 지양하고 읽어주길 바란다. 설령 이 기준이 수익이 날 수 있는 종목을 골라주는 기준이라 하더라도, 그를 바탕으로 거래를 해왔던 사람만 수익을 낼 수 있지 그렇지 않았던 사람이라면..
2022.01.02 -
지난 게시글에서 일자를 계산해주는 코드를 모두 구축했으니, 이번에는 그 일자를 바탕으로 백테스팅을 진행할 때 어떤 구조로 코드를 작성해야 하는지 살펴볼 예정이다. [파일명 : algortihm_1] while문 이용해서 일자 계산하기 일단 기본적으로 boss 파일 내에 존재하는 클래스를 사용하기 위해서는 import와 인스턴스 생성을 모두 해주어야 한다. 너무 복잡한 개념처럼 들린다면 설명은 제외하고, 아래와 같이 맨 위에서 import한 후에 def __init__ 안에서 calf = cal_function()이라는 코드를 통해 인스턴스를 생성해주면 된다. from boss import cal_function class algo_1(): def __init__(self, kospi_data, kosda..
2.2 백테스팅하기 - 일자 계산 코드 구축하기 (2)지난 게시글에서 일자를 계산해주는 코드를 모두 구축했으니, 이번에는 그 일자를 바탕으로 백테스팅을 진행할 때 어떤 구조로 코드를 작성해야 하는지 살펴볼 예정이다. [파일명 : algortihm_1] while문 이용해서 일자 계산하기 일단 기본적으로 boss 파일 내에 존재하는 클래스를 사용하기 위해서는 import와 인스턴스 생성을 모두 해주어야 한다. 너무 복잡한 개념처럼 들린다면 설명은 제외하고, 아래와 같이 맨 위에서 import한 후에 def __init__ 안에서 calf = cal_function()이라는 코드를 통해 인스턴스를 생성해주면 된다. from boss import cal_function class algo_1(): def __init__(self, kospi_data, kosda..
2022.01.01 -
백테스팅을 진행하는 과정에 있어서는 많은 방법들이 존재하는데, 크게 요약하자면 아래의 두 가지 방법으로 분류할 수 있다. 그 중 본인은 두 번째 방법을 선호하는 편이다. 왜냐하면 이게 실제 시장에서 실제로 개인이 거래를 진행할 때와 가장 유사한 메커니즘으로 거래를 진행하는 방법이기 때문이다. 한 종목 한 종목씩 조건에 부합하는지 여부를 판단하고 시뮬레이션하기 하루 하루 종목을 선정하여 선정된 종목들만 시뮬레이션하기 [파일명 : boss] 일자 계산 코드 구축하기 위의 두 번째 방법으로 시뮬레이션을 진행하기 위해서는 반드시 날짜 코드를 계산해야 한다. 다시 말해, 2021년 1월 1일자를 기준으로 종목을 선정한 후에 1월 2일자를 기준으로 종목을 선정할 수 있도록 2021.1.1과 2021.1.2를 계산해..
2.1 백테스팅하기 - 일자 계산 코드 구축하기 (1)백테스팅을 진행하는 과정에 있어서는 많은 방법들이 존재하는데, 크게 요약하자면 아래의 두 가지 방법으로 분류할 수 있다. 그 중 본인은 두 번째 방법을 선호하는 편이다. 왜냐하면 이게 실제 시장에서 실제로 개인이 거래를 진행할 때와 가장 유사한 메커니즘으로 거래를 진행하는 방법이기 때문이다. 한 종목 한 종목씩 조건에 부합하는지 여부를 판단하고 시뮬레이션하기 하루 하루 종목을 선정하여 선정된 종목들만 시뮬레이션하기 [파일명 : boss] 일자 계산 코드 구축하기 위의 두 번째 방법으로 시뮬레이션을 진행하기 위해서는 반드시 날짜 코드를 계산해야 한다. 다시 말해, 2021년 1월 1일자를 기준으로 종목을 선정한 후에 1월 2일자를 기준으로 종목을 선정할 수 있도록 2021.1.1과 2021.1.2를 계산해..
2022.01.01 -
이제 algorithm_1 이라는 파일 내에 있는 class algo_1() 에서는 kospi_data 와 kosdaq_data , 그리고 item_data 라는 세 개의 데이터를 인자로 받아 각각 self.kospi_data , self.kosdaq_data , self.item_data 라는 변수에 저장해주었다. 이제 여기서 self.item_data라는 변수를 대상으로 for문을 돌면서 종목 코드를 찾아내고, 그 종목 코드를 하나의 변수로 입력해줄 예정이다. [파일명 : algorithm_1] 데이터프레임 내에서 for문 사용하기 데이터프레임 형태의 데이터를 대상으로 반복문에 해당하는 for문을 사용하기 위해서는 .itertuples() 라는 메서드만 추가해주면 된다. 일단 종목별 종목 코드를 바탕..
1.5 백테스팅하기 - 종목별 변수 자동 생성하기 (2)이제 algorithm_1 이라는 파일 내에 있는 class algo_1() 에서는 kospi_data 와 kosdaq_data , 그리고 item_data 라는 세 개의 데이터를 인자로 받아 각각 self.kospi_data , self.kosdaq_data , self.item_data 라는 변수에 저장해주었다. 이제 여기서 self.item_data라는 변수를 대상으로 for문을 돌면서 종목 코드를 찾아내고, 그 종목 코드를 하나의 변수로 입력해줄 예정이다. [파일명 : algorithm_1] 데이터프레임 내에서 for문 사용하기 데이터프레임 형태의 데이터를 대상으로 반복문에 해당하는 for문을 사용하기 위해서는 .itertuples() 라는 메서드만 추가해주면 된다. 일단 종목별 종목 코드를 바탕..
2021.12.31 -
지난 게시글에서는 코스피와 코스닥 지수의 데이터를 불러오는 코드를 구축하고 넘어왔다. 이제 다음으로 구축할 코드는 바로 종목별 데이터가 담겨 있는 변수를 생성하는 것인데, 코스피 종목과 코스닥 종목 내에 있는 종목 개수는 2020년을 기준으로 2,268개 종목으로 정말 무수하게 많다. 그렇다면 이 종목들을 하나하나 변수로 설정해주고 그 변수에 각각의 데이터들을 입력해주어야 그 데이터를 바탕으로 백테스팅을 할 수 있다는 것인데, 너무 복잡하지 않을까 싶다. 어떤 방법이 있을까? 가장 먼저 떠오르는 방법으로는 시뮬레이션을 시작한 후, 데이터베이스 내에 저장되어 있는 종목 코드들을 모두 불러온 후에 하나 하나 돌면서 주가 데이터를 불러온 후 그 주가 데이터를 바탕으로 백테스팅을 진행하고, 한 종목이 끝나면 다..
1.4 백테스팅하기 - 종목별 변수 자동 생성하기 (1)지난 게시글에서는 코스피와 코스닥 지수의 데이터를 불러오는 코드를 구축하고 넘어왔다. 이제 다음으로 구축할 코드는 바로 종목별 데이터가 담겨 있는 변수를 생성하는 것인데, 코스피 종목과 코스닥 종목 내에 있는 종목 개수는 2020년을 기준으로 2,268개 종목으로 정말 무수하게 많다. 그렇다면 이 종목들을 하나하나 변수로 설정해주고 그 변수에 각각의 데이터들을 입력해주어야 그 데이터를 바탕으로 백테스팅을 할 수 있다는 것인데, 너무 복잡하지 않을까 싶다. 어떤 방법이 있을까? 가장 먼저 떠오르는 방법으로는 시뮬레이션을 시작한 후, 데이터베이스 내에 저장되어 있는 종목 코드들을 모두 불러온 후에 하나 하나 돌면서 주가 데이터를 불러온 후 그 주가 데이터를 바탕으로 백테스팅을 진행하고, 한 종목이 끝나면 다..
2021.12.31 -
이번에는 지난 게시글에서 불러온 지수 차트 데이터를 바탕으로 이동평균선 등과 같은 여러 가지 보조 데이터를 제작하기 위해 사용되는 talib 라이브러리의 사용 방법에 대해 살펴보고자 한다. 이 라이브러리는 설치하는 절차가 다소 복잡한 편인데, 그래도 그중에 가장 직관적이고 가장 깔끔하게 설명해둔 글이 있는 것 같아서 가져왔다. 설치는 아래의 링크에 들어가서 하는 것으로 하고, 여기서는 이동평균선 구축에 대해서만 살펴볼 예정이다. ※ [TA-lib 설치 방법, 링크 바로가기] [파일명 : talib_calculator] 이동평균선 구축하기 talib을 설치했다면 여느 라이브러리와 마찬가지로 import를 해주어야 한다. 그 후 이동평균선을 제작하는 방법은 talib.MA(데이터프레임['칼럼명'], 기간)을..
1.3 백테스팅하기 - talib 라이브러리 이용하기이번에는 지난 게시글에서 불러온 지수 차트 데이터를 바탕으로 이동평균선 등과 같은 여러 가지 보조 데이터를 제작하기 위해 사용되는 talib 라이브러리의 사용 방법에 대해 살펴보고자 한다. 이 라이브러리는 설치하는 절차가 다소 복잡한 편인데, 그래도 그중에 가장 직관적이고 가장 깔끔하게 설명해둔 글이 있는 것 같아서 가져왔다. 설치는 아래의 링크에 들어가서 하는 것으로 하고, 여기서는 이동평균선 구축에 대해서만 살펴볼 예정이다. ※ [TA-lib 설치 방법, 링크 바로가기] [파일명 : talib_calculator] 이동평균선 구축하기 talib을 설치했다면 여느 라이브러리와 마찬가지로 import를 해주어야 한다. 그 후 이동평균선을 제작하는 방법은 talib.MA(데이터프레임['칼럼명'], 기간)을..
2021.12.30 -
들어가기 전에 백테스팅을 진행하기 위해 필요한 자료에는 어떤 것들이 있을지 생각해보자. 개개인이 만들고자 하는 알고리즘이 어떤 알고리즘인가에 따라 모두 다르겠지만, 기본적으로 종목별로 상이한 데이터(상장주식수, 거래량, 거래대금, 주가 차트 데이터 등)와 종목에 상관없이 공통적인 데이터(지수 데이터, 시황 데이터 등) 두 개는 반드시 필요할 것이다. 여기서 백테스팅을 진행하는 데에 있어서 필요한 여러 가지 데이터들을 백테스팅을 시작한 시점에서 데이터들을 조회하도록 하고 특정 변수에 저장하도록 한 후에 알고리즘 파일을 진행하는 것이 효과적이다. 아래의 그림을 참고해보자. 1번 작업 절차의 경우에는 boss 파일이 실행되는 순간 지수와 관련된 데이터들을 불러온 후, 알고리즘이 실행되면 데이터들이 저장되어 있..
1.2 백테스팅하기 - 필요한 자료 구축하기들어가기 전에 백테스팅을 진행하기 위해 필요한 자료에는 어떤 것들이 있을지 생각해보자. 개개인이 만들고자 하는 알고리즘이 어떤 알고리즘인가에 따라 모두 다르겠지만, 기본적으로 종목별로 상이한 데이터(상장주식수, 거래량, 거래대금, 주가 차트 데이터 등)와 종목에 상관없이 공통적인 데이터(지수 데이터, 시황 데이터 등) 두 개는 반드시 필요할 것이다. 여기서 백테스팅을 진행하는 데에 있어서 필요한 여러 가지 데이터들을 백테스팅을 시작한 시점에서 데이터들을 조회하도록 하고 특정 변수에 저장하도록 한 후에 알고리즘 파일을 진행하는 것이 효과적이다. 아래의 그림을 참고해보자. 1번 작업 절차의 경우에는 boss 파일이 실행되는 순간 지수와 관련된 데이터들을 불러온 후, 알고리즘이 실행되면 데이터들이 저장되어 있..
2021.12.30 -
이전에 제작했던 백테스팅 관련 게시글들은 한 가지 전략을 기반으로 하여 종목들의 주가 데이터 흐름을 분석하는 것이었다. 따라서 이번에는 여러 가지 전략들을 선택하여 실행할 수 있도록 하는 백테스팅 프로그램을 제작해보고자 한다. 실제로 백테스팅 과정에 있어서 다양한 설정값들을 변경하면서 실행해주어야 할 필요가 있는 만큼, 메인 화면에서 세부 값들을 설정한 후 백테스팅을 진행한다면 백테스팅을 조금 더 수월하게 진행할 수 있을 것이다. UI 파일 생성하기 기본적으로 알고리즘을 선택할 수 있도록 하는 기능만 구현하면 된다는 점을 고려하여 lineEdit 과 pushButton 하나를 추가하자. 그리고 lineEdit 에 값을 입력한 후 pushButton 이 클릭될 경우 입력된 값을 바탕으로 알고리즘을 선택한 ..
1.1 백테스팅하기 - 총괄 프로그램인 boss 파일 제작하기이전에 제작했던 백테스팅 관련 게시글들은 한 가지 전략을 기반으로 하여 종목들의 주가 데이터 흐름을 분석하는 것이었다. 따라서 이번에는 여러 가지 전략들을 선택하여 실행할 수 있도록 하는 백테스팅 프로그램을 제작해보고자 한다. 실제로 백테스팅 과정에 있어서 다양한 설정값들을 변경하면서 실행해주어야 할 필요가 있는 만큼, 메인 화면에서 세부 값들을 설정한 후 백테스팅을 진행한다면 백테스팅을 조금 더 수월하게 진행할 수 있을 것이다. UI 파일 생성하기 기본적으로 알고리즘을 선택할 수 있도록 하는 기능만 구현하면 된다는 점을 고려하여 lineEdit 과 pushButton 하나를 추가하자. 그리고 lineEdit 에 값을 입력한 후 pushButton 이 클릭될 경우 입력된 값을 바탕으로 알고리즘을 선택한 ..
2021.12.29 -
지난 게시글 1.1 웹 스크래핑 - 방법 알아보기 1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1) 1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2) 1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1) 2.1 웹 스크래핑 - 원하는 자료 찾기 (1) 2.2 웹 스크래핑 - 원하는 자료 찾기 (2) 2.3 웹 스크래핑 - 원하는 자료 찾기 (3) 결과물 확인하기 지난 게시글에서 제작했던 코드가 만들어낸 결과물을 보면, 아래의 화면에서 찾아볼 수 있는 8개의 종목 외에도 더 많은 종목들이 출력되는 모습을 확인할 수 있다. 그 이유는 단순하다. 상한가 탭에 있는 8개의 종목에서 끝나지 않고 그 옆에 있는 하한가 탭, 상승 탭,..
2.4 웹 스크래핑 - 불필요한 자료 지우기지난 게시글 1.1 웹 스크래핑 - 방법 알아보기 1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1) 1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2) 1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1) 2.1 웹 스크래핑 - 원하는 자료 찾기 (1) 2.2 웹 스크래핑 - 원하는 자료 찾기 (2) 2.3 웹 스크래핑 - 원하는 자료 찾기 (3) 결과물 확인하기 지난 게시글에서 제작했던 코드가 만들어낸 결과물을 보면, 아래의 화면에서 찾아볼 수 있는 8개의 종목 외에도 더 많은 종목들이 출력되는 모습을 확인할 수 있다. 그 이유는 단순하다. 상한가 탭에 있는 8개의 종목에서 끝나지 않고 그 옆에 있는 하한가 탭, 상승 탭,..
2021.12.22 -
지난 게시글1.1 웹 스크래핑 - 방법 알아보기1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1)1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2)1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1)2.1 웹 스크래핑 - 원하는 자료 찾기 (1)2.2 웹 스크래핑 - 원하는 자료 찾기 (2) 종목 코드 가져오기지난 게시글에서 제작한 `i['href']`와 `i['onclick']` 안에 종목코드가 포함되어 있는데, 이 중 `i['href']` 뒤에 있는 숫자들이 바로 그 종목의 종목 코드에 해당한다. 여기서의 `i['href']`는 자료형이 문자열(string)이기 때문에 우리는 인덱싱을 통해 해당 종목의 종목 코드를 가져올..
2.3 웹 스크래핑 - 원하는 자료 찾기 (3)지난 게시글1.1 웹 스크래핑 - 방법 알아보기1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1)1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2)1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1)2.1 웹 스크래핑 - 원하는 자료 찾기 (1)2.2 웹 스크래핑 - 원하는 자료 찾기 (2) 종목 코드 가져오기지난 게시글에서 제작한 `i['href']`와 `i['onclick']` 안에 종목코드가 포함되어 있는데, 이 중 `i['href']` 뒤에 있는 숫자들이 바로 그 종목의 종목 코드에 해당한다. 여기서의 `i['href']`는 자료형이 문자열(string)이기 때문에 우리는 인덱싱을 통해 해당 종목의 종목 코드를 가져올..
2021.12.22 -
지난 게시글 1.1 웹 스크래핑 - 방법 알아보기 1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1) 1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2) 1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1) 2.1 웹 스크래핑 - 원하는 자료 찾기 (1) 특정 데이터열에서 원하는 값 가져오기 지난 게시글에서는 test_2 변수 내에 td > a을 통해 a 태그 안에 있는 정보만을 저장하도록 하였고, for문을 통해 데이터 하나하나에 접근하는 방법까지 알아보았다. 하지만 궁극적으로 우리에게 필요한 건 그 안에 있는 데이터들에 어떻게 접근할 수 있는가이다. 데이터에 접근을 해야만 데이터를 사용할 수 있는 것 아닌가? 그 방법은 의..
2.2 웹 스크래핑 - 원하는 자료 찾기 (2)지난 게시글 1.1 웹 스크래핑 - 방법 알아보기 1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1) 1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2) 1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1) 2.1 웹 스크래핑 - 원하는 자료 찾기 (1) 특정 데이터열에서 원하는 값 가져오기 지난 게시글에서는 test_2 변수 내에 td > a을 통해 a 태그 안에 있는 정보만을 저장하도록 하였고, for문을 통해 데이터 하나하나에 접근하는 방법까지 알아보았다. 하지만 궁극적으로 우리에게 필요한 건 그 안에 있는 데이터들에 어떻게 접근할 수 있는가이다. 데이터에 접근을 해야만 데이터를 사용할 수 있는 것 아닌가? 그 방법은 의..
2021.12.22 -
지난 게시글 1.1 웹 스크래핑 - 방법 알아보기 1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1) 1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2) 1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1) 원하는 태그 찾기 네이버 증권에서 찾고자 하는 데이터의 위치가 이라는 것을 확인했고, 그 안에 있는 데이터를 불러오기까지 성공했다. 그렇다면 이제 그 안에서 원하는 데이터들을 얻어와야 하는데, 이것 역시 우리가 앞서 box_type_l이라는 값을 찾았던 것처럼 동일한 방식으로 진행해서 데이터를 감싸고 있는 태그를 찾아내면 된다. 아래의 결과값을 확인해보자. 1 1 세기상사 16,050 상한 먼저 >> 세기상사 바른손 지에스..
2.1 웹 스크래핑 - 원하는 자료 찾기 (1)지난 게시글 1.1 웹 스크래핑 - 방법 알아보기 1.2 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (1) 1.3 웹 스크래핑 - urlopen과 beautifulsoup4 사용 방법 (2) 1.4 웹 스크래핑 - requests 라이브러리도 사용해보기(1) 원하는 태그 찾기 네이버 증권에서 찾고자 하는 데이터의 위치가 이라는 것을 확인했고, 그 안에 있는 데이터를 불러오기까지 성공했다. 그렇다면 이제 그 안에서 원하는 데이터들을 얻어와야 하는데, 이것 역시 우리가 앞서 box_type_l이라는 값을 찾았던 것처럼 동일한 방식으로 진행해서 데이터를 감싸고 있는 태그를 찾아내면 된다. 아래의 결과값을 확인해보자. 1 1 세기상사 16,050 상한 먼저 >> 세기상사 바른손 지에스..
2021.12.22