株の取引を自動化するためにAPI経由で取引できる証券会社を探したところ、立花証券という会社がAPIを提供していることを知ったので試してみた。
TL; DR;
- (おそらく唯一の)簡便に使える取引API
- ドキュメント+サンプルコードがあるので開発に困ることは無さそう
- セキュリティ的に不安が残る仕様が多い
口座開設
立花証券には「立花証券ストックハウス」と「立花証券e支店」の二種類のネット証券子会社あって、APIでの取引ができるのはe支店の方。
誤ってストックハウスで作成してしまうと、APIが使えないどころか一度口座を解約しないとe支店側に口座を作れない。
手続きは書面で行う必要があって開設まで一週間以上のリードタイムがあるので間違えないように注意する必要がある。
API触ってみた雑感
全てのやり取りをGETで行うというかなり尖った仕様になっている。
それも一般的なクエリパラメータではなく、クエリをjsonに詰めてエンコードしたものをURL末尾につけてリクエストを送る。
特に送信元のIPなどに制約などはなく、AWSのクラウドサービスなどから利用することが可能。
かなり読みにくいがサンプルコードが用意されているので、これとドキュメントを合わせて読めば実装自体は簡単。
一般的な取引に必要なAPI(建玉一覧取得、評価額取得、新規信用建て、返済信用建てetc)が揃っているのでjquants apiと組み合わせれば自動取引環境を比較的簡単に構築できる。
個人的にいいなと思ったのが、検証環境が用意されているところ。
動作確認も行いやすいし、どんなリクエストが戻ってくるのか簡単に検証できる。
この検証環境は口座を開設する前から使えるので、使い勝手を試すことができる。
逆に不安に感じたのは主に以下の2点。
- GETクエリにエンコードしたパスワードを含める必要がある。
- ログイン後は何かしらの認証トークンが発行されるのではなく、取引用のURLが用意されてそこにリクエストを投げる必要がある。
前者に関してはパスワード情報が必ずログに残るはずで、内部的にどういう情報管理体制を敷いているのかが非常に気になる。
(逆にログを残してなかったとしても、それはそれで不正な利用などを事後的に検証できるのかという不安が残る)
後者に関してはURLさえ知っていれば誰でも取引できるようになるということで、認証の方法としてどうなのかという気持ちがある。
全てのやり取りをGETで行うので行儀の悪いクローラーに見つかったら簡単に不正な取引をされてしまうように思う。
最後に
やや不安に残る点はあるが、簡単に利用できる取引APIとしては
利用者側でセキュリティの対策できるところもあるので、利用者自身である程度防衛策を取った上で使うのがよさそう。
仕様上かなり簡単にオレオレ取引クライアントを作れそうなので今度試してみようと思う。