noteのタイトル画像

[アービトラージ] どこの取引所を使うべきか

前回に引き続き、アービトラージの話題です。

使用する取引所アクセスモジュールはccxtとしているので、このモジュールで利用できないと意味がありませんので、ccxtでサポートされている取引所の一覧を抜き出すところから始めます。

node.js環境とccxtがインストールされていることを前提にしていますので、もし環境がない方は私の前のnoteを参考にして構築してください。

ccxtでサポートされている取引所IDを次のプログラムで取得します。

// ccxtでサポートされている取引所を列挙する
const ccxt = require("ccxt");

ccxt.exchanges.forEach(exchange => {
  console.log(`${ex}`);
});

簡単ですね。
実行結果は次のようになりました。

_1btcxe
acx
allcoin
anxpro
anybits
bcex
bibox
bigone
binance
bit2c
bitbank
bitbay
bitfinex
bitfinex2
bitflyer
bitforex
bithumb
bitibu
bitkk
bitlish
bitmarket
bitmex
bitsane
bitso
bitstamp
bitstamp1
bittrex
bitz
bl3p
bleutrade
braziliex
btcalpha
btcbox
btcchina
btcexchange
btcmarkets
btctradeim
btctradeua
btcturk
buda
bxinth
ccex
cex
chbtc
chilebit
cobinhood
coinbase
coinbaseprime
coinbasepro
coincheck
coinegg
coinex
coinexchange
coinfalcon
coinfloor
coingi
coinmarketcap
coinmate
coinnest
coinone
coinspot
cointiger
coolcoin
crex24
crypton
cryptopia
deribit
dsx
ethfinex
exmo
exx
fcoin
flowbtc
foxbit
fybse
fybsg
gatecoin
gateio
gdax
gemini
getbtc
hadax
hitbtc
hitbtc2
huobi
huobicny
huobipro
ice3x
independentreserve
indodax
itbit
jubi
kkex
kraken
kucoin
kuna
lakebtc
lbank
liqui
liquid
livecoin
luno
lykke
mercado
mixcoins
negociecoins
nova
okcoincny
okcoinusd
okex
paymium
poloniex
qryptos
quadrigacx
quoinex
rightbtc
southxchange
surbitcoin
theocean
therock
tidebit
tidex
uex
urdubit
vaultoro
vbtc
virwox
wex
xbtce
yobit
yunbi
zaif
zb

非常に多くの取引所が列挙されています。
133ほどあるでしょうか。

これほど多いと、どの取引所が希望する通貨ペアを持っているのか探すのも大変です。

で、またプログラムを書きます。
少々乱暴ですが、fetchMarketsをサポートしていない取引所や、何故かアクセスすると例外が発生してしまうところもあったので、try-catchで例外を捕捉しつつ、取引所を列挙します。

この例はBTC/JPYをサポートしている取引所を列挙するプログラムです。

// ccxtでサポートされている取引所から探したい通貨ペアを持っている取引所を列挙
const ccxt = require('ccxt');
// 探したい通貨ペア
const PAIR = 'BTC/JPY';

ccxt.exchanges.forEach(async exchange => {
  try {
    const ex = new ccxt[exchange];
    const markets = await ex.fetchMarkets();
    const hit = markets.filter((element, index, array) => {
      return (element.symbol == PAIR);
    });
    if(hit.length != 0) {
      console.log(`${exchange}`);
    }
  } catch(e) {
    //       
  }
});

実行結果は次のようになりました。

_1btcxe
anxpro
bitbank
btcbox
coincheck
getbtc
zaif
bitfinex
coinmarketcap
bitfinex2
kraken
bitflyer
lakebtc
liquid
quoinex
qryptos
bitlish
crex24
lykke

133個から随分と数が減りましたが、それでもこれだけの数の取引所の利用が可能そうだという目星はつけられます。

おなじみのbtiflyerやbitbank, coincheck, zaif等が名前を連ねています。
(出てこないと困るので)

実際にはこれだけ全部の取引所に口座が作れる訳ではないので、あくまで候補の選定です。
BTC/xxxのxxxを他の通貨にすれば、他の取引所を探すことも容易です。

今回は、ccxtでサポートされている取引所で、指定の通貨ペアを見つける方法でした。

次回以降は、
・同一取引所内でサポートされている通貨ペアの列挙
・maker手数料、taker手数料がいくらかを抜き出す
をやってみようと思います。
(あくまで、ccxtがサポートした時点での情報です。実際にアクセスすると違ったこともあるので、盲信は禁物です)

ソフトウェア・エンジニアを40年以上やってます。 「Botを作りたいけど敷居が高い」と思われている方にも「わかる」「できる」を感じてもらえるように頑張ります。 よろしくお願い致します。