Kiwoom明火
koap的Python项目详细描述
KOAPY
Kiwoom Open Api Python
- Free software: MIT OR Apache-2.0 OR GPL-3.0-or-later
- Documentation: https://koapy.readthedocs.io.
Features
KOAPY是为了让{a12}在Python中更容易使用而制作的现场包装和工具。
利用培养中提供的OpenAPI所需的以下知识, 将焦点放在了只要有一定程度的基本Python知识就可以轻松使用上。
- Keum提供的OpenAPI的OCNX库结构
- OCNX在Python驱动PyQt5/PySide2和^{tt1}$生成 在
- 控制中,用于函数调用的^{tt2}$函数使用 为了处理
- 活动,适当的^{tt3}$/^{tt4}$设置及处理
KOAPY提供以下功能。
- PyQt5/PySide2为基础的GUI环境,不需要每天都像一般的库一样带着使用。 可以用CLI形态除此之外在各种地方也很容易使用
- 控制函数调用时,可以像明细中的形态一样,像Python函数一样调用。 之后KOAPY会灵活处理 每次按明细填写^{tt2}$的参数,或者对所有存在的函数不需要提前让Rapper函数受损。 即使不熟悉
- 活动处理及非同步程序设计,也可以通过比较容易的接口来利用相关功能。 从最简单的登录处理到TR/实时数据处理,以及订单处理等多种剧本的基本活动处理逻辑。 从
- 股票基本信息申请到一峰/分封等行情数据确认,还有耶稣金/余额确认,一般常用的功能 提供预制的函数。函数调用结果中,桌面性信息提供^{tt6}$类型,之后分析和处理都很有用。
- TR的输入/输出数据结构,实时数据FID目录,关于错误代码的说明文等, 在开发过程中所需的各种隐喻信息,可以在语言内的库中立即查询和应用。 每次打开{a23}或KOAStudio进行参考,以后不需要一一进行硬编码。 通过
- 本地网络gRPC可以组成服务器-客户端形态。 由此摆脱了“由于库兼容性,只能在32bit环境中工作”的制约,客户端可以使用Pyphon 64bit。 甚至可以将{a25}支持的所有语言写成客户端使用。 除《li》外,还提供了信息/提醒功能、确认休场日、TR调用时限制调用次数等开发和利用所需的多种附加功能。 即使不一定要制作Python代码,也会提供包括各种各样的CLI,以便利用基本功能。 利用CLI确认各市场的代码目录,确认股票基本信息,确认和储存一封/分封数据,实时数据订阅等 您可以在没有代码的情况下使用多种功能。服务器也可以用CLI Comment轻松启动。
以下是运用KOAPY的示例脚本:
importloggingimportthreadingimportgrpcfromkoapyimportKiwoomOpenApiContextfromkoapyimportRealTypefrompprintimportPrettyPrinterfromgoogle.protobuf.json_formatimportMessageToDictfrompandasimportTimestampfromtrading_calendarsimportget_calendarpp=PrettyPrinter()krx_calendar=get_calendar('XKRX')# 주문 테스트 전에 실제로 주문이 가능한지 확인 용도defis_currently_in_session():is_in_session=Falsenow=Timestamp.now(tz=krx_calendar.tz)today_session=now.normalize()ifkrx_calendar.is_session(today_session):opening,closing=krx_calendar.open_and_close_for_session(today_session)is_in_session=opening<=now<=closingreturnis_in_sessionwithKiwoomOpenApiContext()ascontext:# 로그인 예시logging.info('Logging in...')context.EnsureConnected()logging.info('Logged in.')# 기본 함수 호출 예시logging.info('Getting stock codes and names...')codes=context.GetCodeListByMarketAsList('0')names=[context.GetMasterCodeName(code)forcodeincodes]# 위에서 가져온 정보로 삼성전자의 code 확인codes_by_name=dict(zip(names,codes))logging.info('Checking stock code of Samsung...')samsung_code=codes_by_name['삼성전자']code=samsung_codelogging.info('Code: %s',code)# TR 예시 (opt10081)logging.info('Getting daily stock data of Samsung...')data=context.GetDailyStockDataAsDataFrame(code)logging.info('Daily stock data:')print(data)# 조건검색 예시condition_name='대형 저평가 우량주'logging.info('Getting stock codes with condition: %s',condition_name)codes,info=context.GetCodeListByCondition(condition_name,with_info=True)print(codes)print(info)# 주문처리 예시first_account_no=context.GetFirstAvailableAccount()request_name='삼성전자 1주 시장가 신규 매수'# 사용자 구분명, 구분가능한 임의의 문자열screen_no='0001'# 화면번호account_no=first_account_no# 계좌번호 10자리, 여기서는 계좌번호 목록에서 첫번째로 발견한 계좌번호로 매수처리order_type=1# 주문유형, 1 : 신규매수code=samsung_code# 종목코드, 앞의 삼성전자 종목코드quantity=1# 주문수량, 1주 매수price=0# 주문가격, 시장가 매수는 가격설정 의미없음quote_type='03'# 거래구분, 03 : 시장가original_order_no=''# 원주문번호, 주문 정정/취소 등에서 사용# 현재는 기본적으로 주문수량이 모두 소진되기 전까지 이벤트를 듣도록 되어있음 (단순 호출 예시)ifis_currently_in_session():logging.info('Sending order to buy %s, quantity of 1 stock, at market price...',code)foreventincontext.OrderCall(request_name,screen_no,account_no,order_type,code,quantity,price,quote_type,original_order_no):pp.pprint(MessageToDict(event))else:logging.info('Cannot send an order while market is not open, skipping...')# 실시간 예시code_list=[code]fid_list=RealType.get_fids_by_realtype('주식시세')real_type='0'# 기존 화면에 추가가 아니라 신규 생성# 현재는 기본적으로 실시간 이벤트를 무한정 가져옴 (커넥션 컨트롤 가능한 예시)logging.info('Starting to get realtime stock data for code: %s',code)event_iterator=context.GetRealDataForCodesAsStream(code_list,fid_list,real_type,screen_no=None,infer_fids=True,readable_names=True,fast_parse=False)defstop_listening():logging.info('Stopping to listen events...')event_iterator.cancel()threading.Timer(10.0,stop_listening).start()# 10초 이후에 gRPC 커넥션 종료하도록 설정# 이벤트 불러와서 출력처리try:foreventinevent_iterator:pp.pprint(MessageToDict(event))exceptgrpc.RpcErrorase:print(e)logging.info('End of example')除
以外,关于使用方法的各种例子可以在{a27}文件夹中确认。
Installation
该库可通过{a28}设置:
$ pip install koapy
如果您想使用除了基本功能以外的额外功能,您必须像下面一样设置额外的依赖性。
例如backtrader相关功能构成的^{tt7}$模块子的功能, 执行以下命令:
$ pip install koapy[backtrader]关于
详细的安装方法,请参考{a31}。
Usage
设置后,请参考详细使用方法Usage。
现在是阿尔法阶段,所以没有充分测试很多功能是否真的没有问题。 如果您想要用于实战训练,请自行经过充分的测试后再使用。 开发者对库使用造成的损失不负任何责任。
也在阿尔法阶段进行开发,库的结构可能会持续急剧变化,请参考。
Licensing
KOAPY以多重许可证方式发放, 用户可以根据自己的意图和使用方式在以下许可证选项中选择一个使用。
关于许可证选择,推荐的指导方针如下。
- MIT License
-
适合普通用户。
如果您喜欢《li》短而单纯的许可证,请选择该许可证。
-
虽然与《li》MIT许可证没有太大的区别,但是关于专利有明确的许可条款。
各许可证的许可及要求事项,简单整理的内容可以在{a57}中参考。
但请参考上述内容并不是法律上的建议。
Reference
在开发过程中,我们收集了参考或在整体投资过程中一起看比较好的资料。
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.12 (2020-10-11)
- Latest release.
0.1.2 (2020-09-19)
- First release on PyPI.
- 项目
标签: