분류 전체보기
-
이전 게시글까지 알고리즘에 의해 매수 예정 가격 등을 포함한 결과 데이터가 정상적으로 전달되고 있음을 확인했으므로 main.py 파일 내에서 조건검색식에 의해 집계된 종목의 일봉 및 분봉 데이터를 algorithm_1.py 파일로 전달한 후 그 결과값을 반환받아보도록 하자. 근본적으로 삼성전자는 조건검색식에 의해 잘 집계되지 않으므로, 여태까지 살펴봤던 삼성전자는 이제 더 이상 등장하지 않을 것이다. 차트 데이터를 전달해보자. 이제 구현해야 할 기능은 바로 조건검색식에 의해 집계된 종목의 차트 데이터를 조회하는 버튼( pushButton_7 )이 클릭된 순간 해당 종목의 차트 데이터를 조회함과 동시에 조회가 완료된 경우 algorithm_1.py 파일로 해당 차트 데이터를 전달하여 알고리즘에 의해 계산된..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (13) - 매수 예정 종목 데이터프레임 확인하기 ②이전 게시글까지 알고리즘에 의해 매수 예정 가격 등을 포함한 결과 데이터가 정상적으로 전달되고 있음을 확인했으므로 main.py 파일 내에서 조건검색식에 의해 집계된 종목의 일봉 및 분봉 데이터를 algorithm_1.py 파일로 전달한 후 그 결과값을 반환받아보도록 하자. 근본적으로 삼성전자는 조건검색식에 의해 잘 집계되지 않으므로, 여태까지 살펴봤던 삼성전자는 이제 더 이상 등장하지 않을 것이다. 차트 데이터를 전달해보자. 이제 구현해야 할 기능은 바로 조건검색식에 의해 집계된 종목의 차트 데이터를 조회하는 버튼( pushButton_7 )이 클릭된 순간 해당 종목의 차트 데이터를 조회함과 동시에 조회가 완료된 경우 algorithm_1.py 파일로 해당 차트 데이터를 전달하여 알고리즘에 의해 계산된..
2022.08.28 -
지난 게시글에서 매수 예정 가격 데이터를 데이터프레임화 하였다. 따라서 이번 게시글에서는 해당 파일로부터 데이터를 어떻게 반환받을 수 있는지 살펴보고자 한다. 기본적인 방법론 사실 쓸데없는 내용이라 생각할 수도 있겠지만(정말로 쓸데없는 내용일 수도 있겠지만), 클래스(class)와 클래스 내 함수(def)로부터 반환값을 얻어오는 방법은 단순하다. 예를 들어 아래와 같이 calculator 라는 클래스 내에 add, sub, multiple 이라는 세 개의 함수가 있다고 가정해보자. 해당 클래스는 value1 과 value2 라는 두 개의 변수를 요구하고 있으며, 각각 특정 함수가 실행될 경우 해당 함수에서는 사전에 받은 값 두 개에 대한 산식을 처리한 결과값을 반환하도록 하고 있다. class calcu..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (12) - 매수 예정 종목 데이터프레임 확인하기 ①지난 게시글에서 매수 예정 가격 데이터를 데이터프레임화 하였다. 따라서 이번 게시글에서는 해당 파일로부터 데이터를 어떻게 반환받을 수 있는지 살펴보고자 한다. 기본적인 방법론 사실 쓸데없는 내용이라 생각할 수도 있겠지만(정말로 쓸데없는 내용일 수도 있겠지만), 클래스(class)와 클래스 내 함수(def)로부터 반환값을 얻어오는 방법은 단순하다. 예를 들어 아래와 같이 calculator 라는 클래스 내에 add, sub, multiple 이라는 세 개의 함수가 있다고 가정해보자. 해당 클래스는 value1 과 value2 라는 두 개의 변수를 요구하고 있으며, 각각 특정 함수가 실행될 경우 해당 함수에서는 사전에 받은 값 두 개에 대한 산식을 처리한 결과값을 반환하도록 하고 있다. class calcu..
2022.08.27 -
지난 게시글에서 특정 종목의 매수 예정 가격을 계산해두었는데, 아직 수행되지 않은 한 가지 작업이 남아 있다. 바로 매도 예정 가격이다. 사실 첫 게시글에서 5일 이동평균선이 10일 이동평균선을 이탈했을 때 매도하는 전략을 수립해서 그 전략을 기반으로 거래를 진행하도록 하는 자동 매매 시스템을 구현하고자 했으나, 사실 따지고 보면 5일 이동평균선과 10일 이동평균선 간 데드 크로스 역시 특정 봉이 발생해야 판단할 수 있는 개념이기 때문에, 사전에 매도 예정 가격을 계산하기가 어렵다. 따라서 원래는 매도 예정 가격도 함께 계산하여 매수 함수와 매도 함수를 모두 작성하려 했으나, 아쉽게도 매수 함수만 작성하고 그 방법을 응용해서 매도 함수를 직접 작성하는 방법밖에는 없을 것 같다는 생각을 하게 된다. 매도 ..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (11) - 알고리즘 구현하기 ⑥지난 게시글에서 특정 종목의 매수 예정 가격을 계산해두었는데, 아직 수행되지 않은 한 가지 작업이 남아 있다. 바로 매도 예정 가격이다. 사실 첫 게시글에서 5일 이동평균선이 10일 이동평균선을 이탈했을 때 매도하는 전략을 수립해서 그 전략을 기반으로 거래를 진행하도록 하는 자동 매매 시스템을 구현하고자 했으나, 사실 따지고 보면 5일 이동평균선과 10일 이동평균선 간 데드 크로스 역시 특정 봉이 발생해야 판단할 수 있는 개념이기 때문에, 사전에 매도 예정 가격을 계산하기가 어렵다. 따라서 원래는 매도 예정 가격도 함께 계산하여 매수 함수와 매도 함수를 모두 작성하려 했으나, 아쉽게도 매수 함수만 작성하고 그 방법을 응용해서 매도 함수를 직접 작성하는 방법밖에는 없을 것 같다는 생각을 하게 된다. 매도 ..
2022.08.27 -
세 줄 요약2022년형 16인치 LG 그램(안티 글레어 패널 기준) 액정 수리 비용 : 305,000원(공임비가 3만원인가 3.5만원인가 그럼..)노트북 침수 과실 : 당연히 본인구매한지 얼마 안 된 제품에 대한 A/S 비용 할인 여부 : 없음 지난 7월 13일부터 폭우 뺨치는 비가 왔는데, 비의 양이야 둘째 치고 나는 노트북을 파우치 안에 넣고 그 파우치를 가방 안에 넣어뒀으며 우산을 쓰고 다녔음을 명확하게 밝힘. 아래 사진 상에서 보면 7월 13일에 일 강수량이 114.5mm로 엄청나게 많이 왔음. 이번에 서울에 물바다가 생기면서 온갖 지하가 침수됐던 8월의 폭우는 8일부터 9일까지 이틀 간 발생한 폭우였는데, 이 때 일 강수량이 129.6mm와 123.1mm로 평균 126.35mm의 강수랼이 발생했..
LG 그램 액정 수리(교체) 후기세 줄 요약2022년형 16인치 LG 그램(안티 글레어 패널 기준) 액정 수리 비용 : 305,000원(공임비가 3만원인가 3.5만원인가 그럼..)노트북 침수 과실 : 당연히 본인구매한지 얼마 안 된 제품에 대한 A/S 비용 할인 여부 : 없음 지난 7월 13일부터 폭우 뺨치는 비가 왔는데, 비의 양이야 둘째 치고 나는 노트북을 파우치 안에 넣고 그 파우치를 가방 안에 넣어뒀으며 우산을 쓰고 다녔음을 명확하게 밝힘. 아래 사진 상에서 보면 7월 13일에 일 강수량이 114.5mm로 엄청나게 많이 왔음. 이번에 서울에 물바다가 생기면서 온갖 지하가 침수됐던 8월의 폭우는 8일부터 9일까지 이틀 간 발생한 폭우였는데, 이 때 일 강수량이 129.6mm와 123.1mm로 평균 126.35mm의 강수랼이 발생했..
2022.08.15 -
파이썬에서는 오류를 처리하는 데에 있어 try:와 except: 두 가지를 가장 주로 사용한다. try:와 except:의 사용 방법 주로 try: 하단에는 실행할 코드를 작성하고 except: 하단에는 오류 발생 시에 실행할 코드를 작성한다. 아래의 예시를 살펴보자. a = [0] print(a[1]) a라는 변수는 리스트(list) 형태의 자료형이고, 0이라는 값 하나만 입력돼있다. 따라서 a라는 변수 내에 입력돼 있는 데이터에 접근하기 위한 방법은 a[0]과 a[-1] 두 가지 밖에 없는데, Line 3 에서와 같이 print(a[1])을 사용하게 되면 아래의 Line 5 와 같이 IndexError 가 발생하게 된다. >>> print(a[1]) Traceback (most recent call ..
파이썬, try:와 except:의 동작 구조파이썬에서는 오류를 처리하는 데에 있어 try:와 except: 두 가지를 가장 주로 사용한다. try:와 except:의 사용 방법 주로 try: 하단에는 실행할 코드를 작성하고 except: 하단에는 오류 발생 시에 실행할 코드를 작성한다. 아래의 예시를 살펴보자. a = [0] print(a[1]) a라는 변수는 리스트(list) 형태의 자료형이고, 0이라는 값 하나만 입력돼있다. 따라서 a라는 변수 내에 입력돼 있는 데이터에 접근하기 위한 방법은 a[0]과 a[-1] 두 가지 밖에 없는데, Line 3 에서와 같이 print(a[1])을 사용하게 되면 아래의 Line 5 와 같이 IndexError 가 발생하게 된다. >>> print(a[1]) Traceback (most recent call ..
2022.07.31 -
지난 게시글에서는 매수 가격과 매도 가격을 계산하는 과정에서 발생할 수 있는 몇 가지 오류와 추후 직면하게 될 오류 상황에 대해 간단하게 살펴봤다. 이번 게시글에서부터는 다시 본론으로 돌아와서, 매수 가격을 기반으로 해당 매수 가격에 닿았던 이력이 있는지 확인하는 방법에 대해 살펴보고자 한다. 매수가 진행된 종목인가, 아니면 상승만 했던 종목인가? 우리는 현재, 5일 이동평균선이 20일 이동평균선을 상향돌파한 시점에서의 시가 데이터와 이후 형성된 고가 데이터를 기반으로 하여 그 중심값에 해당하는 매수 예정 가격을 계산해냈다. 이제는 고가가 형성된 이후 매수 예정 가격에 닿았는지를 확인해봐야 한다. 어떤 방법으로 확인할 수 있을까? 일단 기본적으로, 현재 반복문(for 문) 내부에서는 고가 데이터가 갱신된..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (10) - 알고리즘 구현하기 ⑤지난 게시글에서는 매수 가격과 매도 가격을 계산하는 과정에서 발생할 수 있는 몇 가지 오류와 추후 직면하게 될 오류 상황에 대해 간단하게 살펴봤다. 이번 게시글에서부터는 다시 본론으로 돌아와서, 매수 가격을 기반으로 해당 매수 가격에 닿았던 이력이 있는지 확인하는 방법에 대해 살펴보고자 한다. 매수가 진행된 종목인가, 아니면 상승만 했던 종목인가? 우리는 현재, 5일 이동평균선이 20일 이동평균선을 상향돌파한 시점에서의 시가 데이터와 이후 형성된 고가 데이터를 기반으로 하여 그 중심값에 해당하는 매수 예정 가격을 계산해냈다. 이제는 고가가 형성된 이후 매수 예정 가격에 닿았는지를 확인해봐야 한다. 어떤 방법으로 확인할 수 있을까? 일단 기본적으로, 현재 반복문(for 문) 내부에서는 고가 데이터가 갱신된..
2022.07.25 -
이번 게시글에서는 지난 게시글에서 구현하지 못했던 일자 데이터를 함께 출력하는 기능을 구현하는 것부터 시작해서, 오류를 바로 잡아 매수 예정 가격 데이터까지 모두 계산해보도록 하자. 일자 데이터 출력하기 사실 파이썬의 print("")문보다도 더 좋은 게 print(f"")이다. 왜냐하면 그 안에 중괄호, 즉 {}를 넣어 해당 위치에 변수를 직접 입력할 수 있기 때문이다. 이제 코드를 돌려서 언제 고가 데이터가 갱신되었는지 확인해보도록 하자. ※ Line : 8 def run(self): self.highest_price = self.start_price for data in self.min5_data.itertuples(): high = int(data.high) if high > self.highes..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (9) - 알고리즘 구현하기 ④이번 게시글에서는 지난 게시글에서 구현하지 못했던 일자 데이터를 함께 출력하는 기능을 구현하는 것부터 시작해서, 오류를 바로 잡아 매수 예정 가격 데이터까지 모두 계산해보도록 하자. 일자 데이터 출력하기 사실 파이썬의 print("")문보다도 더 좋은 게 print(f"")이다. 왜냐하면 그 안에 중괄호, 즉 {}를 넣어 해당 위치에 변수를 직접 입력할 수 있기 때문이다. 이제 코드를 돌려서 언제 고가 데이터가 갱신되었는지 확인해보도록 하자. ※ Line : 8 def run(self): self.highest_price = self.start_price for data in self.min5_data.itertuples(): high = int(data.high) if high > self.highes..
2022.07.22 -
지난 게시글에서는 매수 가격의 기준이 되는 시가(self.start_price) 변수 값을 구했으니, 이번 게시글에서는 5분봉 차트 데이터가 담긴 변수인 self.min5_data 변수를 대상으로 for문을 사용하여 예정 매수 가격 데이터를 구해보자. 매수 예정 가격 계산하기 일단 기본적으로 이동평균선 간 골든 크로스가 발생한 시점의 봉의 시가 값인 self.start_price를 기준으로 해서 고가가 갱신될 때마다 해당 고가와 self.start_price 의 중간 가격을 매수 예정 가격으로 할 것이다. 그러기 위해서는 for문을 통해 특정 고가 데이터가 이전의 고가 데이터보다 높은지를 지속적으로 확인해줘야 한다. 이러한 기능은 어떻게 구현할 수 있을까? 기본적으로 데이터프레임을 대상으로 for문을 돌..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (8) - 알고리즘 구현하기 ③지난 게시글에서는 매수 가격의 기준이 되는 시가(self.start_price) 변수 값을 구했으니, 이번 게시글에서는 5분봉 차트 데이터가 담긴 변수인 self.min5_data 변수를 대상으로 for문을 사용하여 예정 매수 가격 데이터를 구해보자. 매수 예정 가격 계산하기 일단 기본적으로 이동평균선 간 골든 크로스가 발생한 시점의 봉의 시가 값인 self.start_price를 기준으로 해서 고가가 갱신될 때마다 해당 고가와 self.start_price 의 중간 가격을 매수 예정 가격으로 할 것이다. 그러기 위해서는 for문을 통해 특정 고가 데이터가 이전의 고가 데이터보다 높은지를 지속적으로 확인해줘야 한다. 이러한 기능은 어떻게 구현할 수 있을까? 기본적으로 데이터프레임을 대상으로 for문을 돌..
2022.07.22 -
지난 게시글에서는 이상한 차트 데이터를 재수정하는 기능을 추가했으니, 이번 게시글에서는 제발 매수 가격과 매도 가격을 계산할 수 있길 바란다. 우리가 구현할 전략에 알맞은 데이터인가?이전 게시글에서 우리가 수립할 전략에 대해 다음과 같은 세 가지 기준을 설정했었다.5일 이동평균선이 20일 이동평균선을 상향 돌파(골든 크로스)한 시점에서 매수5일 이동평균선이 10일 이동평균선을 하향 돌파(데드 크로스)한 시점에서 손절매수가 대비 5% 지점에서 수익 실현하지만 이 전략을 보면, 명확한 기준이 없다. 왜냐하면 골든 크로스나 데드 크로스가 발생하는 시점에서, 해당 봉의 종가에 매수에 가담할 것인지 내지는 골든 크로스 또는 데드 크로스가 발생하게 되는 명확한 가격을 넘어설 때 매수에 가담할 것인지와 같은 세부..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (7) - 알고리즘 구현하기 ②지난 게시글에서는 이상한 차트 데이터를 재수정하는 기능을 추가했으니, 이번 게시글에서는 제발 매수 가격과 매도 가격을 계산할 수 있길 바란다. 우리가 구현할 전략에 알맞은 데이터인가?이전 게시글에서 우리가 수립할 전략에 대해 다음과 같은 세 가지 기준을 설정했었다.5일 이동평균선이 20일 이동평균선을 상향 돌파(골든 크로스)한 시점에서 매수5일 이동평균선이 10일 이동평균선을 하향 돌파(데드 크로스)한 시점에서 손절매수가 대비 5% 지점에서 수익 실현하지만 이 전략을 보면, 명확한 기준이 없다. 왜냐하면 골든 크로스나 데드 크로스가 발생하는 시점에서, 해당 봉의 종가에 매수에 가담할 것인지 내지는 골든 크로스 또는 데드 크로스가 발생하게 되는 명확한 가격을 넘어설 때 매수에 가담할 것인지와 같은 세부..
2022.07.21 -
이번 게시글부터는 사전에 만들어 둔 차트 데이터를 기반으로 매수 가격과 매도 가격을 추출하는 알고리즘을 구현할 것이다. 알고리즘 디버깅 현재 제작하고 있는 알고리즘이 정상적으로 동작하는지 확인하는 방법은 크게 두 가지가 있다. 바로 사전에 MySQL 내에 저장해둔 데이터베이스를 불러와서 사용하는 방법과 키움증권 Open API 코드가 구현되어 있는 main.py 파일 내에서 우리가 원하는 종목의 차트 데이터를 바로 전달해준 후에 계산 과정을 보는 방법이다. 첫 번째 방법의 경우 데이터가 저장되어 있는 시점까지만을 대상으로 알고리즘을 확인할 수 있다는 단점이 있지만 로그인하지 않아도 되어 시간을 단축시킬 수 있다는 장점이 있다. 두 번째 방법의 경우 디버깅을 할 때마다 로그인을 해야 하고 차트 데이터를 불..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (6) - 알고리즘 구현하기 ①이번 게시글부터는 사전에 만들어 둔 차트 데이터를 기반으로 매수 가격과 매도 가격을 추출하는 알고리즘을 구현할 것이다. 알고리즘 디버깅 현재 제작하고 있는 알고리즘이 정상적으로 동작하는지 확인하는 방법은 크게 두 가지가 있다. 바로 사전에 MySQL 내에 저장해둔 데이터베이스를 불러와서 사용하는 방법과 키움증권 Open API 코드가 구현되어 있는 main.py 파일 내에서 우리가 원하는 종목의 차트 데이터를 바로 전달해준 후에 계산 과정을 보는 방법이다. 첫 번째 방법의 경우 데이터가 저장되어 있는 시점까지만을 대상으로 알고리즘을 확인할 수 있다는 단점이 있지만 로그인하지 않아도 되어 시간을 단축시킬 수 있다는 장점이 있다. 두 번째 방법의 경우 디버깅을 할 때마다 로그인을 해야 하고 차트 데이터를 불..
2022.07.21 -
여태까지 조건검색식에 저장되어 있는 종목코드 리스트를 불러와서 해당 종목의 차트 데이터를 조회하는 부분까지 기능을 구현하였으니, 이제는 차트 데이터를 기반으로 알고리즘에 전달해서 우리가 원하는 매수 가격과 매도 가격을 계산해줄 차례이다. 어디까지나 방법론에 대해 설명하고 있을 뿐, 여기서 소개하는 알고리즘은 실제 거래에 사용하는 알고리즘이 아니며 수익이 발생할 것으로 검증된 알고리즘도 아님을 사전에 고지하고자 한다. 알고리즘 폴더·파일 생성하기 폴더의 이름은 Algorithm으로, 파일의 이름은 algorithm_1으로 하여 생성하도록 하자. 이제 algorithm_1.py 파일 내에서는 전달받은 데이터를 기반으로 하여 매수 가격과 매도 가격을 전달받아 하나의 데이터프레임으로 저장하고, 매일 장 시작 전..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (5) - 알고리즘 파일 생성하기여태까지 조건검색식에 저장되어 있는 종목코드 리스트를 불러와서 해당 종목의 차트 데이터를 조회하는 부분까지 기능을 구현하였으니, 이제는 차트 데이터를 기반으로 알고리즘에 전달해서 우리가 원하는 매수 가격과 매도 가격을 계산해줄 차례이다. 어디까지나 방법론에 대해 설명하고 있을 뿐, 여기서 소개하는 알고리즘은 실제 거래에 사용하는 알고리즘이 아니며 수익이 발생할 것으로 검증된 알고리즘도 아님을 사전에 고지하고자 한다. 알고리즘 폴더·파일 생성하기 폴더의 이름은 Algorithm으로, 파일의 이름은 algorithm_1으로 하여 생성하도록 하자. 이제 algorithm_1.py 파일 내에서는 전달받은 데이터를 기반으로 하여 매수 가격과 매도 가격을 전달받아 하나의 데이터프레임으로 저장하고, 매일 장 시작 전..
2022.07.20 -
지난 게시글에서 조건검색기에 따른 종목 코드 리스트를 반환하도록 했으니, 이번 게시글에서는 self.code_list 변수 내에 입력되어 있는 종목코드를 기반으로 차트 데이터를 조회하도록 하는 기능을 구현해보자. 차트 데이터 조회 버튼 구현하기 현재 구현한 기능은 아래와 같은 3개이다. [조건식 조회] (pushButton_5) → 서버에 저장되어 있는 조건검색식 리스트를 사용자 컴퓨터에 저장함 [콤보박스] (comboBox) → 조건검색식 정보를 comboBox 내에 차례차례 입력함 [조회] (pushButton_6) → comboBox 내 활성화된 조건검색식에 따라 집계된 종목코드를 조회함(self.code_list 생성) 이제 객체 이름을 pushButton_7로 하는 차트 데이터 조회 버튼을 생성..
[자동 매매 시스템 구축하기] 알고리즘 구축하기 (4) - 차트 데이터 요청하기지난 게시글에서 조건검색기에 따른 종목 코드 리스트를 반환하도록 했으니, 이번 게시글에서는 self.code_list 변수 내에 입력되어 있는 종목코드를 기반으로 차트 데이터를 조회하도록 하는 기능을 구현해보자. 차트 데이터 조회 버튼 구현하기 현재 구현한 기능은 아래와 같은 3개이다. [조건식 조회] (pushButton_5) → 서버에 저장되어 있는 조건검색식 리스트를 사용자 컴퓨터에 저장함 [콤보박스] (comboBox) → 조건검색식 정보를 comboBox 내에 차례차례 입력함 [조회] (pushButton_6) → comboBox 내 활성화된 조건검색식에 따라 집계된 종목코드를 조회함(self.code_list 생성) 이제 객체 이름을 pushButton_7로 하는 차트 데이터 조회 버튼을 생성..
2022.07.20