比特幣與山寨幣的數字貨幣交易庫 CCXT——CryptoCurrency eXchange

geeker發表於2018-11-30

CCXT(CryptoCurrency eXchange)交易庫,一個JavaScript/Python/PHP加密貨幣交易庫,支援超過100種山寨幣與比特幣交易所。

用於加密貨幣交易和電子商務的JavaScript/Python/PHP庫,支援許多比特幣/乙太網/山寨幣交易所和商家API。

CCXT庫用於連線和交易全球的加密貨幣/山寨幣交易所和支付處理服務。它可以快速訪問市場資料,用於儲存,分析,視覺化,指標開發,演算法交易,策略回溯測試,機器人程式設計,網上商店整合和相關軟體工程。

它旨在供編碼人員,開發人員,技術熟練的交易員,資料科學家和金融分析師用於構建交易演算法。

當前功能列表:

  • 支援許多交易市場,甚至即將推出的
  • 為所有交易提供完整的公共和私人API
  • 所有貨幣,山寨幣和標記,價格,訂單,交易,程式碼等...
  • 提供用於交叉交換或跨貨幣分析和套利的可選標準化資料
  • 開箱即用的統一的一體化API,非常易於整合
  • 適用於Node7.6+,Python2和3,PHP5.4+,Web瀏覽器

認證交易所

支援的加密貨幣交易所

ccxt庫目前支援以下131個加密貨幣交易所和交易API(太多了想看的直接到github看吧,就不列出來了):

https://github.com/ccxt/ccxt

上面的列表經常更新,新的加密市場,山寨幣交換,錯誤修復,API端點定期引入和新增。有關詳細資訊,請參閱手冊,如果你沒有在上面的列表中找到加密貨幣交易市場和/或想要新增其他交易所,請通過GitHub或通過電子郵件在此處釋出問題來發布或向我們傳送連結。

該庫受到MIT許可,這意味著任何開發人員都可以完全免費構建商業和開源軟體,但使用它需要你自擔風險且無需擔保。

安裝

安裝ccxt庫的最簡單方法是使用內建包管理器:

該庫作為一體化模組實現提供,具有最小的依賴性和要求:

  • js/在JavaScript中
  • python/在Python中(從JS生成)
  • PHP/ PHP(從JS生成)

也可以從ccxt GitHub儲存庫將其克隆到專案目錄中:

git clone https://github.com/ccxt/ccxt.git

將此庫安裝到程式碼中的另一種方法是將單個檔案手動複製到工作目錄中,並使用適合你環境的語言副檔名。

JavaScript(NPM)

CCXT的JavaScript版本適用於Node和Web瀏覽器。需要ES6和async/await語法支援(節點7.6.0+)。使用Webpack和Babel進行編譯時,請確保在babel-loader配置中not excluded它。

npm install ccxt
var ccxt = require ('ccxt')

console.log (ccxt.exchanges) // print all available exchanges

JavaScript(用於script標記):

一體化瀏覽器捆綁包(包括依賴項),由unpkg CDN提供服務,這是一個快速的全球內容交付網路,適用於NPM上的所有內容。

<script type="text/javascript" src="https://unpkg.com/ccxt"></script>

建立全域性ccxt物件:

console.log (ccxt.exchanges) // print all available exchanges

Python

pip install ccxt
import ccxt
print(ccxt.exchanges) # print a list of all available exchange classes

該庫支援在Python 3.5.3+中使用asyncioasync/await的併發非同步模式:

import ccxt.async_support as ccxt # link against the asynchronous version of ccxt

PHP

它需要常見的PHP模組:

  • cURL
  • mbstring(強烈推薦使用UTF-8)
  • PCRE
  • iconv
  • gmp(這是PHP 7.2+中的內建擴充套件)
include "ccxt.php";
var_dump (\ccxt\Exchange::$exchanges); // print a list of all available exchange classes

使用

ccxt庫由公共部分和私有部分組成。任何人都可以在安裝後立即使用公共部分即插即用。公共API可以從所有交易所市場開放訪問公共資訊,無需註冊使用者帳戶,也無需擁有API金鑰。

公共API包括以下內容:

  • 市場資料
  • 工具/交易對
  • 價格(匯率)
  • 訂單
  • 交易歷史
  • 行情
  • 用於製圖的OHLC(V)
  • 其他公共端點

對於使用私有API進行交易,你需要從交換市場獲取API金鑰。這通常意味著註冊交易並使用你的帳戶建立API金鑰。大多數交易所需要個人資訊或身份證也可能需要某種驗證。如果你想交易,你需要自己註冊,此庫不會為你建立帳戶或API金鑰。一些交易API公開了用於在程式碼本身內註冊帳戶的介面方法,但大多數交易不會。你必須在其網站上註冊並建立API金鑰。

私有API允許以下內容:

  • 管理個人帳戶資訊
  • 查詢帳戶餘額
  • 通過製造市場和限價訂單進行交易
  • 存入和取出法定和加密資金
  • 查詢個人訂單
  • 獲得總賬歷史
  • 在賬戶之間轉移資金
  • 使用商家服務

此庫為所有交換實現完整的公共和私有REST API。即將推出JavaScript,PHP,Python和其他語言的WebSocket和FIX實現。

ccxt庫支援camelcase表示法(在JavaScript中是首選)和下劃線表示法(在Python和PHP中首選),因此所有方法都可以用任何語言的符號或編碼方式呼叫。

// both of these notations work in JavaScript/Python/PHP
exchange.methodName ()  // camelcase pseudocode
exchange.method_name () // underscore pseudocode

javascript

'use strict';
const ccxt = require ('ccxt');

