Giter Site home page Giter Site logo

pykiwoom's Introduction

pykiwoom

Python Wrapper for Kiwoom Open API+

Books

https://wikidocs.net/book/1173

Examples

로그인

from pykiwoom.kiwoom import *

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

서브 프로세스로 사용하기

키움 클래스를 별도의 서브 프로세스로 사용하려면 KiwoomManager를 사용하면 됩니다. 이를 통해 사용자 프로그램과 키움 클래스를 완전히 분리할 수 있습니다.

메서드

from pykiwoom.kiwoom import *

if __name__ == "__main__":
    km = KiwoomManager()
    km.put_method(("GetMasterCodeName", "005930")) 
    data = km.get_method()
    print(data)

TR

from pykiwoom.kiwoom import *

if __name__ == "__main__":
    km = KiwoomManager()

    tr_cmd = {
        'rqname': "opt10001",
        'trcode': 'opt10001',
        'next': '0',
        'screen': '1000',
        'input': {
            "종목코드": "005930"
        },
        'output': ['종목코드', '종목명', 'PER', 'PBR']
    }

    km.put_tr(tr_cmd)
    data = km.get_tr()
    print(data)

TR 연속 조회

TR 연속 조회의 경우 이전 TR 데이터를 가져간 후 다시 요청해야합니다.

from pykiwoom.kiwoom import *

if __name__ == "__main__":
    km = KiwoomManager()

    tr_cmd = {
        'rqname': "opt10081",
        'trcode': 'opt10081',
        'next': '0',
        'screen': '1000',
        'input': {
            "종목코드": "005930",
            "기준일자": "20200424",
            "수정주가구분": "",
        },
        'output': ["일자", "시가", "고가", "저가", "현재가"]
    }

    for i in range(2):
        if i != 0:
            tr_cmd['next'] = '2'
        
        km.put_tr(tr_cmd)
        data = km.get_tr()
        print(data)

pykiwoom's People

Contributors

brayden-jo avatar hyundonghwangnavermail avatar mr-yoo avatar sharebook-kr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pykiwoom's Issues

When I use block_request(), I kept getting errors as below after I update pykiwoom.

Original code is as below:

hj = kiwoom.block_request("opt10027",
시장구분="000", #시장구분 = 000:전체, 001:코스피, 101:코스닥
정렬구분=1, #정렬구분 = 1:상승률, 2:상승폭, 3:하락률, 4:하락폭, 5:보합
거래량조건="0000", #거래량조건 = 0000:전체조회, 0010:만주이상, 0050:5만주이상, 0100:10만주이상, 0150:15만주이상, 0200:20만주이상, 0300:30만주이상, 0500:50만주이상, 1000:백만주이상
종목조건=4, # 복수조건 지정하는 방법 알아내야....
신용조건=5,
상하한포함=0,
가격조건=0,
거래대금조건=0,
output='전일대비등락률상위종목요청',
next=0)

Errors are as below:

KeyError Traceback (most recent call last)
File c:\Anaconda3\envs\py38\lib\site-packages\pykiwoom\kiwoom.py:209, in Kiwoom.OnReceiveRealData(self, code, rtype, data)
207 # get real data
208 real_data = {"code": code}
--> 209 for fid in self.real_fid[code]:
210 val = self.GetCommRealData(code, fid)
211 real_data[fid] = val

Also, the belows kept being printed even though I didn't command it.

{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:35:35.300610
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:36:06.551576
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:36:37.722454
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:37:08.887502
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:37:40.066521
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:38:11.284867
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:38:42.457518
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:39:13.625232
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}
조회 시간: 20230303 2023-03-03 15:39:44.797449
{'trcode': 'opt10027', 'input': [{'전일대비등락률상위요청': ['시장구분', '정렬구분', '거래량조건', '종목조건', '신용조건', '상하한포함', '가격조건', '거래대금조건']}], 'output': [{'전일대비등락률상위': ['종목분류', '종목코드', '종목명', '현재가', '전일대비기호', '전일대비', '등락률', '매도잔량', '매수잔량', '현재거래량', '체결강도', '횟수']}]}

Please help me.

SendOrder() 메서드에 빠진 내용들

[참조] https://wikidocs.net/82381

Q1. SendOrder()를 이용한 매수 혹은 매도를 진행 시,
아래와 같은 Windows Pop-up 오류가 발생합니다.
"KHOpenAPI 계좌비밀번호 입력창을 통해 계좌비밀번호를 입력하십시오. [2126]"

계좌비밀번호를 어딘 가에 저장하고 (보안이슈)
수동 입력이 없이 주문이 들어가는 기능이 필요합니다.

Q2. 일단 wikidocs에는 주문에 따른 결과 리턴에 대한
내용이 빠져있습니다. 앞으로 더 공부해서 살펴보겠습니다.

로그 아웃 메서드 부재

로그 아웃 메서드가 없는데
정상적인 로그 아웃 메서드가 있다면
좋을 것 같습니다.

Jupyter Notebook에서 테스트 중입니다.
감사합니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.