Skip to content

Commit

Permalink
Add gitter, and other license related things
Browse files Browse the repository at this point in the history
  • Loading branch information
elbakramer committed Oct 17, 2020
1 parent 25f21d9 commit 6266227
Show file tree
Hide file tree
Showing 10 changed files with 126 additions and 8,760 deletions.
107 changes: 85 additions & 22 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ KOAPY
:target: https://pypi.python.org/pypi/koapy/
:alt: PyPI Status

.. badges from below are commendted out
.. .. image:: https://img.shields.io/pypi/dm/koapy.svg
:target: https://pypi.python.org/pypi/koapy/
:alt: PyPI Monthly Donwloads
Expand Down Expand Up @@ -44,6 +46,8 @@ KOAPY
:alt: Requires.io Requirements Status
.. .. image:: https://requires.io/github/elbakramer/koapy/requirements.svg?branch=master
.. badges from below are commendted out
.. .. image:: https://pyup.io/repos/github/elbakramer/koapy/shield.svg
:target: https://pyup.io/repos/github/elbakramer/koapy/
:alt: PyUp Updates
Expand All @@ -60,10 +64,18 @@ KOAPY
:alt: FOSSA Status


.. container::

.. image:: https://badges.gitter.im/elbakramer/koapy.svg
:target: https://gitter.im/koapy/community
:alt: Gitter Chat
.. .. image:: https://img.shields.io/gitter/room/elbakramer/koapy.svg
Kiwoom Open Api Python


* Free software: MIT license
* Free software: MIT OR Apache-2.0 OR GPL-3.0-or-later
* Documentation: https://koapy.readthedocs.io.


Expand Down Expand Up @@ -214,6 +226,30 @@ KOAPY 는 아래와 같은 기능을 제공합니다.
이외에 사용법과 관련한 다양한 예시들은 examples_ 폴더에서 확인 가능합니다.

.. _`키움증권의 OpenAPI`: https://www3.kiwoom.com/nkw.templateFrameSet.do?m=m1408000000

.. _PyQt5: https://www.riverbankcomputing.com/software/pyqt/
.. _PySide2: https://doc.qt.io/qtforpython/index.html
.. _매뉴얼: https://download.kiwoom.com/web/openapi/kiwoom_openapi_plus_devguide_ver_1.5.pdf
.. _KOAStudio: https://download.kiwoom.com/web/openapi/kiwoom_openapi_plus_devguide_ver_1.5.pdf#page=7
.. _gRPC: https://grpc.io/
.. _examples: https://github.com/elbakramer/koapy/tree/master/koapy/examples

.. |QAxWidget| replace:: ``QAxWidget``
.. _QAxWidget: https://doc.qt.io/qt-5/qaxwidget.html
.. |dynamicCall| replace:: ``dynamicCall``
.. _dynamicCall: https://doc.qt.io/qt-5/qaxbase.html#dynamicCall
.. |signal| replace:: ``signal``
.. _signal: https://doc.qt.io/qt-5/signalsandslots.html#signals
.. |slot| replace:: ``slot``
.. _slot: https://doc.qt.io/qt-5/signalsandslots.html#slots
.. |pandas.DataFrame| replace:: ``pandas.DataFrame``
.. _`pandas.DataFrame`: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html


Installation
------------

해당 라이브러리는 PyPI_ 를 통해서 설치 가능합니다:

.. code-block:: console
Expand All @@ -225,36 +261,63 @@ KOAPY 는 아래와 같은 기능을 제공합니다.
자세한 설치방법과 관련해서는 Installation_ 을 참고하세요.

이후 사용법에 대해서는 Usage_ 를 참고하세요.
.. _PyPI: https://pypi.org/project/koapy/
.. _Installation: https://koapy.readthedocs.io/en/latest/installation.html


Usage
-----

설치 이후 세부적인 사용법에 대해서는 Usage_ 를 참고하세요.

