분류 전체보기
-
※ 키움증권 설명서에서 이야기하는 trcode란 Transaction Code의 약칭입니다. ※ 각 Transaction Code(또는 Tr 이름) 클릭 시 사용 방법 링크로 연결됩니다. ※ [call real]은 실시간 데이터를 발생시킴을 의미합니다. ※ 선물옵션 및 지수 관련 데이터는 추후 업데이트 예정입니다. ※ 모든 Transaction Code를 사용하기 위해서는 반드시 이벤트 처리를 해주어야 합니다. ※ 모든 데이터는 멀티 데이터 기반이나, 싱글 데이터와 멀티 데이터가 구분되어 표기된 trcode는 getrepeatcnt()를 사용 이벤트 처리 관련 게시글 바로가기 조건검색식 관련 게시글 바로가기 파이썬 동작 bit 확인 관련 게시글 바로가기 GetRepeatCnt() 함수 사용 바로가기 데이..
키움증권 TR 코드 및 사용 방법 총 정리※ 키움증권 설명서에서 이야기하는 trcode란 Transaction Code의 약칭입니다. ※ 각 Transaction Code(또는 Tr 이름) 클릭 시 사용 방법 링크로 연결됩니다. ※ [call real]은 실시간 데이터를 발생시킴을 의미합니다. ※ 선물옵션 및 지수 관련 데이터는 추후 업데이트 예정입니다. ※ 모든 Transaction Code를 사용하기 위해서는 반드시 이벤트 처리를 해주어야 합니다. ※ 모든 데이터는 멀티 데이터 기반이나, 싱글 데이터와 멀티 데이터가 구분되어 표기된 trcode는 getrepeatcnt()를 사용 이벤트 처리 관련 게시글 바로가기 조건검색식 관련 게시글 바로가기 파이썬 동작 bit 확인 관련 게시글 바로가기 GetRepeatCnt() 함수 사용 바로가기 데이..
2022.02.09 -
키움증권에서 제공하는 Open API에서는 trcode를 통해 데이터를 요청하고 서버에서 요청을 받은 경우 이벤트를 발생시킨 후 해당 이벤트에 결과값을 반환해준다. 따라서 데이터를 요청하기 위해서는 반드시 trcode를 전송하는 부분과 이벤트를 연결하는 부분, 그리고 데이터를 받아오는 세 가지 부분으로 구성해야만 데이터를 사용할 수 있다. 데이터 입력 함수 : SetInPutValue() ↓ 데이터 전송 함수 : CommRqData() ↓ [ 이벤트 처리 코드 ] ↓ 결과값 받아오는 함수 : GetCommData() 의외로 단순하게, 키움증권에서 발생시키는 이벤트의 종류는 8개로, 많지 않다. ## 로그인 이벤트 처리 함수 self.kiwoom.OnEventConnect.connect(self.event..
키움증권 Open API 이벤트 처리하기키움증권에서 제공하는 Open API에서는 trcode를 통해 데이터를 요청하고 서버에서 요청을 받은 경우 이벤트를 발생시킨 후 해당 이벤트에 결과값을 반환해준다. 따라서 데이터를 요청하기 위해서는 반드시 trcode를 전송하는 부분과 이벤트를 연결하는 부분, 그리고 데이터를 받아오는 세 가지 부분으로 구성해야만 데이터를 사용할 수 있다. 데이터 입력 함수 : SetInPutValue() ↓ 데이터 전송 함수 : CommRqData() ↓ [ 이벤트 처리 코드 ] ↓ 결과값 받아오는 함수 : GetCommData() 의외로 단순하게, 키움증권에서 발생시키는 이벤트의 종류는 8개로, 많지 않다. ## 로그인 이벤트 처리 함수 self.kiwoom.OnEventConnect.connect(self.event..
2022.02.09 -
오류 코드 C:\Users\@@@\PycharmProjects\back_Test\algorithm\algorithm_1.py:254: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy self.trade_trace.loc[iloc_num]['profit_rate'] = profit_rate 또는 SettingWithCopyWarning: A valu..
Pandas 오류 : SettingWithCopyWarning오류 코드 C:\Users\@@@\PycharmProjects\back_Test\algorithm\algorithm_1.py:254: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy self.trade_trace.loc[iloc_num]['profit_rate'] = profit_rate 또는 SettingWithCopyWarning: A valu..
2022.01.16 -
오류 코드 Error Code:2013. Lost connection to MySQL server during query 발생 원인 데이터 양이 큰 스키마를 삭제할 때 발생 해결 방법 WorkBench 내에서 쿼리당 할당 시간을 늘림 ① WorkBench 내 우측 상단의 톱니바퀴 모양을 클릭 ② SQL Editor 클릭 ③ MySQL Session 하단의 두 개 부분을 기존 60초에서 3,600초 또는 36,000초 정도로 수정
WorkBench 오류 : Error Code:2013. Lost connection to MySQL server during query오류 코드 Error Code:2013. Lost connection to MySQL server during query 발생 원인 데이터 양이 큰 스키마를 삭제할 때 발생 해결 방법 WorkBench 내에서 쿼리당 할당 시간을 늘림 ① WorkBench 내 우측 상단의 톱니바퀴 모양을 클릭 ② SQL Editor 클릭 ③ MySQL Session 하단의 두 개 부분을 기존 60초에서 3,600초 또는 36,000초 정도로 수정
2022.01.05 -
오류 코드 mysql.connector.errors.DatabaseError: 1812 (HY000): Tablespace is missing for table 해결 방법 Program Data - MySQL - MySQL server 8.0 - Data 경로 안에 스키마 이름과 동일한 폴더 생성 후 실행하면 잘 돌아감 ※ 안 되면 DB를 삭제한 후 다시 생성할 것
WorkBench 오류 : mysql.connector.errors.DatabaseError: 1812 (HY000): Tablespace is missing for table ""오류 코드 mysql.connector.errors.DatabaseError: 1812 (HY000): Tablespace is missing for table 해결 방법 Program Data - MySQL - MySQL server 8.0 - Data 경로 안에 스키마 이름과 동일한 폴더 생성 후 실행하면 잘 돌아감 ※ 안 되면 DB를 삭제한 후 다시 생성할 것
2022.01.05 -
오류 코드 ERROR CODE : 3679. Schema directory "\(table_name)\" does not exist 발생 원인 MySQL 스키마(Schema, Database)를 삭제하는 데에 있어서 오류가 발생할 경우, Program Data - MySQL - MySQL server 8.0 - Data 폴더 내에서 스키마 폴더를 삭제한 후에 다시 워크벤치에서 삭제(Drop)하면 삭제됨 이번에도 똑같은 오류가 발생했길래 Data 폴더 내에서 스키마 폴더를 삭제했더니 이번엔 경로를 알 수 없다고 삭제를 못 함. mysql.connector.errors.DatabaseError: 3678 (HY000) 파이참 실행 중 발생한 오류 전문 Traceback (most recent call las..
WorkBench 오류 : ERROR CODE : 3679. Schema directory "\XXXX\" does not exist오류 코드 ERROR CODE : 3679. Schema directory "\(table_name)\" does not exist 발생 원인 MySQL 스키마(Schema, Database)를 삭제하는 데에 있어서 오류가 발생할 경우, Program Data - MySQL - MySQL server 8.0 - Data 폴더 내에서 스키마 폴더를 삭제한 후에 다시 워크벤치에서 삭제(Drop)하면 삭제됨 이번에도 똑같은 오류가 발생했길래 Data 폴더 내에서 스키마 폴더를 삭제했더니 이번엔 경로를 알 수 없다고 삭제를 못 함. mysql.connector.errors.DatabaseError: 3678 (HY000) 파이참 실행 중 발생한 오류 전문 Traceback (most recent call las..
2022.01.05 -
오류 코드 sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1170, "BLOB/TEXT column 'XXXX' used in key specification without a key length") 해결 방법 인덱스 설정에 있어서 발생하는 오류에 해당함. 따라서 to_sql 내부에 있는 index=True와 그 전의 set_index()가 중복되지 않도록 변경하면 됨 ① set_index()를 지운 후 to_sql 내에서 index=True를 사용 ② set_index()를 유지 후 to_sql 내에서 index=False를 사용 ## 수정 전 tempt_data = pd.DataFrame(self.ohlcv, columns=['dt..
MySQL 오류 : sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1170, "BLOB/TEXT column오류 코드 sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1170, "BLOB/TEXT column 'XXXX' used in key specification without a key length") 해결 방법 인덱스 설정에 있어서 발생하는 오류에 해당함. 따라서 to_sql 내부에 있는 index=True와 그 전의 set_index()가 중복되지 않도록 변경하면 됨 ① set_index()를 지운 후 to_sql 내에서 index=True를 사용 ② set_index()를 유지 후 to_sql 내에서 index=False를 사용 ## 수정 전 tempt_data = pd.DataFrame(self.ohlcv, columns=['dt..
2022.01.04 -
[파일명 : algorithm_1] 종목별 거래량과 거래대금 불러오기 종목별로 사전에 설정한 선정 기준을 충족시키는지 아닌지 그 여부를 판단하기 위해서는 반드시 종목별 거래량과 거래대금, 그리고 종가와 시가 고가 저가 등을 가져와야 한다. 그 방법은 크게 두 가지로 나뉘는데, 데이터프레임에 조건을 걸어 해당 조건을 충족시키는 값을 가져오는 것과 특정 열의 데이터를 모두 불러와서 리스트 형태로 저장한 후 인덱싱을 통해 접근하는 방법이다. ############################################## #### 데이터 변수명이 __day_dataframe일 경우 #### ############################################## self.today = 202101..
2.4 백테스팅하기 - 종목 선정하기 (2)[파일명 : algorithm_1] 종목별 거래량과 거래대금 불러오기 종목별로 사전에 설정한 선정 기준을 충족시키는지 아닌지 그 여부를 판단하기 위해서는 반드시 종목별 거래량과 거래대금, 그리고 종가와 시가 고가 저가 등을 가져와야 한다. 그 방법은 크게 두 가지로 나뉘는데, 데이터프레임에 조건을 걸어 해당 조건을 충족시키는 값을 가져오는 것과 특정 열의 데이터를 모두 불러와서 리스트 형태로 저장한 후 인덱싱을 통해 접근하는 방법이다. ############################################## #### 데이터 변수명이 __day_dataframe일 경우 #### ############################################## self.today = 202101..
2022.01.02 -
지난 게시글에서는 종목별 데이터들을 하나의 변수로 모아 종목별 변수들을 구축했으니, 이번 게시글에서는 그 종목별 변수들을 대상으로 백테스팅을 진행할 종목을 선정할 예정이다. 종목 선정 기준은 무엇으로 설정해야 할지에 대한 고민은 개개인 모두가 다르겠지만, 여러 가지 조건들을 설정해서 종목을 선정할 수 있다는 것만큼은 확실하다. 여기서 어떤 기준 하에 종목을 선정할 것인지와 같은 세부적인 기준들은 개개인이 설정할 일이고, 본인이 게시글 본문에서 사용하는 기준들은 모두 개인적인 기준이니 만큼 '이렇게 하면 수익이 나나?'하는 생각은 지양하고 읽어주길 바란다. 설령 이 기준이 수익이 날 수 있는 종목을 골라주는 기준이라 하더라도, 그를 바탕으로 거래를 해왔던 사람만 수익을 낼 수 있지 그렇지 않았던 사람이라면..
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