(async function () {
    let kraken    = new ccxt.kraken ()
    let bitfinex  = new ccxt.bitfinex ({ verbose: true })
    let huobi     = new ccxt.huobi ()
    let okcoinusd = new ccxt.okcoinusd ({
        apiKey: 'YOUR_PUBLIC_API_KEY',
        secret: 'YOUR_SECRET_PRIVATE_KEY',
    })

    const exchangeId = 'binance'
        , exchangeClass = ccxt[exchangeId]
        , exchange = new exchangeClass ({
            'apiKey': 'YOUR_API_KEY',
            'secret': 'YOUR_SECRET',
            'timeout': 30000,
            'enableRateLimit': true,
        })

    console.log (kraken.id,    await kraken.loadMarkets ())
    console.log (bitfinex.id,  await bitfinex.loadMarkets  ())
    console.log (huobi.id,     await huobi.loadMarkets ())

    console.log (kraken.id,    await kraken.fetchOrderBook (kraken.symbols[0]))
    console.log (bitfinex.id,  await bitfinex.fetchTicker ('BTC/USD'))
    console.log (huobi.id,     await huobi.fetchTrades ('ETH/CNY'))

    console.log (okcoinusd.id, await okcoinusd.fetchBalance ())

    // sell 1 BTC/USD for market price, sell a bitcoin for dollars immediately
    console.log (okcoinusd.id, await okcoinusd.createMarketSellOrder ('BTC/USD', 1))

    // buy 1 BTC/USD for $2500, you pay $2500 and receive ฿1 when the order is closed
    console.log (okcoinusd.id, await okcoinusd.createLimitBuyOrder ('BTC/USD', 1, 2500.00))

    // pass/redefine custom exchange-specific order params: type, amount, price or whatever
    // use a custom order type
    bitfinex.createLimitSellOrder ('BTC/USD', 1, 10, { 'type': 'trailing-stop' })

}) ();

Python

# coding=utf-8

import ccxt

hitbtc = ccxt.hitbtc({'verbose': True})
bitmex = ccxt.bitmex()
huobi  = ccxt.huobi()
exmo   = ccxt.exmo({
    'apiKey': 'YOUR_PUBLIC_API_KEY',
    'secret': 'YOUR_SECRET_PRIVATE_KEY',
})
kraken = ccxt.kraken({
    'apiKey': 'YOUR_PUBLIC_API_KEY',
    'secret': 'YOUR_SECRET_PRIVATE_KEY',
})

exchange_id = 'binance'
exchange_class = getattr(ccxt, exchange_id)
exchange = exchange_class({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_SECRET',
    'timeout': 30000,
    'enableRateLimit': True,
})

hitbtc_markets = hitbtc.load_markets()

print(hitbtc.id, hitbtc_markets)
print(bitmex.id, bitmex.load_markets())
print(huobi.id, huobi.load_markets())

print(hitbtc.fetch_order_book(hitbtc.symbols[0]))
print(bitmex.fetch_ticker('BTC/USD'))
print(huobi.fetch_trades('LTC/CNY'))

print(exmo.fetch_balance())

# sell one ฿ for market price and receive $ right now
print(exmo.id, exmo.create_market_sell_order('BTC/USD', 1))

# limit buy BTC/EUR, you pay €2500 and receive ฿1  when the order is closed
print(exmo.id, exmo.create_limit_buy_order('BTC/EUR', 1, 2500.00))

# pass/redefine custom exchange-specific order params: type, amount, price, flags, etc...
kraken.create_market_buy_order('BTC/USD', 1, {'trading_agreement': 'agree'})

PHP

include 'ccxt.php';

$poloniex = new \ccxt\poloniex ();
$bittrex  = new \ccxt\bittrex  (array ('verbose' => true));
$quoinex  = new \ccxt\quoinex   ();
$zaif     = new \ccxt\zaif     (array (
    'apiKey' => 'YOUR_PUBLIC_API_KEY',
    'secret' => 'YOUR_SECRET_PRIVATE_KEY',
));
$hitbtc   = new \ccxt\hitbtc   (array (
    'apiKey' => 'YOUR_PUBLIC_API_KEY',
    'secret' => 'YOUR_SECRET_PRIVATE_KEY',
));

$exchange_id = 'binance';
$exchange_class = "\\ccxt\\$exchange_id";
$exchange = new $exchange_class (array (
    'apiKey' => 'YOUR_API_KEY',
    'secret' => 'YOUR_SECRET',
    'timeout' => 30000,
    'enableRateLimit' => true,
));

$poloniex_markets = $poloniex->load_markets ();

var_dump ($poloniex_markets);
var_dump ($bittrex->load_markets ());
var_dump ($quoinex->load_markets ());

var_dump ($poloniex->fetch_order_book ($poloniex->symbols[0]));
var_dump ($bittrex->fetch_trades ('BTC/USD'));
var_dump ($quoinex->fetch_ticker ('ETH/EUR'));
var_dump ($zaif->fetch_ticker ('BTC/JPY'));

var_dump ($zaif->fetch_balance ());

// sell 1 BTC/JPY for market price, you pay ¥ and receive ฿ immediately
var_dump ($zaif->id, $zaif->create_market_sell_order ('BTC/JPY', 1));

// buy BTC/JPY, you receive ฿1 for ¥285000 when the order closes
var_dump ($zaif->id, $zaif->create_limit_buy_order ('BTC/JPY', 1, 285000));

// set a custom user-defined id to your order
$hitbtc->create_order ('BTC/USD', 'limit', 'buy', 1, 3000, array ('clientOrderId' => '123'));

分享2個以太坊、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:

php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。

這裡是原文比特幣與山寨幣的數字貨幣交易庫CCXT——CryptoCurrency eXchange

相關文章