先に、韓国投資証券APIを使って自動売買プログラムをなぜ作ろうとしているのか、どのようなメリットがあるのかを調べてみました。
今回は、韓国投資証券APIを開発するために必要な情報を収集した過程をまとめて共有しようと思います。すでに多くの達人の方々が韓国投資証券APIを共有してくださっているので、情報を探すのは難しくありませんでした。それでも、どのような内容を得ることができたのか、感想を簡単にコメントしてみようと思っていまして、この内容が皆様のお役に立てば幸いです。(githubレポジトリから見ると良いですよ!!)
公式ウェブサイト
韓国投資証券公式ウェブサイト
基本的な内容は公式ウェブサイトから得ることができます。韓国投資証券公式ウェブサイトを通じて、ID、口座設定、模擬取引申込、海外取引申込などの作業を実行できます。また、公式ウェブサイトから開発のためのウェブサイトへのリンクが簡単にされています。
韓国投資証券のメニューの中で、開発のための内容はトレーディングメニューにあります。
KIS Developer開発者センター
KIS Developerウェブサイトは、APIを開発しながらも継続して確認する必要があるウェブサイトです。APIドキュメントの詳細内容を確認できます。
最も基本的なアクセストークンを発行するAPIです。
APIの要求値と応答値に関する詳細情報です。これらの値を参照して呼び出し、応答を受け取って処理します。
github - koreainvestment/open-trading-api
Open Trading APIのgithubレポジトリです。README.mdファイルで親切な作業手順を案内してくれています。そのため、上記にも書きましたが、githubから見ると良いと思います。
githubレポジトリです。
WikiDocs
最後に、python開発時に参考になるWikiDocsです。著者が韓国投資証券なので、ほとんどの内容は信頼できます。ほとんどの内容である理由は、時間が経つにつれて追加された内容がないことや、個人的にリアルタイムデータの部分で真似をしていて行き詰まったのですが、解決策が見つからなかったためです。
WikiDocsで開発ガイドが分かりやすく記載されています。
追加リファレンス
ここまで参考になる内容を見て、ちゃちゃっと作れば良いのですが、私はそのような実力がないため、行き詰まる部分がかなりありました。そのため、あれこれいろいろと調べて、助けになった追加リファレンスを列挙してみます。私が探した内容なので、皆さんも簡単に探せるはずです。
ジョコーディングさんのYouTube動画(23:41秒)
この動画を通じて、韓国投資証券APIのメリットをユーザーの視点から理解することができました。そしてやはり、動作するソースコードを動画で説明してくれるので、理解しやすかったです。先に公式ウェブサイトで何が含まれているのか大まかな把握をしたのであれば、ジョコーディングさんの動画(23:41秒)を素早く見ることをお勧めします。
WebSockets
前述でも少し触れましたが、リアルタイムデータのハンドリング部分で行き詰まりました。WikiDocsではpythonのWebSocketsを使用していました。しかし、WebSocketが何かよく理解できませんでした。こんな時は尋ねなければいけません。+_+
ChatGPTさん、助けて。
ChatGPTが無くなったら大変です。
通信のための手法であり、接続されるとデータを受信できるようになる、そのようなものだと思います。ここまで見て感じたことは、REST APIは1回の要求に対して1回の応答を受けるものであり、WebSocketは1回の要求が登録されると関連して継続的に応答を受けるものであるということです。自動売買プログラミングを行うためには、この2つがうまく実装され、組み合わせることが必要になりますね。
しかし、WikiDocsの例で行き詰まりました。WebSocketで要求を送信したのは良かったのですが、すぐにwhile True:となり、その状態のままになってしまったのです。明らかに方法はありますが、私のような初心者には概念に慣れていないため、どのように解決すれば良いのか見当がつきませんでした。そこで、githubに別の方法で実装したソースコードがないか探してみました。
githubレポジトリ
- python-kis - Soju06/python-kis: 📈 Python韓国投資証券RESTベースのTrading APIライブラリ(github.com)
- pykis - pjueon/pykis: 韓国投資証券の新規Open Trade APIを簡単に使用するPythonパッケージ(github.com)
- mojito - sharebook-kr/mojito: KISのPythonラッパー(github.com)
本当に多くの達人がいることを改めて感じました。3つを確認しましたが、今回使用したレポジトリは1番目のpython-kisです。このロジックを持ってきて、WebSocket部分を参考にしました。結論として、websocketsライブラリではなく、websocket、websocket-clientライブラリを活用しました。この場を借りて、Soju06さんをはじめ、githubで良いソースコードを共有してくださっている皆様に感謝申し上げます。
これで、これらの情報を参考に開発を進めることができます。多少の試行錯誤もありましたが、それについては別途まとめて共有させていただきます。次に、少し根本的な「株式自動売買の構造」について考えてみた内容を列挙してみようと思います。これを土台に、今後試行錯誤を減らし、すでに開発された部分を簡単に再利用できるようにしたいと考えています。
コメント0