Python/Arduino学習記録,備忘録

コツコツ学んだ学習記録と備忘録。現在Python,Arduino勉強中。

【bitbank自動売買#2】python_bitbankccの使い方学習(パブリックAPI)

【bitbank自動売買#1】では,pythonでコードを書く準備をしてきましたが,今回は実際にインストールしたパッケージを用いてコードを動かします。

 

以下に「python_bitbankcc」の使い方について説明はこちらに載っていますが,説明がざっくりしているので,実際に使ってみるのがよいかと。

GitHub(コード少し有り):https://github.com/bitbankinc/python-bitbankcc

②bitbank.ccの(公式):https://docs.bitbank.cc/#/

 

 APIには,パブリックAPIとプライベートAPIが存在する。

パブリックAPI・・・APIキーが必要なく利用可能なAPI

プライベートAPI・・・個人毎にAPIキーが必要で,個人情報を扱うことが可能なAPI

 

さて,ここから実際にプログラムを動かしてみます。まずはパブリックAPIについて。

1. ティッカー情報の取得

#python_bitbankccのパッケージをインポート
import python_bitbankcc 

# public API classのオブジェクトを取得
pub = python_bitbankcc.public()

# ティッカー情報を取得
value = pub.get_ticker( 'xrp_jpy' )

#現在の売り注文の最安値
print('sell:' + value['sell'])
#現在の買い注文の最安値
print('buy:' + value['buy'])
《出力結果》
sell:95.110
buy:95.100

ここで言う,ティッカー情報とは

  • sell: 現在の売り注文の最安値
  • buy: 現在の買い注文の最安値
  • high: 過去24時間の最高値取引価格
  • low: 過去24時間の最安値取引価格
  • last: 最新取引価格
  • vol: 過去24時間の出来高

 を指しており,get_tickerを用いることで,上記の情報が取得可能。

使い方
value = pub.get_ticker( 'ペア' )
ペア例⇒btc_jpy, xrp_jpy, ltc_btc, eth_btc, mona_jpy, mona_btc, bcc_jpy, bcc_btc

2. 板情報の取得

#python_bitbankccのパッケージをインポート
import python_bitbankcc 

# public API classのオブジェクトを取得
pub = python_bitbankcc.public()

# 板情報を取得
value = pub.get_depth( 'xrp_jpy' )

