ということで、いよいよAPIを使って取引所にアクセスしてみようと思います。
まぁ大丈夫だとは思いますが、5分間に何回までとかの制限があるので、いちおう公式ドキュメントを確認しておいてください。
取引所はbitFlyerで、通貨はイーサリアムとします。
背景や前提については、以下のカテゴリーページをご覧ください。
注意事項
- 本サイトで掲載されている評価や感想等は、あくまでサイト運営者の主観であり、広告主に保証されたものではありません。
- 暗号資産(仮想通貨)取引は、元本を保証するものでなく、価格変動により損失が生じるリスクがあります。
お取引される際には、取引内容をよく理解し、ご自身の判断で行ってください。
requestsモジュールがインストールされていることを確認する
APIでアクセスする際にrequestsモジュールというのを使うので、インストールされているか確認してください。
コマンドプロンプトやPowerShellで以下の「pip list」コマンドを実行します。
※Visual Studio Codeのターミナルで実行しても同じです。
PS C:\bot_bitflyer> pip list
Package Version
----------------- ---------
astroid 2.4.2
certifi 2020.6.20
chardet 3.0.4
colorama 0.4.3
idna 2.10
isort 5.5.2
lazy-object-proxy 1.4.3
mccabe 0.6.1
numpy 1.19.2
pandas 1.1.2
python-dateutil 2.8.1
pytz 2020.1
requests 2.24.0
setuptools 47.1.0
six 1.15.0
toml 0.10.1
urllib3 1.25.10
wrapt 1.12.1
PS C:\bot_bitflyer>
上記のようにrequestsが存在していればOKですが、存在しない場合は「pip install requests」コマンドでインストールしてください。
※調べればすぐに出てきます。
ファイルを作成する
Visual Studio Codeで以前やったように適用な名前でファイルを作成してください。
私は「get_rate.py」としました。
サンプルコード
import requests
url = 'https://api.bitflyer.com'
product_code = 'ETH_JPY'
# product_code = 'BTC_JPY'
param_only_product_code = {
'product_code': product_code
}
path_getticker = '/v1/getticker'
result_getticker = requests.get(url + path_getticker, params=param_only_product_code).json()
print('取得した全情報 =', result_getticker)
print('最終取引価格(レート)だけ抜き出したもの =', float(result_getticker['ltp']))
print('小数点を切り捨てたもの =', int(float(result_getticker['ltp'])))
実行結果
取得した全情報 = {
"product_code": "ETH_JPY",
"state": "RUNNING",
"timestamp": "2022-02-27T07:57:26.447",
"tick_id": 42099279,
"best_bid": 316739.0,
"best_ask": 316966.0,
"best_bid_size": 4.98,
"best_ask_size": 0.2,
"total_ask_depth": 2690.8861205,
"market_bid_size": 0.0,
"market_ask_size": 0.0,
"ltp": 316741.0,
"volume": 10287.34344,
"volume_by_product": 10287.34344
}
最終取引価格(レート)だけ抜き出したもの = 316741.0
小数点を切り捨てたもの = 316741
サンプルコードの4行目をコメントアウトして、5行目をアンコメントすると、ビットコインのレートが取得できます。
取得した全情報 = {
"product_code": "BTC_JPY",
"state": "RUNNING",
"timestamp": "2022-02-27T08:06:52.48",
"tick_id": 43179595,
"best_bid": 4483981.0,
"best_ask": 4486185.0,
"best_bid_size": 0.011,
"best_ask_size": 0.03,
"total_bid_depth": 539.85512162,
"total_ask_depth": 580.24105242,
"market_bid_size": 0.0,
"market_ask_size": 0.0,
"ltp": 4486184.0,
"volume": 6031.17406073,
"volume_by_product": 1354.55072768
}
最終取引価格(レート)だけ抜き出したもの = 4486184.0
小数点を切り捨てたもの = 4486184
説明
ということで、見ればわかりそうなものではありますが、いちおう説明します。
本当にワタクシも素人なので、人に教えられるほど理解はしていません。。。
モジュールインポート
import requests
下の方のrequestsを使うために必要なのです。
変数設定
url = 'https://api.bitflyer.com'
product_code = 'ETH_JPY'
# product_code = 'BTC_JPY'
param_only_product_code = {
'product_code': product_code
}
bitFlyerのWebAPIを受けるサーバのURLや、レートを確認する通貨を変数に設定しておきます。
API実行
path_getticker = '/v1/getticker'
result_getticker = requests.get(url + path_getticker, params=param_only_product_code).json()
TickerのAPIを実行して、結果をresult_gettickerという変数?に入れています。
どういうURLに問い合わせればいいのかや、必要なパラメータは以下の公式ドキュメントに書いています。
出力
print('取得した全情報 =', result_getticker)
print('最終取引価格(レート)だけ抜き出したもの =', float(result_getticker['ltp']))
print('小数点を切り捨てたもの =', int(float(result_getticker['ltp'])))
APIを実行して返ってきた結果を出力しています。
- 一番上は返ってきた情報をすべて出力しています。
- 真ん中は「ltp」というのが最終取引価格で、どうやらこれがレートになっているようなので、この値だけを出力しています。
- 一番下はltpが小数点を含んだ結果となるので切り捨てています。今回は使いませんが、計算に利用する際にわかりやすくするためです。
最後に
今回はAPIでbitFlyerの取引所から情報を取得してみました。
次回はとりあえず適当に買ってみようと思います。
本シリーズの一覧ページは以下にまとめています。
それでは。
コメント