728x90
반응형

분류 전체보기 235

(파이썬) threading와 time 모듈로 특정 시간마다 반복 실행

1. 들어가기 주식자동매매 프로그램으로 거래를 하다보면, 일정 시간마다 반복되는 함수를 구현할 필요가 있다. 내가 원하는 패턴에서 매수(진입)하여, 익절/손절 라인에 도달하면 칼같이 매도(청산)하고, 마지막으로 주식이 횡보하면, 일정시간이 흐른 뒤 시장가로 매도(청산)하려고 한다. 특정 시간의 매수/매도를 위해서는 함수 반복 및 시간 측정이 필요하다. 이 글에서는 파이썬이 제공하는 threading 모듈과 time 모듈을 이용할 예정이다. threading 모듈은 스레드를 기반으로 병렬 처리하며, timer을 이용하여, 일정시간(interval) 동안 함수를 반복 실행 time 모듈은 시간과 관련된 함수이며, 이글에서는 현재시간을 구할 것이다. 2. 반복되는 모듈 비교 ㅇ while 반복문 : 개인적으로..

(파이썬) TypeError: unsupported operand type(s) for /: 'str' and 'int'

1. 들어가며 파이썬에서는 문자형은 문자형, 인자형은 인자형끼리 문장이 이루어진다. 문자형(str) 및 인자형(in)을 더하거나 빼면 아래의 에러가 발생한다. 2. 오류 예시 a = "100" print(a/4) (expect result) Traceback (most recent call last): File "C:\Users\User\Desktop\pythonProject\str vs int.py", line 3, in print(a/4) TypeError: unsupported operand type(s) for /: 'str' and 'int' 3. 오류 해결 문자형으로 선언된 a를 인자형으로 변경한다. ※ 문자형으로 선언되었다는 것은 숫자 100의 양 옆으로 쌍 따옴표(" ")가 붙었다는 내용이..

(주식 자동 매매) 키움증권 OpenAPI 예수금/주문가능금액 조회 (opw00001)

1. 들어가며 이전에는 키움증권 OpenAPI를 통해 키움서버에 로그인 하는 방법을 알아보았다. 이번 글에서는 로그인 후 키움증권 계좌의 예수금/주문가능금액을 구현하는 코드를 알아보자 ※ 아래 계좌는 모의투자 계좌임을 미리 말씀드린다. 예수금 : 주식거래를 위해 증권사의 계좌에 입금한 금액을 말함 주문가능금액 : 계좌에 입금한 금액 중 구매한 주식금액을 제외하고 남은 금액(=투자가능금액) 2. KOA StudioSA에서 구현 KOA StudioSA에서는 아래의 그림과 같이 TR 요청을 통해, 예수금 및 주문가능금액을 얻는다. ① 키움 서버에 요청하는 TR번호 : opw00001(예수금상세현황요청) ② opw00001(TR요청)을 위해 얻어오는 결과물(예수금, 주식가능금액) ③ TR을 키움 서버에 요청하는..

(주식 자동 매매) 키움증권 OpenAPI 로그인

1. 들어가며키움증권에서 제공하는 OpenAPI를 통해 키움서버에 접근하기 위해서는, 파이썬을 통해 OpenAPI에 접속하여 로그인할 수 있어야 한다. 당초 로그인 후 예수금 받기까지 진행하려고 했으나, 그렇게 되면, 로그인을 위한 코드를 제대로 알 수 없기에 순수하게 로그인 코드를 설명한다. ※ 이 글 이후부터는 로그인 관련 내용은 별도 설명을 하지 아니할 예정이다.2. 코드 설명 - 1줄 : sys는 파이썬의 변수 혹은 함수를 다룬다. - 2줄 : PyQt5.QAxContainer은 QtWidget를 호출하기 위해 임포트함 - 3줄 : PyQt5.QtWidgets는 동시성 처리을 위해 임포트함 - 4줄 : PyQt5.QtCore는 14줄~15줄의 로그인 이벤트 루프 및 실행할 때 필요하다. - 6줄 ..

(파이썬) 함수 정의 및 활용

1. 들어가며 파이썬에서 함수, 메소드, 클래스, 인스턴스는 무엇이며 어떤 역할을 하는가? 코딩에 재미를 느끼는 요즘 부쩍 궁금해지는 고민이다. 함수 : 특정기능의 실현을 위해 정의해 놓은 경우를 말함(def로 시작) 메소드 : 클래스 안에 함수가 정의된 경우를 말함(def로 시작) 클래스 : 함수(메소드)들의 모음 인스턴스 : 클래스를 특정변수에 담는 경우를 말함 2. 함수 예시 아래 에서, ①~③번의 클래스, 함수, 메소드, 인스턴스의 예시이다. ①번의 aaa함수가 정의 → 결과값은 3 ②번의 ccc클래스 내 ddd메소드가 정의됨 → 결과값은 7 * ②번처럼 클래스를 선언하고 실행하기 위해 "ccc.ddd()"로 실행하기에는 클래스 선언하는 것이 아깝다. (① 혹은 ③번처럼 실행하는 것이 효율적) ③..

