BitFlyerDotNetからLightning/Realtime APIを使ってみる
BitFlyerDotNetのRealtime API
BitFlyerDotNetでは、Reactive Extensionsを使用してRealtime APIをラップしています。Reactive Extensions (通称Rx)は、マイクロソフト謹製のC#/Linqなライブラリで、ちょっとクセがあり、なれるまでに若干時間がかかりますが、リアルタイム配信と非常に相性が良いです。
コード例
// FX_BTC_JPYのリアルタイム約定情報を取得して表示する。 var factory = new BitFlyerRealtimeSourceFactory(); factory.GetExecutionSource(BfProductCode.FXBTCJPY).Subscribe(exec => { Console.WriteLine("{0} {1} {2} {3} {4} {5}", exec.ExecutionId, exec.Side, exec.Price, exec.Size, exec.ExecutedTime.ToLocalTime(), exec.ChildOrderAcceptanceId); }); factory.StartAllExecutionSources();
実行結果
563172040 Sell 646805 0.01 2018/11/16 12:09:16 JRF20181116-030916-521674 563172041 Sell 646805 0.01 2018/11/16 12:09:16 JRF20181116-030913-895733 563172042 Sell 646805 0.1 2018/11/16 12:09:16 JRF20181116-030916-160381 563172043 Sell 646805 0.11 2018/11/16 12:09:16 JRF20181116-030916-160381 563172044 Sell 646803 0.01 2018/11/16 12:09:16 JRF20181116-030916-160381 563172045 Sell 646803 0.01 2018/11/16 12:09:16 JRF20181116-030916-160381 563172046 Sell 646801 0.081 2018/11/16 12:09:16 JRF20181116-030916-160381 563172047 Buy 646814 0.17714894 2018/11/16 12:09:16 JRF20181116-030916-095133
コード例
// FX_BTC_JPYのリアルタイムTikcer情報を取得して表示する。 factory.GetTickerSource(BfProductCode.FXBTCJPY).Subscribe(ticker => { Console.WriteLine("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11}", ticker.ProductCode, ticker.Timestamp.ToLocalTime(), ticker.TickId, ticker.BestBid, ticker.BestAsk, ticker.BestBidSize, ticker.BestAskSize, ticker.TotalBidDepth, ticker.TotalAskDepth, ticker.LastTradedPrice, ticker.Last24HoursVolume, ticker.VolumeByProduct); });
実行結果
FX_BTC_JPY 2018/11/16 12:21:02 153098950 647342 647350 0.0032 0.47 9721.84809004 10288.60099151 647342 689153.31360529 689153.31360529 FX_BTC_JPY 2018/11/16 12:21:02 153098971 647322 647389 0.1032 0.09000012 9720.92809004 10287.08947385 647389 689154.51360529 689154.5136 0529 FX_BTC_JPY 2018/11/16 12:21:02 153099021 647535 647538 1.63255782 0.05 9725.33496188 10286.7555318 647535 689156.58104747 689156.5810474 7 FX_BTC_JPY 2018/11/16 12:21:02 153099075 647535 647538 1.14455781 0.05 9726.71026174 10276.68630791 647535 689155.88904748 689155.889047 48 FX_BTC_JPY 2018/11/16 12:21:03 153099133 647375 647381 0.29 0.07644219 9726.89110026 10280.46026099 647375 689157.31360529 689157.313605 29 FX_BTC_JPY 2018/11/16 12:21:03 153099148 647399 647538 1.04355781 0.108 9729.03465807 10280.5838188 647381 689157.21004748 689157.210047 48 FX_BTC_JPY 2018/11/16 12:21:03 153099153 647399 647549 1.04355781 0.0565129 9728.98461868 10280.3938188 647549 689157.41004748 689157.41 004748 FX_BTC_JPY 2018/11/16 12:21:03 153099168 647399 647571 0.92873781 0.00354524 9728.86479868 10280.13658906 647571 689157.82486748 689157. 82486748
これらのリアルタイムAPIを利用することで、ストリーミング注文(成行注文ではなく、現在の価格で指値注文する注文方式)を行ったり、自動取引を行ったりすることができるようになります。