Tsurumaru Blog

IT技術系ブログ

BitFlyerDotNetの紹介

githubでBitFlyerDotNetというbitFlyerの提供するLightning API用の.NETラッパーを公開しています。

github.com

特徴

  • .NET Standardベースなので、Win/Mac/Linux/Android/iOSなどプラットフォームを問わず利用できる。
  • リアルタイムAPIのラッピングには、Reactive Extensionを利用し、インジケーターやシグナルへの接続が容易。
  • APIのリクエストとレスポンスをJSON.NETを利用したクラスでラップしているので、Visual Studioのインテリセンスで自動補完ができる。
  • MITライセンスなので自由に使える。
  • C#erな人向け(笑)

 そもそもは、別に仮想通貨で投資をしたいとかではなく、過去にHFTの開発などもしたことがある影響で、以前からトレーディングシステムの研究開発をしたいと考えていたのですが、無料で自由に使える良いAPIが見つからず、なかなか取りかかれずにいたところ、2017の仮想通貨ブームで様々な取引所がAPIを公開する中、bitFlyerのLightning APIが一番良くできていたので、それを土台にしようと考えました。

 また、金融IT系は職務上、自前での投資が禁止されていたりすることが多いのですが、仮想通貨は対象外だったという理由もあったりします。

使用例

// FX_BTC_JPY, ¥70,000,000, 指値買注文
var strKey = "Place API key here";
var strSecret = "Place API secret here";
var client = new BitFlyerClient(strKey, strSecret);
var order = new BfChildOrderRequest
{
    ProductCode = BfProductCode.FXBTCJPY,
    OrderType = BfOrderType.Limit,
    Side = BfOrderSide.Buy,
    Size = 1.0,
    Price = 700000
};
client.SendChildOrder(order);

今後

 この自前ラッパーを利用して、様々なテストアプリケーションを作成してみたのですが、やはりAPIをラップしただけでは、下記のような課題があるため、現在はラッパーの上位APIを開発しています。

  • サーバービジーの時など、注文が失敗するときがある。
  • 注文は同期APIのため、注文約定の確認などはポーリングを行う必要があり、サーバーに負荷を与えてしまい、また、実際の約定から結果を確認するまでのディレイが発生する。
  • 注文をキャンセルすると、注文自身が消失する(注文APIが成功した時点で注文は確実に受け付けられている前提なのだと思われるが、もしかして受け付けられていなかったらどうしようとか、不安だったり)。

 また、取引アプリケーションはPCではブラウザ版のみが提供されているのですが、これがなかなかのヘビー級アプリケーション(笑)。私の環境(MacBook Pro/Safari)だと、ファンが回り出し、Safariが「電力使いすぎ」アラートを出してくるので、自前の取引アプリケーションやチャートアプリケーションなども開発しています。これらについても順次、紹介していきたいと思っています。