⚡ 영웅문4 OpenAPI + Python 완전 정복 - 4단계: 실시간 시세 수신 + 자동매매 구조 설계

반응형

OpenAPI + Python 완전 정복

✅ 4단계 개요: 실시간 시세 수신 & 자동매매 연결

이전 단계까지는 종목을 필터링했다면,
이제는 "실시간 주가 흐름"에 따라 자동으로 매수/매도를 실행합니다.


🔁 STEP 1. 실시간 시세 등록 (SetRealReg)

🔹 기본 구조

python

kiwoom.SetRealReg("1000", "005930", "10;11;12", "0")
인자 설명
"1000" 화면번호 (임의 문자열)
"005930" 종목코드
"10;11;12" 실시간 필드 코드 (10:현재가, 11:전일대비, 12:등락률)
"0" 기존 실시간 등록 해제 여부 (0:추가, 1:갱신)

📡 STEP 2. 실시간 시세 수신 이벤트 구현 (OnReceiveRealData)

python

def OnReceiveRealData(self, code, real_type, real_data):
    if real_type == "주식체결":
        price = kiwoom.GetCommRealData(code, 10)  # 현재가
        volume = kiwoom.GetCommRealData(code, 15)  # 체결량
        print(f"[실시간] 종목: {code}, 현재가: {price}, 체결량: {volume}")
        
        # 예: 매수 조건
        if int(price.replace("-", "").replace("+", "").replace(",", "")) < 80000:
            print("🔔 매수 조건 충족 - 주문 전송 시뮬레이션")
            # 실제 매수 실행 함수 호출 가능

📷 실시간 출력 예시

text

[실시간] 종목: 005930, 현재가: 79,400, 체결량: 1500
🔔 매수 조건 충족 - 주문 전송 시뮬레이션

💸 STEP 3. 매수/매도 주문 실행

키움 API는 SendOrder 함수로 주문을 실행합니다.

python

kiwoom.SendOrder(
    "자동매수",         # 주문 요청 이름
    "2000",            # 화면 번호
    "8123456789",      # 계좌번호
    1,                 # 주문유형 (1:매수, 2:매도)
    "005930",          # 종목코드
    10,                # 주문수량
    0,                 # 주문가격 (시장가일 경우 0)
    "03",              # 주문구분 (03:시장가)
    ""                 # 원주문번호 (정정/취소 시)
)
주문유형 의미
1 매수
2 매도
3~6 정정/취소 등
주문구분 코드의미
00 지정가
03 시장가
05 조건부지정가

✅ 매수 실행 예시 코드

python

def send_buy_order(code, qty=10):
    account = kiwoom.GetLoginInfo("ACCNO").split(";")[0]  # 첫 계좌
    kiwoom.SendOrder("매수주문", "2001", account, 1, code, qty, 0, "03", "")
    print(f"🛒 매수 주문 전송 완료: {code}, 수량: {qty}")

⚠️ 안전장치: 실거래 테스트 전 체크사항

  1. 모의투자 계좌로 실행하세요!
    → 실전 매매는 엄청난 손실로 이어질 수 있습니다
  2. 잔고 확인 필수! → GetChejanData() 또는 잔고조회 API 사용
  3. 시장가 주문 주의 → 03 (시장가)는 즉시 체결됩니다
반응형