현재 알파 단계이기 때문에 많은 기능들이 실제로 문제없이 동작하는지 충분히 테스트되지 않았습니다.
만약에 실전 트레이딩에 사용하려는 경우 자체적으로 충분한 테스트를 거친 후 사용하시기 바랍니다.
개발자는 라이브러리 사용으로 인해 발생하는 손실에 대해 어떠한 책임도 지지 않습니다.

또한 알파 단계에서 개발이 진행되면서 라이브러리의 구조가 계속 급격하게 변경될 수 있으니 참고 바랍니다.

.. _`키움증권의 OpenAPI`: https://www3.kiwoom.com/nkw.templateFrameSet.do?m=m1408000000

.. _PyQt5: https://www.riverbankcomputing.com/software/pyqt/
.. _PySide2: https://doc.qt.io/qtforpython/index.html
.. _매뉴얼: https://download.kiwoom.com/web/openapi/kiwoom_openapi_plus_devguide_ver_1.5.pdf
.. _KOAStudio: https://download.kiwoom.com/web/openapi/kiwoom_openapi_plus_devguide_ver_1.5.pdf#page=7
.. _gRPC: https://grpc.io/
.. _examples: https://github.com/elbakramer/koapy/tree/master/koapy/examples
.. _PyPI: https://pypi.org/project/koapy/
.. _Installation: https://koapy.readthedocs.io/en/latest/installation.html
.. _Usage: https://koapy.readthedocs.io/en/latest/usage.html

.. |QAxWidget| replace:: ``QAxWidget``
.. _QAxWidget: https://doc.qt.io/qt-5/qaxwidget.html
.. |dynamicCall| replace:: ``dynamicCall``
.. _dynamicCall: https://doc.qt.io/qt-5/qaxbase.html#dynamicCall
.. |signal| replace:: ``signal``
.. _signal: https://doc.qt.io/qt-5/signalsandslots.html#signals
.. |slot| replace:: ``slot``
.. _slot: https://doc.qt.io/qt-5/signalsandslots.html#slots
.. |pandas.DataFrame| replace:: ``pandas.DataFrame``
.. _`pandas.DataFrame`: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html
Licensing
---------

KOAPY 는 다중 라이선스 방식으로 배포되며,
사용자는 자신의 의도 및 사용 방식에 따라 아래 라이선스 옵션들 중 하나를 골라 사용할 수 있습니다.

* `MIT License`_
* `Apache License 2.0`_
* `GNU General Public License v3.0`_ or later

라이선스 선택과 관련하여 개인적으로 추천하는 가이드라인은 아래와 같습니다.

* `MIT License`_
* 일반적인 사용자에게 알맞습니다.
* 짧고 단순한 라이선스를 선호하시면 해당 라이선스를 선택하세요.
* `Apache License 2.0`_
* MIT 라이선스와 큰 차이는 없지만, 특허와 관련해서 명시적인 허가조항이 있습니다.
* 추후 특허권과 관련해 우려되는 부분이 있는 경우 MIT 대신에 선택하시면 됩니다.
* `GNU General Public License v3.0`_ or later
* FSF_/GPL_ 이 추구하는 Copyleft_ 의 가치를 따르신다면 선택 가능한 옵션중 하나입니다.
* 이외에 backtrader_ 와 관련된 기능들을 활용하시는 경우, 해당 패키지는 **반드시** GPLv3+ 로만 배포되어야 합니다.
* 이것은 backtrader_ 가 GPLv3+ 로 배포되고 있으며,
라이선스의 요구사항에 따라 그것을 사용하는 소프트웨어도 GPLv3+ 로 배포되어야 하기 때문입니다.

각 라이선스의 허가 및 요구사항과 관련해서 쉽게 정리된 내용은 `tr;dlLegal`_ 에서 참고하실 수 있습니다.

다만 위의 내용이 법률적 조언은 아닌 점 참고 바랍니다.

