【PR】マンガでわかる!プログラミングで株式投資 〜kabuステーションAPI で始める自動売買〜
プログラミング
公開日:
ブックマーク
登場人物紹介:
新米プログラマ りなさん(24歳)
入社2年目の新米プログラマ。株や投資は「むずかしそう」と思っている。
先輩プログラマ けんとさん(32歳)
りなさんの職場の先輩。ITエンジニア歴10年。仕事も家庭も両立し、充実した生活を送っている。
四角いメガネがチャームポイント。
プログラミングで株式投資?
プログラミングで株をやるって、どういうことですか?
僕たちは株の専門家ではないから、巨大ファンドや、百戦錬磨の個人投資家たちに素手で挑んでも太刀打ちできない。それに、僕たちは平日は仕事してるし、日中ずっと株価とにらめっこしているわけにはいかないよね。
たしかに。
さらに、高頻度取引(High Frequency Trading)の世界では、0.001秒でも速い業者が独り勝ちしてしまうんだ。まさに、コンマミリ秒の戦いなんだ。
ええっ! それじゃ、人間の手作業でポチポチ売り買いをしていたのでは遅すぎますね……。
そこで、プログラミングを用いた自動取引だ!
私たちはプログラマだから、いちからプログラミングを勉強し始めなくていい。株取引の経験や勘所では敵わないけど、自動取引においては一歩リードしてるんですね!いや〜、やはりこれからの時代はITエンジニアですな。
そうそう。様々なものがデジタル化されていくおかげで、僕たちプログラマは恩恵を受けられるんだよね。せっかくの武器なんだから、プライベートにも活用しなくちゃもったいない!
株のためのAPI「kabuステーション®API」
ところで、けんと先輩はどういうツールを使っているんですか?
僕が使っているのはこれ!
auカブコム証券の「kabuステーション®API」
auカブコム証券の「kabuステーション®API」
kabuステーション®API は、自分の好きな開発言語を使って株取引におけるデータの取得や
注文執行が可能なツール。auカブコム証券が提供している。
※ツールの利用にはauカブコム証券の口座開設が必要となるので、事前に口座開設しておいてください。
API (エーピーアイ)ってあの、HTTPリクエストを送ったら処理結果が返ってくる Web API のことですか? Web APIって、各地の天気が取得できるお天気API や、画像検索APIなど、いろいろありますよね。 新入社員研修で、明日の品川区の天気予報をツイートしてくれる Twitter の bot を作ったのが懐かしいなぁ。
そのとおり。いろいろなAPIがあるけど、実は株のAPIも提供されてるってワケだ。kabuステーション®APIの特徴は次のとおり。
- 国内の証券会社で唯一、汎用性の高い「REST形式」を採用
- C#やPython、Java、PHPなど、好きなプログラミング言語で実装可能
- 専用のExcelアドインを提供。慣れ親しんだExcelが使える
- わからないことがあれば、Github上で質問したり情報交換ができる
ほうほう!ITエンジニアにとっては嬉しい特徴がいっぱいですね。
ひとつずつ見ていこう。
国内の証券会社で唯一、汎用性の高い「REST形式」を採用
REST(レスト)っていうのはわかるよね?
JSON形式で返ってくるやつのことですか?
ちゃんと説明しなさいって言われたら説明できないかも……。
ちゃんと説明しなさいって言われたら説明できないかも……。
JSON形式で返ってくるやつ(笑)。
狭義ではそうだけど、少し意地悪な質問をしてしまったね。正確に言うと、RESTとはWebサービスの設計原則のひとつなんだ。分散システムにおいて複数のソフトウェアを連携させるのに適している。2000年にロイ・フィールディング氏が提唱した。
狭義ではそうだけど、少し意地悪な質問をしてしまったね。正確に言うと、RESTとはWebサービスの設計原則のひとつなんだ。分散システムにおいて複数のソフトウェアを連携させるのに適している。2000年にロイ・フィールディング氏が提唱した。
ええっ、私が思ってるRESTと違う気がするんですけど?
そう、りなさんが思い浮かべているのは REST形式のAPIのことだね。サービスの URI に HTTPメソッドでアクセスすることで、XML や JSON などで記述されたデータが送られてくる。
えーっと、つまり REST形式のAPI っていうのは、RESTという設計原則に基づいて作られたAPI ってことですね。
そのとおり。REST形式の API は次のような特徴があるから活用しやすいんだ。
- URIが名詞形である
- リソースの操作(作成/閲覧/変更/削除)をHTTPのメソッドにより指定できる
- レスポンス形式がJSONもしくはXMLである
だからこんな具合に API を叩けるんだよ。
やりたいこと | URL | HTTPのメソッド |
---|---|---|
新規注文 | http://localhost:18081/kabusapi/sendorder | POST |
リクエストサンプル: { "Password": "xxxxxx", "Symbol": "3997", "Exchange": 1, "SecurityType": 1, "Side": "2", "CashMargin": 1, "MarginTradeType": 1, "DelivType": 2, "FundType": "AA", "AccountType": 2, "Qty": 100, "ClosePositionOrder": null, "ClosePositions": [ { "HoldID": "20200715E02N04738464", "Qty": 100 } ], "Price": 2000, "ExpireDay": 20200716, "FrontOrderType": 20 } レスポンス サンプル: { "ResultCode": 0, //0が成功。それ以外はエラーコード "Token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
わぁ、すごい!思ってたよりもシンプル。それに、JSON形式だからわかりやすい!
リファレンス(使い方をまとめたページ)が充実していて、しかもデザインもかっこよくてわかりやすいんだ。
ここからのぞいてみるといいよ。
ここからのぞいてみるといいよ。
https://kabucom.github.io/kabusapi/reference/index.html
独自のプログラムを組んで自動売買
もちろん、単に API を通して株を売り買いするだけじゃなくて、自分でプログラミングを組んで独自のルールやアルゴリズムで動かせるところがミソだ。たとえば、自分が保有している株が設定した価格から5%下落したら、自動的にロスカットされるようなプログラムも組める。
ロスカットって何ですか?
ロスカットとは、損失を抱えている状態で保有している株式などを売却して、損失を確定させることだよ。
損を確定させる!?
トレードは損切りが上手い人ほど勝てるんだよ。自分が持っている株の価値が下がったとき、自分の抱えている損失がそれ以上膨らまないように、プログラミングで自動的に売却するってワケだ。
たしかに手動でやっていると、株価の急落に気付けなかったり、「いったん価値が落ちたけど、これからまだ価値が上がるはず!」みたいに感情的になって売らずに保有し続けてしまうかも。その点、理論的に判断して自動で売買してくれるプログラムを自分で組んでおけるのは心強いですね。
他にも、要人の Twitter での発言で株価が変動した際、その方向に従って取引するプログラムなんてものも作れる。
工夫次第で 私が考えた最強の株取引プログラム が組めそうですね!
好きなプログラミング言語を使える
API を呼び出すためのプログラミング言語は、指定されているんですか?
普段、仕事では PHP を使うことが多いから、PHP が使えると嬉しいんですけど……。
普段、仕事では PHP を使うことが多いから、PHP が使えると嬉しいんですけど……。
好きな言語を使えるよ!
C#やPython、Java、PHPなど、自分が得意なプログラミング言語を選ぶといいよ。
C#やPython、Java、PHPなど、自分が得意なプログラミング言語を選ぶといいよ。
使い慣れた言語が使えるのは、かなり自由度が高いですね!
これは ITエンジニアにとって嬉しいポイント!
これは ITエンジニアにとって嬉しいポイント!
専用のExcelアドインを提供。慣れ親しんだExcelが使える
スクリプトベースでの提供方式に加え、専用の Excel アドインも提供されているんだ。
たとえば、マクロや関数といった Excelの機能を使いながらトレーディングしたり、Excelの集計機能を活かしながら、Excel上で自動的に注文を発注できたりするよ。
株価をスクレイピングしたり、マクロや関数で集計したりできるんですね!
Excelなら普段の仕事でよく使っているから、これは嬉しい!
Excelなら普段の仕事でよく使っているから、これは嬉しい!
わからないことがあれば、GitHub 上で質問したり情報交換ができる
でも、初めての自動取引だし、1人だとわからないことが多いかも……。
大丈夫!GitHub にコミュニティがあるんだ。
わからないことがあれば、ここで質問してみるといいよ。
わからないことがあれば、ここで質問してみるといいよ。
すごい!イシューが活発にやりとりされていますね。
kabuステーション®API の担当者が答えてくれたり、他のユーザーと情報交換できたりするよ。追加してほしい機能や修正して欲しい仕様があれば、要望も出せるしね!
何かあったら、GitHub 上のコミュニティで質問したり提案したりできるんですね。助かります!
ちなみに、最近、開発陣によるエンジニアブログも始まったみたいだよ。
kabuステーション®API に関するリリース情報や、使い方の小ネタなども今後アップされていくらしいよ。GitHubと合わせてこちらのブログもチェックしてみてね。
信用取引手数料が完全無料!
でも、こんなにすごいツールって、利用料が高いんじゃない?
利用料に関しては、kabuステーション®のFintechプラン以上が適用になっていれば無料になるよ
※Fintechプラン適用条件には信用口座の開設や、前月の取引回数1回以上などの無料利用適用条件があります。
※Fintechプラン適用条件には信用口座の開設や、前月の取引回数1回以上などの無料利用適用条件があります。
無料で利用出来るのね!でも手数料がかかるんでしょ?
なんと、信用取引手数料は完全無料(0円)なんだ!
ええっ、無料!?.......って、他のネット証券会社も無料だったりして?
信用取引手数料が無料なのは、大手ネット証券5社のなかで唯一ここだけ!短期でも長期でも、1円でも1億円でも、信用取引の手数料が無料だよ。
さらに今なら現物取引手数料が実質月額3,960円、そして信用取引の金利は無料となるキャンペーンも実施中なんだよ!
※2020年12月30日まで
※2020年12月30日まで
★漫画の中に登場しているkabuステーション®開発者ポータルはこちら
まとめ
kabuステーション®APIの特徴
- 国内の証券会社で唯一、汎用性の高い「REST形式」を採用
- C# や Python、Java、PHP など、好きなプログラミング言語で実装可能
- 専用のExcelアドインを提供。慣れ親しんだ Excel が使える
- わからないことがあれば、GitHub上で質問したり情報交換ができる
しかも、大手ネット証券5社のなかで唯一、信用取引手数料が完全無料!
ITエンジニアのあなたにぴったりな株式投資の形を、さっそく始めてみませんか?