仮想通貨取引所のAPI処理を共通化できる!CCXTをPHPで動かしてみた。

2019.10.10 2020.01.10 125
仮想通貨取引所のAPI処理を共通化できる!CCXTをPHPで動かしてみた。

こんばんわ!こふそ(@koheta0325)です。

勉強したころを忘れないためにもブログ書き留めておきます。

本日は勉強してきたccxtライブラリを紹介します。

ccxtライブラリとは?

ccxtライブラリ各取引所のAPIを共通化した非常に強力なライブラリです。
(CryptoCurrency eXchange Trading Library)

取引所によって価格取得のAPIの処理がそれぞれ異なっていました。
そのため取引所毎にAPIの使い方(送信するパラメータやレスポンスの受け取り方)をいちいちドキュメント等を確認しなければいけません。
海外取引所のAPIは英語のドキュメントですし、なかなか私には大変でした(当時は・・)
そこでccxtライブラリを使えば、取引所毎の価格情報、注文等のAPI処理を共通化してくれます。

例えば、次のような感じでプログラムで書けます。(PHPで書いてみました)


<?php

include 'ccxt.php';
$poloniex = new \ccxt\poloniex();
$bittrex = new \ccxt\bittrex();
$zaif = new \ccxt\zaif();
$targetPair = 'XEM/BTC';
//価格情報の取得
var_dump($poloniex->fetch_ticker($targetPair));
var_dump($bittrex->fetch_ticker($targetPair));
var_dump($zaif->fetch_ticker($targetPair));

すべての取引所でexchange->fetch_tickerでTicker情報を取得できます。

レスポンスの値も基本的にはどこの取引所も共通化されているため、非常にプログラムが書きやすいです。

各取引所の価格を割り出す場合に、簡単に書けるようになると思います。

対応言語

  • python
  • PHP
  • Node.JS
  • JavaScript

対応取引所

現在、約100の取引所に対応しています。
■日本取引所

  • bitFlyer
  • Zaif
  • Coincheck
  • BTCBOX
  • quoinex

など
■海外取引所

  • BitMEX
  • poloniex
  • bittrex
  • binance
  • coinExchange
  • cryptopia
  • hitbtc

など
対応取引所はgithubをご確認ください。
httpss://github.com/ccxt/ccxt

俺たちのbitbankは現在未対応です。未対応の取引所は独自にAPIを使用する必要があります。

PHPでの初期設定

PHPで使う場合はcomposerを使ってインストールすると楽ちんです。

インストールしたいディレクトリで、以下のコマンドを実行

composer require ccxt/ccxt

PHPサンプルプログラム

価格情報の取得


<?php 


// autoloadを読み込む require 'vendor/autoload.php';
$poloniex = new \ccxt\poloniex();
$bittrex = new \ccxt\bittrex();
$zaif = new \ccxt\zaif();
$targetPair = 'XEM/BTC'; //価格情報の取得

var_dump($poloniex->fetch_ticker($targetPair));
var_dump($bittrex->fetch_ticker($targetPair));
var_dump($zaif->fetch_ticker($targetPair));

残高の確認

<?php 

// autoloadを読み込む require 'vendor/autoload.php'; $poloniex = new \ccxt\poloniex(); //APIキー、SECRET設定 $poloniex->apiKey = "API_KEY";
$poloniex->secret = "SECRET";
$pair = "XEM/BTC";
$amount = 1; //数量
$price = 30; //価格
//指値購入
$response = $poloniex->create_limit_buy_order($pair, $amount, $price);

//指値売却
$response = $poloniex->create_limit_sell_order($pair, $amount, $price);

出金


<?php // autoloadを読み込む require 'vendor/autoload.php'; $poloniex = new \ccxt\poloniex(); //APIキー、SECRET設定 $poloniex->apiKey = "API_KEY";
$poloniex->secret = "SECRET";
$sendCoin = "XEM";
$sendAmount = 1; //数量
$sendToAddress = "宛先アドレス";
$message = "XEMの場合メッセージが必要"
//出金 XEMの場合のみメッセージが第4引数に必要
$response = $poloniex->withdraw($sendCoin, $sendAmount,$sendToAddress,$message);
//出金 XEM以外
$response = $poloniex->withdraw($sendCoin, $sendAmount,$sendToAddress);

以上です。