Bitcoin、8/1のシステム刷新を控え高騰したり暴落したり忙しいですが、Bitcoinの取引所である「bitFlyer/Lightning」のAPIがあったので使えるPHPライブラリを探したのですがないようなので自作しました。
APIリクエストはcURLを使用しています。マルチではないのでAPIレスポンスが返ってくるまではじっと我慢です。
ライセンスはMITですが、BitFlyerAPIの利用規約に従ってください。
bitFlyerって?
ビットコインの売買をすることができる取引所です。ユーザになると専用のビットコインアドレスが振られて、そこにビットコインを貯めることもできますし、ビットコインの送受信や売買を行うことができます。
bitFlyer/Lightningとは
通常のビットコイン現物取引やビットコインFX取引、イーサリアム取引ができるマーケットです。bitFlyerのログイン後画面から移動できます。
bitFlyer/Lightning APIとは
REST APIによって公開データの取得や自分の証拠金残高や資金移動、新規注文/キャンセルなど、通常画面から行う作業をプログラムから行うことができます。
本題
インストール
composerを使ってインストール:
composer require stk2k/phitflyer
GitHub:
git clone git@github.com:stk2k/phitflyer.git
使い方
APIキーの生成
APIを使って個人アカウントの情報にアクセスするためには「APIキー」と「APIシークレット」が必要になります。
開発者ページで自分の「APIキー」と「APIシークレット」を生成してください。
(名前はなんでもOK)
間違ってAPIキー、APIシークレットをGitHubなんかに置かないようにしましょう。
基本的な使い方
phitFlyerは以下のように使います。
require './vendor/autoload.php';
use PhitFlyer\PhitFlyerClient;
$flyer = new PhitFlyerClient();
$markets = $flyer->getMarkets();
foreach($markets as $idx => $market){
echo $idx . '.' . PHP_EOL;
echo 'product_code:' . $market->product_code . PHP_EOL;
echo 'alias:' . (isset($market['alias']) ? $market['alias'] : '') . PHP_EOL;
}
まずcomposerのオートローダーを読み込みます。
次にPhitFlyerClientを作成して、目的のAPIに対応したメソッドを呼び出します。
ここではマーケット一覧を取得しています。
取得結果はvar_dump等で確認してください。
またAPIに書かれているAPIのうち、HTTP Public APIはAPIキー/APIシークレットを使用しませんが、HTTP Private APIの方は個人情報にアクセスするため前述のAPIキー/APIシークレットが必要になります。
require './vendor/autoload.php';
use PhitFlyer\PhitFlyerClient;
$api_key = '開発者ページで作成したAPIキー';
$api_secret = '開発者ページで作成したAPIシークレット';
$flyer = new PhitFlyerClient($api_key, $api_secret);
$markets = $flyer->meGetPermissions();
上記の例ではAPIキーのパーミッションを取得しています。
パーミッションはそのAPIキーで何ができるかを表していて、開発者ページで設定することができます。
当然ですがこの画面でチェックがついていない機能をAPIから利用することはできません。
結果をオブジェクトで取ってくる
PhitFlyerClientは取得結果をjson_decodeするだけなので高速ですが、取得結果の配列アクセス時にチェックする必要があります。
(板情報のaliasなど)
PhitFlyerObjectClient経由でメソッドコールすることでオブジェクトとして返してくれるので、その辺のチェックが不要になります。
(速度的には不利になりますが)
use PhitFlyer\PhitFlyerClient;
use PhitFlyer\PhitFlyerObjectClient;
$flyer = new PhitFlyerObjectClient(new PhitFlyerClient());
$markets = $flyer->getMarkets();
foreach($markets as $idx => $market){
echo $idx . '.' . PHP_EOL;
echo 'product_code:' . $market->getProductCode() . PHP_EOL;
echo 'alias:' . $market->getAlias() . PHP_EOL;
}
サポートしているAPI
phitFlyerが実装しているbitFlyerAPIの機能です。
HTTP Public API(公開データAPI)
機能 | HTTPリクエスト | phitFlyerのメソッド | 対応 |
---|---|---|---|
マーケットの一覧 | GET /v1/markets | getMarkets() | v0.1.0~ |
板情報 | GET /v1/board | getBoard() | v0.1.0~ |
Ticker | GET /v1/ticker | getTicker() | v0.1.0~ |
約定履歴 | GET /v1/executions | getExecutions() | v0.1.0~ |
板の状態 | GET /v1/getboardstate | getBoardState() | v0.2.0~ |
取引所の状態 | GET /v1/gethealth | getHealth() | v0.1.0~ |
チャット | GET /v1/getchats | getChats() | v0.1.0~ |
HTTP Private API(個人情報API)
機能 | HTTPリクエスト | phitFlyerのメソッド | 対応 |
---|---|---|---|
API キー権限取得 | GET /v1/me/getpermissions | meGetPermissions() | v0.1.0~ |
資産残高 | GET /v1/me/getbalance | meGetBalance() | v0.1.0~ |
証拠金 | GET /v1/me/getcollateral | meGetCollateral() | v0.1.0~ |
通貨別 証拠金 | GET /v1/me/getcollateralaccounts | meGetCollateralAccounts() | v0.1.0~ |
預入用ビットコイン・イーサリアムアドレス取得 | GET /v1/me/getaddresses | meGetAddress() | v0.1.0~ |
ビットコイン・イーサ預入履歴 | GET /v1/me/getcoinins | meGetCoinIns() | v0.1.0~ |
ビットコイン・イーサ送付履歴 | GET /v1/me/getcoinouts | meGetCoinOuts() | v0.1.0~ |
銀行口座一覧取得 | GET /v1/me/getbankaccounts | meGetBankAccounts() | v0.1.0~ |
入金履歴 | GET /v1/me/getdeposits | meGetDeposits() | v0.1.0~ |
~~v0.1.0~~~× | |||
~~v0.1.0~~~× | |||
新規注文を出す | GET /v1/me/sendchildorder | meSendChildOrder() | v0.1.0~ |
注文をキャンセルする | GET /v1/me/cancelchildorder | meCancelChildOrder() | v0.1.0~ |
新規の親注文を出す(特殊注文) | GET /v1/me/sendparentorder | - | × |
親注文をキャンセルする | GET /v1/me/cancelparentorder | - | × |
すべての注文をキャンセルする | GET /v1/me/cancelallchildorders | meCancelAllChildOrders() | v0.1.0~ |
注文の一覧を取得 | GET /v1/me/getchildorders | meGetChildOrders() | v0.1.0~ |
親注文の一覧を取得 | GET /v1/me/getparentorders | - | × |
親注文の詳細を取得 | GET /v1/me/getparentorder | - | × |
約定の一覧を取得 | GET /v1/me/getexecutions | meGetExecutions() | v0.1.0~ |
建玉の一覧を取得 | GET /v1/me/getpositions | meGetPositions() | v0.1.0~ |
取引手数料を取得 | GET /v1/me/gettradingcommission | meGetPositions() | v0.1.0~ |
引数の詳細についてはAPIドキュメントを参照してください。
特殊注文系は未対応ですが、希望が多ければ対応するかもしれません。
寄付もお待ちています!
Bitcoin: 3HCw9pp6dSq1xU9iPoPKVFyVbM8iBrrinn
※バージョンアップ情報
日付 | バージョン | 内容 |
---|---|---|
2018/2/20 | v0.2.0 | 「板の状態」API(/v1/getboardstate)を追加 |
「出金」API(/v1/me/withdraw)を削除 | ||
「出金履歴」API(/v1/me/getwithdrawals)を削除 | ||
2018/5/8 | v0.3.0 | PhitFlyerClientの一部のメソッドが返すデータをオブジェクトから配列に変更 |
2018/5/22 | v0.4.0 | インタフェース名変更・HTTP接続ライブラリをstk2k/net-driverに変更・PSR-3 Logger対応 |