본문 바로가기
사이드 프로젝트/주식자동 매매 프로그램

Python 주식 자동매매2 - 개발환경설치 및 대신증권 API 구조

by 카프리썬_ 2021. 2. 5.
728x90

아래의 내용은 유튜브 '조코딩'님의 '파이썬으로 주식거래 자동화만들기'를 참고한 내용입니다.

 

이제 개발환경을 세팅해본다. 

 

1) 대신증권 비대면계좌 개설 

사실 모든 과정중 이 과정이 제일 오래걸려서 너무 킹받는다.....ㅂㄷㅂㄷ

대신증권 회원가입부터 공인인증서까지.....

간단하게 하면 되겠지 하고 '조회전용'으로 로그인하면 안되고 공동인증서까지 등록해서 로그인을 해준다..

 

2) 시스템 트레이딩 신청

*시스템트레이딩이란?

과거데이터를 바탕으로 컴퓨터 프로그래밍을 이용하여 시스템이 투자를 대행하는 방법

대량주문,동시,분할주문을 자동으로 설정할 수 있어서 기관투자자들이 사용하고 있는 방법

즉, 일반투자자들의 판단이 아닌 데이터알고리즘에 의해 매매규칙을 정하고 금융상품을 거래하는 투자방법

 

그러면 이렇게 '시스템트레이딩'을 신청할 수가 있다. 

*ㅅ*

 

3) HTS 신청

*HTS란? Home Trading System

컴퓨터를 이용해서 주식매매 주문을 내는 시스템, PC전용 주식매매 프로그램

언제어디서든 주식주문, 차트, 매매결과 확인 가능

*MTS(Mobile Trading System) : 모바일전용 주식매매 애플리케이션

 

제일 왼쪽에 있는 CREON HTS 다운로드 ㄱㄱ

 

4) 크레온플러스 설정 

설치가 완료되면 '크레온플러스' 클릭 후 로그인 ㄱㄱ

그러면 <크레온플러스 Start>라는 아이콘이 생기는데 우클릭으로 '주문 오브젝트 사용동의'

'주문내역 확인설정'에서 주문내역확인 체크해제 ㄱㄱ

즉, 주문이 이루어질때마다 확인하는 팝업창?안내?를 없애겠다는 의미

 

5) 파이썬3.8설치(32비트)

크레온API는 64비트로는 사용할 수 없다고 한다...

그래서 다시 설치해주었다....하...

파이썬설치 홈페이지 : python.org/

 

Welcome to Python.org

The official home of the Python Programming Language

www.python.org

아차차,, 그리고 pywinauto 라이브러리를 설치한다  (pip install pywinauto)

윈도우 작업을 자동화해주는 라이브러리인데, 막 메모장키기, 앱로그인하기 같은 GUI작업을 매크로처럼 해줄 수 있다.

나중에 대신증권 크레온앱사용을 위해서 설치하는것 같다.

 

 

이제 개발환경을 바탕으로 크레온API가 정상적으로 작동하는지 테스트해본다. 

그 중에서 '종목조회하기'를 해본다.

 

6) 크레온API 테스트

 

https://money2.creontrade.com/E5/WTS/Customer/GuideTrading/CW_TradingSystemPlus_Page.aspx?p=8815&v=8633&m=9505

이미 아래의 홈페이지에서 크레온API사용방식 예제가 많다. 

크레온API 사용가이드 자료실 : money2.creontrade.com/e5/mboard/ptype_basic/plusPDS/DW_Basic_List.aspx?boardseq=299&m=9505&p=8833&v=8639

 

크레온플러스자료실 - 크레온

 

money2.creontrade.com

크레온api의 기본구조를 살펴보면

1. win32com.client모듈 import

2.win32com.client.Dispatch안에 원하는 기능을 넣어 변수(object)를 만든다.

3.object.setinputValue안에 구체적인 값을 넣는다.

4.object.blockRequest()로 API 서버에 요청

5.API서버에서 처리하고, object.getHeaderValue 또는 object.GetDataValue로 리턴받아서 활용

크레온API구조 및 메소드설명 참고

 

 

사실 테스트코드를 돌렸을때, '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

 

<대신증권 Open Api> : : "PLUS가 정상적으로 연결되지 않음. " 문제 해결법!!

지금까지1. 대신증권에서 계좌를 만들기. 2. Cybos plus 설치하기https://blog.naver.com/junha0310/22176...

blog.naver.com

7) '종목조회하기' 테스트결과 

 

반응형