(파이썬) for문 활용 (2) - zip()함수

1. 들어가며 앞에서는 for문의 기본 구조를 설명하였다. 이번에는 for문과 zip함수를 활용하여, 향후 사용할 종목코드, 수익/손실을 비교할 수 있는 코드를 구현한다. * for문 기본구조 설명 : https://springcoming.tistory.com/12 (주식 자동매매) for문 활용 (1) - 기본 설명 1. 들어가며 for문은 반복적인 작업을 간략하고 효율적으로 실행할 수 있는 코드이다. 이 글에서는 키움증권 OpenAPI를 통해 파이썬 코드 작성할 때 사용되는 for문에 대해 알아본다. 2. for문 설명 1 springcoming.tistory.com 2. zip 함수 설명 ㅇ 개념 : 순회 가능한 객체를 인자로 받고, 각 자료형의 각각의 요소를 나눈 후 리스트로 반환하는 함수 한마디..

(주식 자동 매매) 키움증권 OpenAPI/KOAStudio 설명

1. 들어가며 파이썬으로 주식 자동매매를 실행하기 위해 키움에서 제공하는 OpenAPI 프로그램 설치를 통해 "주식정보 서버"에 접속할 수 있다. * OenAPI 설치하는 방법은 아래의 링크를 참고하면 된다. 링크 : https://www.kiwoom.com/h/customer/download/VOpenApiInfoView 2. 프로그램 간략 설명 KOAStudio : OpenAPI가 제공하는 함수와 이벤트 사용방법을 확인할 수 있는 프로그램 OpenAPI : 사용자가 키움증권 서버에 접근하여 현재가 조회/주문 등을 할 수 있는 프로그램 → 즉 KOAStudio는 모의투자에 접속하여 함수를 테스트해 볼 수 있는 프로그램이고 OpenAPI는 모의투자/실제 투자든 상관없이, 키움증권 서버에서 거래할 수 있는..

(파이썬) SyntaxError: 'await' outside async function 오류

1. 들어가며 비동기 모듈인 asyncio를 파이참에서 실행하려고 할 때, 아래와 같은 에러 발생 : SyntaxError: 'await' outside async function 2. 해결 방법 14번째 줄의 await는 async 비동기 함수 내(12번째 줄)에서 써야 한다 12번째 줄을 변경 : (당초) def myfnc2() (변경) async myfnc2() 오류 원인 : await 명령어는 async 함수 내에서 유효하게 작동한다. 문제 해결 : await 명령어가 있는 구문의 함수(def) 앞에는 async를 붙여준다. 3. 결론 파이참에서 특정 줄이 에러가 났다고 해서, 해당 줄만 보고 있으면 해결이 안되는 듯 하다. 함수 선언, 문장 끝에 콜론(:)을 넣었는지 등 꼼꼼한 확인이 필요하다는..

(파이썬) for문 활용 (1) - 기본 설명

1. 들어가며 for문은 반복적인 작업을 간략하고 효율적으로 실행할 수 있는 코드이다. 이 글에서는 키움증권 OpenAPI를 통해 파이썬 코드 작성할 때 사용되는 for문에 대해 알아본다. 2. for문 설명 1) for문 기초 1부터 10까지 출력하는 for문 코드는 아래와 같다. for i in range(1,11): print(i) 2) list를 활용한 for문 활용 list에 입력된 과일들을 순차적으로 for문으로 결과는 아래와 같다. lists = ["사과", "바나나", "파인애플"] for j in lists: print(f"내가 좋아하는 과일은 {j}이다") 3. for문을 활용하여 3종목의 1분봉 받기 - 3종목 : 삼성전자(005930), SK하이닉스(000660), LG에너지솔루션(..

(파이썬) 주식 자동매매를 위한 사전준비 (필요 모듈)

1. 들어가며 키움증권 openapi를 통해 국내주식 자동거래 시스템을 구축하고 한다. 이를 위해 설치 혹은 가져오기(import)가 필요한 파이썬의 라이브러리를 소개한다. 2. 설치 필요/모듈 가져오기(import) 라이브러리 아래의 11가지를 설치한 후, 소스코드를 작성하는 게 좋아 보인다. 1) anaconda 32bit 설치 → 키움 openapi는 32bit에서 실행하도록 되어 있음 (32비트가 설정되어야 QAxContainer 에러가 발생하지 아니함) * 아나콘다 64bit를 설치한 경우, 32비트가 적용된 가상환경을 설정하여 진행 필요 2) pycharm 설치 → 코드작성 및 실행 화면 출력을 위해 설치 3) pandas 최신 버전 설치 - 1.4버전 이상으로 설치 권..

728x90
반응형