#売り板
print('売り板 [価格, 数量]:' + ','.join(map(str,value['asks'])))
#買い板
print('買い板 [価格, 数量]:' + ','.join(map(str,value['bids'])))
《出力結果》
売り板 [価格, 数量]:['97.350', '0.9877'],['97.357', '336.4811'],['97.372', '100.0000'],['97.397', '1000.0000'],['97.398', '2000.0000'],['97.399', '13966.7493'],['97.440', '4597.0588'],['97.448', '6812.6211'],['97.450', '7109.4659'],['97.464', '50.0000'],['97.465', '1.0259'],['97.499', '4304.8276'],['97.500', '30581.5952'],['97.501', '50.0000'],['97.505', '50.0000'],['97.507', '50.0000'],['97.598', '7115.7376'],['97.600', '6447.2530'],['97.603', '1070.0591'],['97.620', '200.0000'],['97.697', '656.9891'],['97.700', '17093.0801'],['97.713', '605.2533'],['97.750', '9167.3786'],['97.765', '640.4537'],['97.780', '300.0000'],['97.791', '50.0000'],['97.798', '1454.0174'],['97.799', '63873.6482'],['97.800', '66060.0511'],['97.801', '1029.9649'],['97.810', '14910.0524'],['97.820', '1403.8812'],['97.830', '2160.4389'],['97.844', '545.5653'],['97.845', '6194.8278'],['97.850', '6285.2523'],['97.860', '322.0000'],['97.881', '50.0000'],['97.890', '4170.5356'],['97.900', '35504.1476'],['97.901', '50.0000'],['97.920', '50.0000'],['97.936', '460.4725'],['97.940', '0.1000'],['97.941', '1.1111'],['97.942', '1.1111'],['97.949', '200.0000'],['97.950', '2626.4375'],['97.952', '5.2111'],['97.954', '1.1111'],['97.956', '1.1111'],['97.958', '1.1111'],['97.959', '4000.0000'],['97.960', '2042.7718'],['97.961', '1.1111'],['97.962', '51.1111'],['97.963', '1.1111'],['97.964', '1.1111'],['97.965', '100.0000'],['97.970', '0.1000'],['97.979', '2010.0000'],['97.980', '16867.6350'],['97.982', '50.0000'],['97.989', '797.2613'],['97.990', '391.1000'],['97.995', '0.0010'],['97.997', '50.0000'],['97.998', '850.0000'],['97.999', '46872.1637'],['98.000', '112256.2377'],['98.001', '50.0000'],['98.003', '50.0000'],['98.009', '71.0000'],['98.010', '536.7988'],['98.025', '17147.2806'],['98.034', '52.7888'],['98.040', '2000.0000'],['98.052', '50.0000'],['98.054', '50.0000'],['98.065', '61.2463'],['98.070', '6.8497'],['98.088', '15355.5137'],['98.096', '50.0000'],['98.100', '1689.2583'],['98.110', '1500.1081'],['98.123', '6469.0000'],['98.150', '826.7256'],['98.170', '11.0000'],['98.180', '0.1000'],['98.200', '9845.4466'],['98.221', '1500.0000'],['98.235', '172.3535'],['98.240', '0.1000'],['98.242', '71.5729'],['98.250', '800.0000'],['98.255', '100.0000'],['98.263', '9.7965'],['98.270', '311.0000'],['98.300', '13923.3426'],['98.310', '6167.8526'],['98.312', '455.8005'],['98.320', '0.2000'],['98.324', '2097.5549'],['98.330', '0.3000'],['98.350', '3530.1000'],['98.362', '100.0000'],['98.370', '17.0000'],['98.400', '36546.4974'],['98.402', '411.0000'],['98.448', '264.2404'],['98.470', '26.0000'],['98.479', '2500.0000'],['98.480', '0.1000'],['98.490', '230.0000'],['98.499', '5212.9080'],['98.500', '44729.3235'],['98.555', '5.0000'],['98.570', '26.0000'],['98.577', '250.0000'],['98.590', '5377.5260'],['98.592', '250.0000'],['98.598', '340.4155'],['98.599', '600.0000'],['98.600', '10026.5121'],['98.601', '4000.0000'],['98.633', '10375.6451'],['98.650', '3500.0000'],['98.670', '126.0000'],['98.697', '1109.0000'],['98.700', '6036.8900'],['98.710', '18636.3394'],['98.716', '250.0000'],['98.738', '1.7931'],['98.750', '5837.7034'],['98.755', '200.0000'],['98.770', '37.0000'],['98.775', '1012.4019'],['98.789', '13.0000'],['98.800', '17179.0684'],['98.810', '250.0000'],['98.850', '1500.0000'],['98.860', '1000.0000'],['98.870', '37.0000'],['98.890', '102.0000'],['98.899', '21.1896'],['98.900', '35543.3417'],['98.921', '94.3690'],['98.940', '2050.0000'],['98.970', '37.0000'],['98.980', '250.0000'],['98.981', '500.0000'],['98.987', '6.9023'],['98.989', '4000.0000'],['98.995', '110.6903'],['98.997', '1623.0000'],['98.999', '1023.7574'],['99.000', '241212.8386'],['99.012', '38.5631'],['99.070', '37.0000'],['99.075', '100.0000'],['99.080', '3203.1560'],['99.090', '4000.0000'],['99.098', '2428.0521'],['99.100', '13406.0561'],['99.103', '300.0000'],['99.107', '200.0000'],['99.170', '37.0000'],['99.180', '4.5501'],['99.191', '2300.0000'],['99.198', '6.5651'],['99.200', '9984.9523'],['99.205', '6488.1028'],['99.230', '20649.3300'],['99.243', '70.0000'],['99.258', '500.3308'],['99.270', '7.0000'],['99.300', '19243.3713'],['99.335', '4.5145'],['99.350', '1000.0000'],['99.370', '12.0000'],['99.400', '8649.2345'],['99.410', '100.0000'],['99.432', '251.0000'],['99.441', '15000.0000'],['99.450', '25.0000'],['99.470', '7.0000'],['99.474', '493.0000'],['99.487', '200.0000'],['99.490', '110.0000'],['99.500', '149305.4019'],['99.550', '2000.0000'],['99.560', '5000.0000'],['99.570', '501.5824'],['99.580', '283.8207'],['99.600', '31912.5932'],['99.610', '30.0000'],['99.640', '200.0000'],['99.670', '57.0000'],['99.700', '7085.1034']
買い板 [価格, 数量]:['97.301', '69.4011'],['97.300', '13017.0538'],['97.270', '1608.2176'],['97.265', '5237.9025'],['97.250', '4121.9940'],['97.240', '5000.0000'],['97.210', '311.1311'],['97.204', '1.0287'],['97.203', '3809.0162'],['97.201', '6767.1992'],['97.200', '28731.7438'],['97.165', '6073.2298'],['97.161', '1323.0786'],['97.160', '2037.9356'],['97.157', '859.4831'],['97.156', '3903.2252'],['97.155', '211.0000'],['97.153', '8372.6244'],['97.152', '50.0000'],['97.151', '1463.6996'],['97.150', '12385.3808'],['97.125', '2541.0518'],['97.120', '85.1043'],['97.117', '1.0296'],['97.108', '50.0000'],['97.101', '96.6025'],['97.100', '54405.4078'],['97.084', '50.0000'],['97.050', '15708.4994'],['97.011', '24997.1515'],['97.010', '550.0000'],['97.007', '332.0000'],['97.003', '1004.0000'],['97.002', '8089.0524'],['97.001', '27523.5016'],['97.000', '84438.0985'],['96.999', '1.0309'],['96.987', '983.7611'],['96.970', '3000.0000'],['96.950', '9550.2142'],['96.919', '2000.0000'],['96.910', '638.1237'],['96.900', '28452.1750'],['96.880', '1000.0000'],['96.875', '500.0000'],['96.872', '4311.4824'],['96.870', '110.0000'],['96.867', '400.0000'],['96.855', '43588.1946'],['96.850', '31495.4958'],['96.840', '9041.8946'],['96.821', '3934.2501'],['96.820', '3582.4829'],['96.812', '1693.0238'],['96.810', '5460.1555'],['96.805', '0.9785'],['96.801', '500.0000'],['96.800', '139423.5395'],['96.799', '5000.0000'],['96.770', '20670.0000'],['96.710', '665.6264'],['96.700', '22493.9051'],['96.699', '10000.0000'],['96.650', '937.7138'],['96.630', '399.6611'],['96.625', '5.0000'],['96.620', '149.0000'],['96.617', '642.2381'],['96.601', '1000.0000'],['96.600', '149854.9761'],['96.599', '15181.8818'],['96.580', '14544.7727'],['96.555', '168.1215'],['96.552', '3291.3816'],['96.550', '18785.7809'],['96.545', '50.0000'],['96.539', '193.5494'],['96.521', '594.6762'],['96.510', '11560.7840'],['96.502', '311.7029'],['96.501', '33440.9377'],['96.500', '236123.3926'],['96.470', '20000.0000'],['96.450', '85.4845'],['96.430', '100.0000'],['96.414', '4.3303'],['96.401', '1000.0000'],['96.400', '8209.0466'],['96.370', '201.0000'],['96.350', '220.9989'],['96.340', '6.9999'],['96.310', '1241.7122'],['96.309', '977.1502'],['96.305', '250.0000'],['96.300', '31645.9353'],['96.299', '31.1529'],['96.288', '150.0000'],['96.263', '4.1903'],['96.258', '1047.8291'],['96.250', '259.7402'],['96.222', '222.0000'],['96.219', '6.4090'],['96.213', '100.0000'],['96.210', '359.2232'],['96.202', '1325.0000'],['96.201', '500.0000'],['96.200', '24215.5751'],['96.185', '861.0715'],['96.182', '100.0000'],['96.152', '400.0000'],['96.150', '9540.6280'],['96.120', '1291.0000'],['96.112', '100.0000'],['96.111', '222.0000'],['96.110', '1498.1760'],['96.101', '46.4877'],['96.100', '5152.6736'],['96.096', '0.1234'],['96.056', '1525.0000'],['96.043', '4536.3652'],['96.024', '520.7036'],['96.011', '80.7348'],['96.010', '500.0000'],['96.005', '20342.5839'],['96.003', '100.0000'],['96.002', '200.0000'],['96.001', '115.9061'],['96.000', '272135.4497'],['95.999', '333.0000'],['95.987', '1000.0000'],['95.929', '1000.0000'],['95.900', '1209.2081'],['95.888', '333.0000'],['95.878', '6456.2079'],['95.834', '1.7830'],['95.822', '1.1601'],['95.820', '800.0000'],['95.801', '520.0000'],['95.800', '76112.1846'],['95.799', '9.3341'],['95.777', '333.0000'],['95.760', '16870.7866'],['95.759', '2646.8762'],['95.750', '3755.3894'],['95.700', '11921.9863'],['95.691', '600.0000'],['95.690', '342.9920'],['95.671', '63.3708'],['95.666', '333.0000'],['95.665', '562.4805'],['95.641', '200.0000'],['95.621', '400.0000'],['95.620', '6842.2904'],['95.612', '7792.2404'],['95.600', '64038.8019'],['95.557', '277.0293'],['95.555', '1784.5176'],['95.520', '1923.3673'],['95.511', '500.0000'],['95.510', '90075.1376'],['95.501', '59.6261'],['95.500', '79967.9311'],['95.460', '4.3277'],['95.444', '333.0000'],['95.401', '3533.9193'],['95.400', '1440.2238'],['95.370', '8113.9554'],['95.333', '333.0000'],['95.327', '1169.0000'],['95.313', '6.3760'],['95.311', '200.0000'],['95.310', '4.2729'],['95.300', '15361.9981'],['95.293', '307.0000'],['95.280', '29.0000'],['95.276', '2600.0000'],['95.260', '2149.0347'],['95.253', '1000.0000'],['95.244', '10000.0000'],['95.222', '333.0000'],['95.202', '11.4905'],['95.201', '500.0000'],['95.200', '39466.5452'],['95.187', '39.9302'],['95.150', '415.6012'],['95.120', '2507.3767'],['95.116', '300.0000'],['95.111', '338.0000'],['95.101', '12.0000'],['95.100', '10425.2627'],['95.076', '3000.0000'],['95.061', '81.8983'],['95.059', '0.1234'],['95.054', '200.0000'],['95.050', '100.0000'],['95.010', '969.3855'],['95.004', '100.0000'],['95.001', '5630.7872'],['95.000', '311228.6140'],['94.999', '444.0000']

