프로그램 자동 매매 파이썬 키움증권 입니다 키움 OpenAPI 연동 시 DispatchWithEvents 사용해 KHOpenAPI 객체 생성은 성공했지만,CommConnect()

프로그램 자동 매매 파이썬 키움증권 입니다

cont
키움 OpenAPI 연동 시 DispatchWithEvents 사용해 KHOpenAPI 객체 생성은 성공했지만,CommConnect() 호출 시 -2147418113 오류가 계속 발생합니다.OCX는 regsvr32로 정상 등록했고, Python 32bit, 관리자 권한, 영웅문 종료 등 전부 확인했습니다.원인과 해결 방법 아시는 분 계신가요?

-2147418113 (0x8000FFFF) 오류는 **COM 객체 호출 중 “Catastrophic failure (치명적 오류)”**를 의미하며,

키움 OpenAPI 연동에서 CommConnect() 호출 시 발생한다면 다음과 같은 원인과 해결 방안이 있습니다.

1. 문제 요약

  • KHOpenAPI.ocx는 정상적으로 등록됨 (regsvr32)

  • Python은 32bit, 관리자 권한 실행

  • 영웅문은 완전히 종료 상태

  • DispatchWithEvents()로 객체 생성은 성공

  • 그러나 kiwoom.CommConnect() 호출 시 -2147418113 오류 발생

2. 주요 원인과 해결책

✅ ① OpenAPI+가 실행된 상태에서만 CommConnect 작동

  • 해결법: 반드시 OpenAPI 로그인 창이 떠야 하며,

  • 시스템 트레이에 "키움 OpenAPI 로그인 창"이 실행 중이어야 합니다.

  • 방법: CommConnect() 호출 시 로그인 창이 뜨지 않는다면,

  • 관리자 권한 외에도 **UI가 보일 수 있는 환경(콘솔/GUI)**에서 실행해야 함

  • 백그라운드 실행환경 (서비스나 SSH 등)은 오류 유발

✅ ② 이벤트 루프(UI 메시지 루프) 부재

  • CommConnect()는 내부적으로 윈도우 메시지 루프가 필요합니다.

  • 만약 python console이나 단순 스크립트 환경에서 호출하면 이벤트 대기가 불완전해 에러 발생

해결방법:

import pythoncom import time # CommConnect 호출 kiwoom.CommConnect() # 이벤트 루프 대기 while kiwoom.GetConnectState() == 0: pythoncom.PumpWaitingMessages() time.sleep(0.1)

✅ ③ KHOpenAPI.ocx는 반드시 UI 쓰레드에서 실행되어야 함

  • PyQt나 tkinter 같은 GUI 프레임워크 내에서 연동하면 에러가 줄어듬

  • CLI 환경에서는 pythoncom.PumpWaitingMessages()가 필수입니다

✅ ④ 보안 프로그램/백신 충돌 가능성

  • 알약, V3, 윈도우 Defender 등에서 OpenAPI 실행 차단 시 발생 가능

  • 예외처리 또는 일시 중단 필요

✅ ⑤ OCX 재등록 시 관리자 CMD에서 실행했는지 확인

regsvr32 /u KHOpenAPI.ocx regsvr32 KHOpenAPI.ocx

✅ 정리된 해결 순서 체크리스트

  1. ✅ Python은 반드시 32bit 사용

  2. ✅ pythoncom.PumpWaitingMessages()로 이벤트 루프 구성

  3. ✅ 영웅문은 완전히 종료 (트레이 아이콘 포함)

  4. ✅ CommConnect() 후 로그인 창이 떠야 정상

  5. ✅ KHOpenAPI.ocx를 관리자 CMD로 등록

  6. ✅ 보안 프로그램 예외 설정

  7. ✅ GUI 환경(Python tkinter 등)에서 시도해보기





참아야지! 참아라! 그러면 잘 되어 갈 걸세. 친구여, 정말 자네 말이 맞네. 세상 사람들 틈에 끼여 날마다 일에 쫓기며, 다른 사람들이 하는 일과 그들의 행동을 보기 시작한 이후로 나는 나 지신과 휠씬 더 잘 타협할 수 있게 되었네. 젊은 베르테르의 슬픔 - 괴테