本サイトでは何度も紹介しているCryptowatch APIですが、今回はリクエストの一覧をご紹介します。
Cryptowatch APIは、マーケットの様々なデータを取得する事ができる素晴らしいサービスです。仮想通貨BOTなどを作っている方の大半はこのサービスを利用しているとも言われているほどです。
■前提知識
・Cryptowatch APIの基本的な使い方が分かる
・Pythonの基本文法が分かる
・仮想通貨取引所の利用の仕方が分かる
コンテンツ
Cryptowatchの使い方
Cryptowatch APIでは様々な取引所毎のマーケットデータを取得する事ができます。
取引所毎のAPIでは、過去のマーケットデータや、他の取引所のデータを取得する事は基本的にできまないので、いかに素晴らしいサービスかが分かると思います。過去のデータが無ければバックテストをする事もできませんからね^^;
Cryptowatch APIの詳細についてはCryptowatchの仕様書を参考にして下さい
概要レベルではありますが、Cryptowatch APIで指定可能なリクエストの一覧をご紹介します。
ちなみにAPIを使用する場合は、「https://api.cryptowat.ch/」にリクエストしたい値を繋げ、送信用のリクエストURIを作成します。サンプルコードなども載せていますので、参考にしてみていただければと思います。
Asset
Assetを指定するとアセット情報(通貨情報)を取得できます。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/assets |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "result": [ { "id": 404, "symbol": "1st", "name": "FirstBlood", "fiat": false, "route": "https://api.cryptowat.ch/assets/1st" }, { "id": 201, "symbol": "ICX", "name": "ICON", "fiat": false, "route": "https://api.cryptowat.ch/assets/ICX" }, ... ], "allowance": { "cost": 464580, "remaining": 7999535420 } } |
様々な通貨の情報が取得できた事が分かりますね。当然ですがbitcoinの情報も以下の通り取得できています。
■リクエスト結果(bitcoinの情報を抜粋)
1 2 3 4 5 6 7 |
{ "id": 60, "symbol": "btc", "name": "Bitcoin", "fiat": false, "route": "https://api.cryptowat.ch/assets/btc" } |
pairs
pairsを指定すると、様々な通貨ペアの情報を取得できます。
全件取得
まずは通貨ペアを全件取得してみましょう。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/pairs |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "result": [ { "symbol": "1stbtc", "id": 984, "base": { "id": 404, "symbol": "1st", "name": "FirstBlood", "fiat": false, "route": "https://api.cryptowat.ch/assets/1st" }, "quote": { "id": 60, "symbol": "btc", "name": "Bitcoin", "fiat": false, "route": "https://api.cryptowat.ch/assets/btc" }, "route": "https://api.cryptowat.ch/pairs/1stbtc" }, ... ], "allowance": { "cost": 2392777, "remaining": 7997113066 } } |
通貨を指定して取得
次は指定した通貨のみ取得します。ここではBTC-JPYを指定します。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/pairs/btcjpy |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
{ "result": { "symbol": "btcjpy", "id": 227, "base": { "id": 60, "symbol": "btc", "name": "Bitcoin", "fiat": false, "route": "https://api.cryptowat.ch/assets/btc" }, "quote": { "id": 104, "symbol": "jpy", "name": "Japanese Yen", "fiat": true, "route": "https://api.cryptowat.ch/assets/jpy" }, "route": "https://api.cryptowat.ch/pairs/btcjpy", "markets": [ { "id": 215, "exchange": "bitflyer", "pair": "btcjpy", "active": true, "route": "https://api.cryptowat.ch/markets/bitflyer/btcjpy" }, { "id": 1027, "exchange": "bitfinex", "pair": "btcjpy", "active": true, "route": "https://api.cryptowat.ch/markets/bitfinex/btcjpy" }, { "id": 89, "exchange": "kraken", "pair": "btcjpy", "active": true, "route": "https://api.cryptowat.ch/markets/kraken/btcjpy" }, { "id": 184, "exchange": "quoine", "pair": "btcjpy", "active": true, "route": "https://api.cryptowat.ch/markets/quoine/btcjpy" } ] }, "allowance": { "cost": 236233, "remaining": 7996876833 } } |
BTC-JPYの情報だけを取得する事ができました。
Exchanges
Exchangesを指定すると取引所毎の情報を取得できます。
全件取得(対応取引所の一覧)
Exchangesのみを指定すると、対応している取引所が一覧になります。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/exchanges |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "result": [ { "id": 1, "symbol": "bitfinex", "name": "Bitfinex", "route": "https://api.cryptowat.ch/exchanges/bitfinex", "active": true }, { "id": 4, "symbol": "kraken", "name": "Kraken", "route": "https://api.cryptowat.ch/exchanges/kraken", "active": true }, ... ], "allowance": { "cost": 86799, "remaining": 7996790034 } } |
対応している国内取引所は限られている
この一覧を確認してみると分かるのですが、日本国内で対応している取引所は限られています。例えば、bitFlyerなどは対応していますが、zaifは対応していない事が分かります。
取引所を指定
対応しているbitFlyerと、未対応Zaifの情報を取得してみましょう。
bitFlyerの場合
bitFlyerの情報を取得してみましょう。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/exchanges/bitflyer |
■リクエスト結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "result": { "id": 11, "symbol": "bitflyer", "name": "bitFlyer", "active": true, "routes": { "markets": "https://api.cryptowat.ch/markets/bitflyer" } }, "allowance": { "cost": 48335, "remaining": 7999951665 } } |
Zaifの場合
次にZaifの情報を取得を試みます。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/exchanges/zaif |
■リクエスト結果
1 2 3 4 5 6 7 |
{ "error": "Exchange not found", "allowance": { "cost": 1072846, "remaining": 7998878819 } } |
当然ですが情報は取得できませんでした。エラーとなり、「Exchange not found」が返ってきます。やはりZaifの情報は取得できない事が分かります。
Markets
各取引所のマーケット情報を取得する事ができます。
全件取得
■サンプルリクエスト
1 |
https://api.cryptowat.ch/markets |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "result": [ { "id": 1, "exchange": "bitfinex", "pair": "btcusd", "active": true, "route": "https://api.cryptowat.ch/markets/bitfinex/btcusd" }, { "id": 2, "exchange": "bitfinex", "pair": "ltcusd", "active": true, "route": "https://api.cryptowat.ch/markets/bitfinex/ltcusd" }, ... ], "allowance": { "cost": 8304666, "remaining": 7988485368 } } |
実際にリクエストを送信してみると分かりますがかなり膨大なデータ量です。。。もう少し絞り込んで使った方が良いですね。
取引所と通貨ペアを指定
marketに続けて「取引所/通貨ペア」と指定してみましょう。
ここでは「取引所:bitflyer」「通貨ペア:btcjpy」と指定してみます。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/markets/bitflyer/btcjpy |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "result": { "id": 215, "exchange": "bitflyer", "pair": "btcjpy", "active": true, "routes": { "price": "https://api.cryptowat.ch/markets/bitflyer/btcjpy/price", "summary": "https://api.cryptowat.ch/markets/bitflyer/btcjpy/summary", "orderbook": "https://api.cryptowat.ch/markets/bitflyer/btcjpy/orderbook", "trades": "https://api.cryptowat.ch/markets/bitflyer/btcjpy/trades", "ohlc": "https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc" } }, "allowance": { "cost": 78488, "remaining": 7998264077 } } |
bitFlyerのBTC-JPYの情報だけを絞り込んで取得する事ができました。
最終価格を取得
「取引所/通貨ペア」に続けて「price」と指定する事で、最終価格も取得できます。
先ほどもリクエストに続けて、bitFlyerのBTC-JPYの最終価格を取得してみましょう。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/markets/bitflyer/btcjpy/price |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 |
{ "result": { "price": 747936 }, "allowance": { "cost": 421746, "remaining": 7997842331 } } |
最終価格を取得できました。
その他
他にも以下の指定ができます。実際にURLをリクエストして試してみて下さいね。
「Summary」:統計概要
「trades」:取引情報
「orderbook」:板に関する情報
「ohlc」:ローソク足 ⇒ ローソク足についてはこちらの記事で解説しています。
prices
マーケットの価格情報を取得します。これ単体で使う事は少ないかも。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/markets/prices |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "result": { "binance:adabnb": 0.00789, "binance:adabtc": 0.00001233, "binance:adaeth": 0.00036598, ... }, "allowance": { "cost": 2104902, "remaining": 7986380466 } } |
こちらも使用する場合はデータを絞り込まなければ使えなそうですね。
summaries
マーケットの情報を集計結果を取得します。こちらも単体で使う機会は少なそうです。
■サンプルリクエスト
1 |
https://api.cryptowat.ch/markets/summaries |
■リクエスト結果(抜粋)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "result": { "binance:adabnb": { "price": { "last": 0.00789, "high": 0.00806, "low": 0.00781, "change": { "percentage": -0.0062972186, "absolute": -0.000049999915 } }, "volume": 1344684.8, "volumeQuote": 10711.018 }, ... }, "allowance": { "cost": 2590784, "remaining": 7983789682 } } |
情報を抜粋していますが、かなり膨大なデータが格納されています。
まとめ
Cryptowatch APIの使い方の概要などについてご紹介しました。何度か使っているうちに扱い方はすぐに分かると思います。
注意が必要なのは、対象となる取引所が限られているという事。途中でもお伝えした通り、bitFlyerは対応していますが、zaifは対応していません。Cryptowatch APIを使ってシステムトレードをするのであれば、取引所も選別する必要がありそうです。
海外の有名取引所であれば大抵は対応していますので、海外取引所の口座を作ってそちらで売買をするという方も結構多いですね。
いずれにしても、自分のスタンスに合わせてこのAPIを活用する様にしましょう。