아래의 내용은 유튜브 '조코딩'님의 '파이썬으로 주식거래 자동화만들기'를 참고한 내용입니다.
이제 개발환경을 세팅해본다.
1) 대신증권 비대면계좌 개설
사실 모든 과정중 이 과정이 제일 오래걸려서 너무 킹받는다.....ㅂㄷㅂㄷ
대신증권 회원가입부터 공인인증서까지.....
간단하게 하면 되겠지 하고 '조회전용'으로 로그인하면 안되고 공동인증서까지 등록해서 로그인을 해준다..
2) 시스템 트레이딩 신청
과거데이터를 바탕으로 컴퓨터 프로그래밍을 이용하여 시스템이 투자를 대행하는 방법
대량주문,동시,분할주문을 자동으로 설정할 수 있어서 기관투자자들이 사용하고 있는 방법
즉, 일반투자자들의 판단이 아닌 데이터알고리즘에 의해 매매규칙을 정하고 금융상품을 거래하는 투자방법
그러면 이렇게 '시스템트레이딩'을 신청할 수가 있다.
3) HTS 신청
컴퓨터를 이용해서 주식매매 주문을 내는 시스템, PC전용 주식매매 프로그램
언제어디서든 주식주문, 차트, 매매결과 확인 가능
*MTS(Mobile Trading System) : 모바일전용 주식매매 애플리케이션
제일 왼쪽에 있는 CREON HTS 다운로드 ㄱㄱ
4) 크레온플러스 설정
설치가 완료되면 '크레온플러스' 클릭 후 로그인 ㄱㄱ
그러면 <크레온플러스 Start>라는 아이콘이 생기는데 우클릭으로 '주문 오브젝트 사용동의'
'주문내역 확인설정'에서 주문내역확인 체크해제 ㄱㄱ
즉, 주문이 이루어질때마다 확인하는 팝업창?안내?를 없애겠다는 의미
5) 파이썬3.8설치(32비트)
크레온API는 64비트로는 사용할 수 없다고 한다...
그래서 다시 설치해주었다....하...
아차차,, 그리고 pywinauto 라이브러리를 설치한다 (pip install pywinauto)
윈도우 작업을 자동화해주는 라이브러리인데, 막 메모장키기, 앱로그인하기 같은 GUI작업을 매크로처럼 해줄 수 있다.
나중에 대신증권 크레온앱사용을 위해서 설치하는것 같다.
이제 개발환경을 바탕으로 크레온API가 정상적으로 작동하는지 테스트해본다.
그 중에서 '종목조회하기'를 해본다.
6) 크레온API 테스트
이미 아래의 홈페이지에서 크레온API사용방식 예제가 많다.
크레온API 사용가이드 자료실 : money2.creontrade.com/e5/mboard/ptype_basic/plusPDS/DW_Basic_List.aspx?boardseq=299&m=9505&p=8833&v=8639
크레온api의 기본구조를 살펴보면
1. win32com.client모듈 import
2.win32com.client.Dispatch안에 원하는 기능을 넣어 변수(object)를 만든다.
3.object.setinputValue안에 구체적인 값을 넣는다.
4.object.blockRequest()로 API 서버에 요청
5.API서버에서 처리하고, object.getHeaderValue 또는 object.GetDataValue로 리턴받아서 활용
사실 테스트코드를 돌렸을때, 'PLUS가 정상적으로 연결되지 않음' 메세지가 나왔었다.
참고로, 한글이 깨져서 이것도 추가함
import win32com.client
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
# 연결 여부 체크
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
print("PLUS가 정상적으로 연결되지 않음. ")
exit()
# 종목코드 리스트 구하기
objCpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")
codeList = objCpCodeMgr.GetStockListByMarket(1) #거래소
codeList2 = objCpCodeMgr.GetStockListByMarket(2) #코스닥
print("거래소 종목코드", len(codeList))
for i, code in enumerate(codeList):
secondCode = objCpCodeMgr.GetStockSectionKind(code)
name = objCpCodeMgr.CodeToName(code)
stdPrice = objCpCodeMgr.GetStockStdPrice(code)
print(i, code, secondCode, stdPrice, name)
print("코스닥 종목코드", len(codeList2))
for i, code in enumerate(codeList2):
secondCode = objCpCodeMgr.GetStockSectionKind(code)
name = objCpCodeMgr.CodeToName(code)
stdPrice = objCpCodeMgr.GetStockStdPrice(code)
print(i, code, secondCode, stdPrice, name)
print("거래소 + 코스닥 종목코드 ",len(codeList) + len(codeList2))
그래서 아래의 블로그를 통해서 해결했다.
즉, 원인은 관리자권한으로 실행하지 않은것이다. Python도, 사용하는 에디터툴도 관리자권한으로 실행
m.blog.naver.com/junha0310/221764644049
7) '종목조회하기' 테스트결과
'사이드 프로젝트 > 주식자동 매매 프로그램' 카테고리의 다른 글
Python 주식 자동매매5 - 주식거래 자동화 프로그램 테스트 및 개선사항 (0) | 2021.02.15 |
---|---|
Python 주식 자동매매4 - 주식거래 자동화 프로그램 만들기 (0) | 2021.02.05 |
Python 주식 자동매매3 - 특정종목 Slack 노티 테스트 (0) | 2021.02.05 |
Python 주식 자동매매1 | 주식거래 자동화 개요 및 구조 (0) | 2021.02.05 |