반응형

안녕하세요? 부미붐입니다.

 

지난 포스팅에서는 키움증권 Open API 모듈을 불러오는 법을 을 알아보았습니다.

2021.07.18 - [경제/주식 자동매매] - [파이썬을 이용한 키움(Kiwoom) Open API 주식 자동매매 프로그램 개발] 2. API 모듈 불러오기, 로그인(Login)(1)

 

계속해서 로그인 기능을 구현해보도록 해요..!

 

로그인

키움증권은 키움 Open API는 로그인창을 통해서 접속합니다. 로그인창을 사용한다는 것을 꼭 기억하세요.

보안정책상의 이유로 소스코드에서 고객의 비밀번호를 입력받는 일은 없다고 하니 주의하세요.

 

로그인 함수 사전정보

로그인에 필요한 함수들은 개발가이드에 아주 자세하게 기술되어 있습니다. KOA StudioSA를 통해 살펴볼까요? [개발 가이드] -> [로그인 버전처리] -> [관련함수] 부분을 먼저 보시죠.

여기서 노란색으로 표시된 것이 보이시나요? 이것을 이벤트라고 생각해주세요..! 슬롯이랑 연결시켜주는 이벤트입니다. 지난 시간에 말씀드렸듯이 함수앞에 "On"이란 prefix가 붙어 있습니다.

 

먼저 간단하게 용어정의를 하고 넘어가겠습니다.

시그널(Signal)과 슬롯(Slot)

PyQt는 위젯에 정의된 이벤트를 시그널(Signal)이라고 하고, 이벤트가 발생할 때 호출되는 함수나 메서드를 슬롯(Slot)이라고 부릅니다. 다음시간에 더 정확하게 알아보도록 하고 넘어가겠습니다.

 

키움증권의 Open API의 동작은 요청 -> 이벤트 발생 -> 데이터 획득순으로 동작한다고 지난번에 말씀드렸습니다.

그럼 로그인을 요청하는 함수는 무엇일까요?

바로 CommConnect라는 로그인 윈도우를 실행하는 메서드입니다.

원래 이것을 불러오기위해서는 수백~ 수천줄의 코딩을 해야하지만 QAxwidget에서 제공됩니다.

dynamicCall()을 사용하여할 수 있는데요. 앞으로 자주 사용하게 될 것 같으니 기억해두세요.

 

지난번 코드에 약간 수정이 있었습니다. CommConnect라는 슬롯을 한번 정의해볼까요?

아래와 같이 작성해주세요.

다시 설명을 보시면 로그인이 성공하거나 실패하는 경우 OnEventConnect 이벤트가 발생하고 로그인 성공 여부를 알려준다고 합니다.

 

즉, CommConnect() 시그널 함수를 호출 -> OnEventConnect() 이벤트 발생 -> 에러코드 획득의 순으로 되는거지요.

 

그럼 우리는 이벤트와 슬롯을 연결시켜주어야합니다.

연결시켜주는 방법은 connect0라는 메서드를 통해 할 수 있습니다.

 

OnEventConnect 이벤트를 살펴볼까요?

이벤트 구역을 새롭게 정의를 하고 아래와 같이 코트를 수정해줍니다.

OnEvenvConnect.connect()로 슬롯와 이벤트를 연결해주었습니다.

이때 로그인 성공인지 실패인지 코드를 받아와야하니 메시지를 출력해주는 슬롯도 작성해보았습니다.

 

메시지 출력은 저는 따로 모듈을 만들어서 작성해주었습니다.

앞으로 수 많은 메시지를 출력하게 될테니 미리 하나 만들어두시면 계속 써먹을 수 있을 것입니다.

그럼 코드를 실행 해보도록 하죠.

실행하면 로그인창이 성공적으로 출력됩니다.

아이디와 비밀번호를 입력하면 로그인이 성공적으로 되었다는 메시지를 출력하게 됩니다.

 

잘 따라오셨나요?

 

Reference

저는 여러가지 사이트와 유뷰트를 활용해 공부하고 있습니다.

유튜브 : 프로그램 동산 (https://www.youtube.com/channel/UCq7fsrxP6oi6vnYgPkw92jg)

 

파이썬 증권 데이터 분석:파이썬 입문 웹 스크레이핑 트레이딩 전략 자동 매매, 한빛미디어 파이썬을 이용한 비트코인 자동매매:실시간 자동매매 시스템 개발 입문, 파이스탁, 9791196608804, 유부장,조대표 공저 파이썬을 이용한 비트코인 자동매매:실시간 자동매매 시스템 개발 입문, 파이스탁, 9791196608804, 유부장,조대표 공저

이 포스팅의 일부는 쿠팡파트너스 활동의 일환으로, 이에따른 일정액의 수수료를 지급받고 있습니다.

반응형
복사했습니다!