最近、こんなWebサービス見つけて笑いました。
https://www.meigen.ga/jp/5bcf00522fd9780009575e4c
いいサービスですよね。また、気にいったこの名言、最高です。
おしゃべりはいいから、お前のコードを見せろ —Linus Torvalds
それは良いとして、
今回から運用中のBitcoin自動取引システムを少しずつ紹介していこうと思います。
Bitcoinの値動き(日本円-Bitcoin)を学習させて、統計学の手法で売買をしようという取り組みです。
連載の回数も多くなると思われますが、少しずつアップしていこうと思います。
おしゃべりはこれぐらいにして、さっそくCode書いていこうと思います。
目次
ざっくり概要
今回は「Part1: Bitcoinと日本円の現在値を取得しよう」ということで、BitFlyerのBTC – JPYの現在値を取得してみようと思います。
ちなみにBitFlyerのAPIはこちらで確認することができます。
https://lightning.bitflyer.com/docs?lang=ja
Javascriptで実装します。
var request = require('request'); var path = '/v1/getticker'; var query = '?product_code=BTC_JPY'; var url = 'https://api.bitflyer.com' + path + query; request(url, function (err, response, payload) { console.log(payload); });[/codebox] 取得される結果はこちらです。(JSON形式)現在どれぐらいのレートで取引されているかみることができるかと思います。
{ "product_code": "BTC_JPY", "timestamp": "2018-11-05T05:05:29.577", "tick_id": 3205901, "best_bid": 723401, "best_ask": 723500, "best_bid_size": 0.1032, "best_ask_size": 6.02548261, "total_bid_depth": 2003.85103453, "total_ask_depth": 1634.91799118, "ltp": 723401, "volume": 234812.03814636, "volume_by_product": 2912.8112144 }[/codebox]
timestamp
: 時刻は UTC(協定世界時)ltp
: 最終取引価格volume
: 24 時間の取引量
クエリのパラメータを変更することで他の通貨の値も取得することができます。
板情報を取得する
板情報は、pathを”v1/board”に変える、たったそれだけで取得できます。
ar request = require('request'); var path = '/v1/board'; var query = '?product_code=BTC_JPY'; var url = 'https://api.bitflyer.com' + path + query; request(url, function (err, response, payload) { console.log(payload); });[/codebox]
結果は以下のように返ってきます・・・が、大量なので一部のデータを紹介します。
{ "mid_price": 724522, "bids": [ { "price": 724351, "size": 0.33682933 }, { "price": 724350, "size": 0.7331 }, { "price": 724264, "size": 0.4 }, { "price": 724051, "size": 0.037 }, { "price": 724027, "size": 0.50000013 }, { "price": 724026, "size": 1 }, 以下省略[/codebox]
たったこれだけで、データを取得することができます。
いやぁいい時代です。これを個人に開放してくれているんですもの。
ネット証券を含む一般的な証券会社でもAPI公開はあまりしていません。一部の証券会社は公開していても法人向けだったり、FX向けだったりと難しいところです。
BitFlyer APIの制限事項
BitFlyer APIには以下のような制限がありますから、少々お気をつけください。
・IP アドレスごとに 1 分間に約 500 回を上限
・注文数量が 0.1 以下の注文を大量に発注するユーザーは、一時的に、発注できる注文数が 1 分間に約 10 回までに制限されることがあります。
・システムに負荷をかける目的での発注を繰り返していると当社が判断した場合は、API の使用を制限することがあります。ご了承ください。
Javascriptである理由
なぜJavascript?ということもあるかと思いますが、システム構成をAzure Functionで考えており、C#かJavascriptが良いかなと思っています。
Azure Functionsによる開発はこちらご参考ください。
https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference
ちなみに、BitFlyerのアカウント開設はこちら。
https://bitflyer.com/ja-jp/
最後までお読み頂きありがとうございました。