【自動売買Bot作成3】現在のレートを取得する

ということで、いよいよAPIを使って取引所にアクセスしてみようと思います。
まぁ大丈夫だとは思いますが、5分間に何回までとかの制限があるので、いちおう公式ドキュメントを確認しておいてください。

公式APIドキュメントのAPI制限箇所

取引所は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に問い合わせればいいのかや、必要なパラメータは以下の公式ドキュメントに書いています。

公式APIドキュメントのTicker箇所

出力

print('取得した全情報 =', result_getticker)
print('最終取引価格(レート)だけ抜き出したもの =', float(result_getticker['ltp']))
print('小数点を切り捨てたもの =', int(float(result_getticker['ltp'])))

APIを実行して返ってきた結果を出力しています。

  • 一番上は返ってきた情報をすべて出力しています。
  • 真ん中は「ltp」というのが最終取引価格で、どうやらこれがレートになっているようなので、この値だけを出力しています。
  • 一番下はltpが小数点を含んだ結果となるので切り捨てています。今回は使いませんが、計算に利用する際にわかりやすくするためです。

最後に

今回はAPIでbitFlyerの取引所から情報を取得してみました。
次回はとりあえず適当に買ってみようと思います。

本シリーズの一覧ページは以下にまとめています。

それでは。

  • URLをコピーしました!

コメント

コメントする

目次