仮想通貨に全ツッパ

仮想通貨投資の記録とプログラマーとしての技術備忘録の日記です。

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

f:id:hotkou:20180410003112j:plain

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

ずいぶんと更新の間が空いてしまいました。。。

ずっと勉強ばっかしていて、ブログの更新が止まっちゃっていました。

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

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

ccxtライブラリとは?

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

以下githubのリンクです。
github.com

いままで各取引所(Binance、bitFlyer、CoinExchange等)のAPIを紹介してきました。
■Binance
PythonでBinanceAPIを動かしてみた。 - 仮想通貨に全ツッパ

■bitFlyer
pythonでbitFlyerのAPIを叩いてみた - 仮想通貨に全ツッパ

■CoinExchange
CoinExchangeのAPIで価格情報を取得 - 仮想通貨に全ツッパ

上の記事のように、取引所によって価格取得の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
  • nodeJS
  • JavaScript

対応取引所

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

■日本取引所

  • bitFlyer
  • Zaif
  • Coincheck
  • BTCBOX
  • quoinex

など



■海外取引所

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

など

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


お気に入りのbitbankは現在未対応です。未対応の取引所は独自にAPIを使用する必要があります。
過去記事で紹介していますので、参考にしてみてください。
www.crypto-attack.work

PHPでの初期設定

PHPで使う場合はcomposerを使ってインストールすると楽ちんです。
※現在別サイトで技術特価系ブログを作成中です。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";

//価格情報の取得
var_dump($poloniex->fetch_balance());

注文

※以下のサンプルより実行すると実際に注文や出金処理が行われます。自己責任でお願いします。
 また、ソースが間違っている可能性もあります。実行する場合、必ずテストを使用してから実行するようにしましょう。

 

<?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);

以上です。