728x90
반응형

1. 국내주식 55

(주식 자동 매매) 키움증권 OpenAPI 종목의 현재가를 전역변수에 담기(opt10001)

1. 들어가며 지난 번에는 4종목의 현재가를 pandas모듈의 데이터프레임에 담아 출력해 보았다. 이번에는 4종목의 현재가를 변수에 담아 향후 거래할 때, 현재가 > 매수가이면, 칼같이 매도하는 코드를 알아보자 - 아래 예시의 익절/손절을 구하기 위해서는 매수가격도 구현해야 한다.ㅠㅠ * 4종목 : 삼성전자(005930), 경동나비엔(009450), 아프리카TV(067160), 토니모리(214420) (익절) 현재가격 > 매수가격+ 2,000원이면, 시장가격으로 매도 예정 (손절) 현재가격 < 매수가격 - 3,000원이면, 시장가격으로 매도 예정 2. 사전 준비 KOA StudioSA에서 받아오는 정보는 아래와 같다. (KOA StudioSA 관련 내용은 아래에서 확인 가능한 점을 고려하여, 여기서는 생..

(주식 자동 매매) 키움증권 OpenAPI 4종목 현재가 조회(opt10001)

1. 들어가며 지난 번에는 삼성전자(005930)의 현재가를 받아보았다. 이번에는 4종목의 현재가를 pandas모듈의 데이터프레임에 담아보자 * 4종목 : 삼성전자(005930), 경동나비엔(009450), 아프리카TV(067160), 토니모리(214420) 그런데, 왜 하필 4종목의 현재가만 구현하는 것일까? 필자의 관심사는 해외선물 자동매매거래이다. * 4종목 : 해외선물의 가스(NG), 골드(GC), 나스닥(NQ), 원유(CL) 해외선물의 시세조회 및 거래를 위한 OpenAPI 사용을 위해서는, OpenAPI 한달 이용료가 $170달러이다. 환율 1,423원('22.9.23 기준)으로 계산해 보면, 우리 돈 241,910원, 즉 240천원을 매달 키움 측에 지불해야 한다. 아직 코딩 초창기인 나에게..

(주식 자동 매매) 키움증권 OpenAPI 현재가 조회(opt10001)

1. 들어가며 이전에는 예수금/주문가능금액 조회(opw00001)을 알아보았다. 이번 시간에는 키움증권 OpenAPI를 통해 삼성전자(005930)의 현재가 조회를 알아본다. 2. 사전 준비 파이썬을 통해 키움증권 OpenAPI에 접근하는 코드를 짜기 전에, KOA StudioSA에 접속하여, 어떤 정보를 입력하고, 어떤 정보가 출력되는지 확인해 보자. TR목록에서 현재가로 검색하면 opt10001 TR번호(①)로 "현재가(③)"를 찾을 수 있다. 입력(INPUT, ②)은 종목코드(⑤) 1개만 입력하면 된다. 출력(OUTPUT, ③)으로 종목코드와 현재가를 출력할 것이다. 화면 중간의 코드로 쓰이는 함수(④)는 SetInputValue, CommRqData이다. * ④의 SetInputValue, Com..

(파이썬) 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줄 ..

(파이썬) 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. 결론 파이참에서 특정 줄이 에러가 났다고 해서, 해당 줄만 보고 있으면 해결이 안되는 듯 하다. 함수 선언, 문장 끝에 콜론(:)을 넣었는지 등 꼼꼼한 확인이 필요하다는..

728x90
반응형