.. _`MIT License`: https://spdx.org/licenses/MIT.html
.. _`Apache License 2.0`: http://www.apache.org/licenses/LICENSE-2.0
.. _`GNU General Public License v3.0`: https://www.gnu.org/licenses/gpl-3.0.html

.. _FSF: https://www.fsf.org/
.. _GPL: https://www.gnu.org/licenses/licenses.html#GPL
.. _Copyleft: https://www.gnu.org/licenses/copyleft.html

.. _backtrader: https://github.com/mementum/backtrader

.. _`tr;dlLegal`: https://tldrlegal.com/


Reference
---------
Expand Down
4 changes: 4 additions & 0 deletions docs/_static/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ dl dd {
margin-left: 0;
}

div.document {
width: 1000px;
}

@media screen and (max-width: 875px) {
div.sphinxsidebar {
width: calc(100% + 20px);
Expand Down
20 changes: 11 additions & 9 deletions docs/usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ KOAPY 를 사용하지 않고 작성한 가장 미니멀한 코드 예시가 다
이벤트 처리를 위하여 |QEventLoop|_ 를 생성하여 이벤트가 들어올 구간에 맞게 |exec|_/|exit|_ 를 시키고 있으며,
이벤트를 직접적으로 처리할 콜백 함수들도 알맞게 구현후 적절한 타이밍에 |connect|_/|disconnect|_ 하고 있습니다.

반면에 KOAPY 를 사용하면 동일한 작업을 아래와 같이 미리 주어진 메서드 (:py:meth:`~.koapy.grpc.KiwoomOpenApiServiceClientStubWrapper.KiwoomOpenApiServiceClientStubWrapper.GetStockInfoAsDataFrame`) 를 사용해 간단하게 처리가 가능합니다.
반면에 KOAPY 를 사용하면 동일한 작업을 아래와 같이 제공된 메서드 (:py:meth:`~.koapy.grpc.KiwoomOpenApiServiceClientStubWrapper.KiwoomOpenApiServiceClientStubWrapper.GetStockInfoAsDataFrame`) 를 사용해 간단하게 처리가 가능합니다.
좀 더 세부적인 컨트롤이 필요할 경우에는 요청할 TR 에 대한 정보를 직접 설정하고 중간단계의 API (:py:meth:`~.koapy.grpc.KiwoomOpenApiServiceClientStubWrapper.KiwoomOpenApiServiceClientStubCoreWrapper.TransactionCall`) 를 통해 호출한 뒤에
반환되는 스트림을 순차적으로 처리하는 식으로 구현이 가능합니다.
앞선 이벤트루프/콜백함수 기반 구현과 비교했을 때 이 방식이 좀 더 직관적입니다.
Expand Down Expand Up @@ -351,7 +351,7 @@ Auto login
$ koapy config autologin
위의 명령어 실행시 키움 Open API 로그인 창이 뜰겁니다.
위의 명령어 실행시 키움 Open API 로그인 창이 나옵니다.

입력창 아래의 ``고객 아이디 저장`` 을 체크해서 매번 아이디를 입력하지 않도록 합니다.
그리고 실제 사용이 아닌 테스트 목적이므로 ``모의투자 접속`` 을 체크합니다.
Expand All @@ -364,18 +364,20 @@ Auto login
만약에 업데이트로 인해 탑재 프로그램을 종료하고 확인 버튼을 누르라는 메시지가 뜨는 경우에
터미널에서 CTRL+C 로 현재 프로세스를 종료시키거나 아예 터미널을 닫은 뒤 확인 버튼을 누르시면 정상적으로 업데이트가 진행됩니다.

로그인이 완료되면 이어서 계좌 비밀번호 입력 화면이 뜰겁니다.
로그인이 완료되면 이어서 계좌 비밀번호 입력 화면이 나옵니다.

여기서 각 계좌의 계좌번호를 입력하고 ``등록`` 버튼을 누릅니다.
모의투자의 경우는 모든 계좌의 비밀번호가 ``0000`` 이므로 ``0000`` 을 입력하고 ``전체 계좌에 등록`` 버튼을 누릅니다.
마지막으로 아래의 ``AUTO`` 박스를 체크하고 창을 닫습니다.

이제 이후부터는 로그인 단계에서 사용자 입력을 묻지 않고 자동으로 로그인이 처리됩니다.

Version update
--------------

:ref:`자동 로그인 <자동 로그인>` 설정과 관련된 부분이라 이어서 설명합니다.

위처럼 자동 로그인을 설정해놓을 경우 이후에 버전 업데이트가 필요한 경우 제대로 업데이트가 되지 않습니다.
위처럼 자동 로그인을 설정해놓으면 이후에 버전 업데이트가 필요한 경우 업데이트 처리가 제대로 되지 않습니다.
따라서 주기적으로 자동 로그인 설정을 해제하고 수동으로 로그인 진행 후 버전 업데이트를 해주는 작업이 필요합니다.

관련해서 `퀀트투자를 위한 키움증권 API (파이썬 버전)`_ 책의 `버전처리`_ 문서 내용을 참고하시면 대략적인 이해에 도움이 되리라 생각합니다.
Expand All @@ -391,7 +393,7 @@ KOAPY 에서도 실험적으로 자동 버전처리를 수행하는 관련 스

사용방식은 아래와 같습니다.

먼저 ``koapy.conf`` 이름의 설정 파일을 현재 디렉토리나 홈 폴더 아래에 만들고 아래와 같은 계정 로그인과 관련된 내용들을 상황에 맞게 채워넣습니다.
먼저 ``koapy.conf`` 이름의 설정 파일을 현재 디렉토리나 홈 폴더 아래에 만들고 아래와 같이 계정 로그인과 관련된 내용들을 상황에 맞게 채워넣습니다.

.. code-block:: hocon
Expand All @@ -411,17 +413,17 @@ KOAPY 에서도 실험적으로 자동 버전처리를 수행하는 관련 스
설정파일 전체 예시는 `KOAPY 의 기본 설정파일`_ 을 참고하세요.
설정파일의 포맷은 HOCON_ 포맷입니다.

여기서 계좌번호 중 ``0000000000`` 은 모든 계좌에 대한 비밀번호로 이해하고 처리합니다.
예를 들어 모의투자의 접속시 위처럼 설정하면 모든 모의계좌에 대한 비밀번호를 "0000" 으로 설정하도록 처리할 수 있습니다.

.. _`KOAPY 의 기본 설정파일`: https://github.com/elbakramer/koapy/blob/master/koapy/config.conf
.. _HOCON: https://github.com/chimpler/pyhocon

여기서 계좌번호 중 ``0000000000`` 은 모든 계좌에 대한 비밀번호로 이해하고 처리합니다.
예를 들어 모의투자의 접속시 위처럼 설정하면 모든 모의계좌에 대한 비밀번호를 "0000" 으로 설정하도록 처리할 수 있습니다.

이후 콘솔에서 아래 명령을 주기적으로 실행하는 것으로 OpenAPI 의 버전을 최신으로 유지할 수 있습니다.

.. code-block:: console
$ python -m koapy.openapi.tools.version_update
스크립트를 통해서 자동으로 사용자 입력을 시뮬레이션해서 처리하는 방식이다보니
스크립트를 통해서 자동으로 사용자 입력을 시뮬레이션해서 처리하는 방식이다 보니
스크립트가 처리되는 도중에 다른 키보드 혹은 마우스 입력이 발생하는 경우 버전처리가 제대로 되지 않을 수 있다는 점 참고 바랍니다.
1 change: 1 addition & 0 deletions koapy/backtrader/examples/data/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
orcl-1986-2020.csv
Loading

0 comments on commit 6266227

Please sign in to comment.