get_depthを用いることで,板情報が取得可能となる。

ここで,valueにはdict型(辞書型)で「'asks':list型」,「'bids':list型」が格納されているため,join*1とmap*2を用いて文字列に変換している。
(参考:https://www.sejuku.net/blog/41752)

3. 全約定履歴の取得

#python_bitbankccとdatetimeのパッケージをインポート
import python_bitbankcc
import datetime 

# public API classのオブジェクトを取得
pub = python_bitbankcc.public()

# 全約定履歴を取得
value = pub.get_transactions( 'xrp_jpy' )

#約定履歴の一例
trans_ex = value['transactions'][0]
print('取引ID:' + str(trans_ex['transaction_id']))
print('売買情報:' + trans_ex['side'])
print('約定価格:' + trans_ex['price'])
print('数量:' + trans_ex['amount'])
print('約定日時:' + str(datetime.datetime.fromtimestamp(trans_ex['executed_at']/1000)))
《出力結果》
取引ID:8409434
売買情報:buy
約定価格:97.600
数量:5.5050
約定日時:2018-05-05 11:40:28.475000

get_transactionsを用いることで,約定履歴が取得可能となる。

ここで,2. 板情報の取得と同様に,「transaction_id」「execued_at」はint型なのでstr型に変換している。
また,「execued_at」はUnixTime*3のミリ秒表示なので,日付に変換する。
そこで,パッケージdatetimeをインポートし,datetime.datetime.fromtimestamp*4を用いる。
この時,ミリ秒表示であることから1000で除している。

加えて,日時を指定するとその日付の全約定履歴も取得可能。

使い方
value = get_transactions( 'ペア' )
又は
value = get_transactions( 'ペア', 'YYYYMMDD 型の日付' )
YYYYMMDD 型の日付例⇒20180504

4. ロウソク足データの取得

#python_bitbankccとdatetimeのパッケージをインポート
import python_bitbankcc
import datetime

# public API classのオブジェクトを取得
pub = python_bitbankcc.public()

# ロウソク足データを取得
value = pub.get_candlestick( 'xrp_jpy',  '1hour', '20180504' )

#ローソク足情報の一例(2018/5/4 午前9時の1時間足)
candle = value['candlestick'][0]
print('candle type:' + candle['type'])
print('始値:' + candle['ohlcv'][0][0])
print('高値:' + candle['ohlcv'][0][1])
print('安値:' + candle['ohlcv'][0][2])
print('終値:' + candle['ohlcv'][0][3])
print('出来高:' + candle['ohlcv'][0][4])
print('対象時刻:' + str(datetime.datetime.fromtimestamp(candle['ohlcv'][0][5]/1000)))
《出力結果》
candle type:1hour
始値:95.899
高値:95.900
安値:94.753
終値:95.080
出来高:5475452.3220
対象時刻:2018-05-04 09:00:00

get_candlestickを用いることで,ローソク足データが取得可能となる。

使い方
value = get_candlestick( 'ペア', 'ローソク足のタイプ', 'YYYYMMDD 型の日付' )
ローソク足のタイプ例⇒1min, 5min, 15min, 30min, 1hour, 4hour, 8hour, 12hour, 1day, 1week
YYYYMMDD 型(YYYY型でも良い)の日付例⇒20180504, 2017


パブリックAPIについてはこれで完了。次回はプライベートAPIを使ってみる。
opuktr.hatenablog.com

*1:‘区切り文字’.join(list)⇒同一型(str型,etc...)のlistを区切り文字を用いて区切る

*2:map(関数, list)⇒第二引数に第一引数の関数を適用

*3:1970年1月1日午前0時0分0秒から形式的な経過秒数

*4:datetime.datetime.fromtimestamp(UnixTime)⇒UnixTimeを日付に変換