CCXT(CryptoCurrency eXchange)交易庫,一個JavaScript/Python/PHP加密貨幣交易庫知染,支持超過100種山寨幣與比特幣交易所双吆。
用于加密貨幣交易和電子商務的JavaScript/Python/PHP庫抑淫,支持許多比特幣/以太網(wǎng)/山寨幣交易所和商家API胳搞。
CCXT庫用于連接和交易全球的加密貨幣/山寨幣交易所和支付處理服務卸例。它可以快速訪問市場數(shù)據(jù),用于存儲肌毅,分析币厕,可視化,指標開發(fā)芽腾,算法交易,策略回溯測試页衙,機器人編程摊滔,網(wǎng)上商店集成和相關軟件工程阴绢。
它旨在供編碼人員,開發(fā)人員艰躺,技術(shù)熟練的交易員呻袭,數(shù)據(jù)科學家和金融分析師用于構(gòu)建交易算法。
當前功能列表:
- 支持許多交易市場腺兴,甚至即將推出的
- 為所有交易提供完整的公共和私人API
- 所有貨幣左电,山寨幣和標記,價格页响,訂單篓足,交易,代碼等...
- 提供用于交叉交換或跨貨幣分析和套利的可選標準化數(shù)據(jù)
- 開箱即用的統(tǒng)一的一體化API闰蚕,非常易于集成
- 適用于Node7.6+栈拖,Python2和3,PHP5.4+没陡,Web瀏覽器
認證交易所
支持的加密貨幣交易所
ccxt庫目前支持以下131個加密貨幣交易所和交易API(太多了想看的直接到github看吧涩哟,就不列出來了):
上面的列表經(jīng)常更新,新的加密市場盼玄,山寨幣交換贴彼,錯誤修復,API端點定期引入和添加埃儿。有關詳細信息器仗,請參閱手冊,如果你沒有在上面的列表中找到加密貨幣交易市場和/或想要添加其他交易所蝌箍,請通過GitHub或通過電子郵件在此處發(fā)布問題來發(fā)布或向我們發(fā)送鏈接青灼。
該庫受到MIT許可,這意味著任何開發(fā)人員都可以完全免費構(gòu)建商業(yè)和開源軟件妓盲,但使用它需要你自擔風險且無需擔保杂拨。
安裝
安裝ccxt庫的最簡單方法是使用內(nèi)置包管理器:
- NPM中的ccxt(JavaScript/Node v7.6+)
- PyPI中的ccxt(Python 2和3.5.3+)
- Packagist/Composer中的ccxt(PHP 5.4+)
該庫作為一體化模塊實現(xiàn)提供,具有最小的依賴性和要求:
也可以從ccxt GitHub存儲庫將其克隆到項目目錄中:
git clone https://github.com/ccxt/ccxt.git
將此庫安裝到代碼中的另一種方法是將單個文件手動復制到工作目錄中悯衬,并使用適合你環(huán)境的語言擴展名弹沽。
JavaScript(NPM)
CCXT的JavaScript版本適用于Node和Web瀏覽器。需要ES6和async/await
語法支持(節(jié)點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提供服務丽已,這是一個快速的全球內(nèi)容交付網(wǎng)絡,適用于NPM上的所有內(nèi)容买决。
<script type="text/javascript" src="https://unpkg.com/ccxt"></script>
創(chuàng)建全局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+中使用asyncio
和async/await
的并發(fā)異步模式:
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+中的內(nèi)置擴展)
include "ccxt.php";
var_dump (\ccxt\Exchange::$exchanges); // print a list of all available exchange classes
使用
ccxt庫由公共部分和私有部分組成沛婴。任何人都可以在安裝后立即使用公共部分即插即用吼畏。公共API可以從所有交易所市場開放訪問公共信息,無需注冊用戶帳戶嘁灯,也無需擁有API密鑰泻蚊。
公共API包括以下內(nèi)容:
- 市場數(shù)據(jù)
- 工具/交易對
- 價格(匯率)
- 訂單
- 交易歷史
- 行情
- 用于制圖的OHLC(V)
- 其他公共端點
對于使用私有API進行交易,你需要從交換市場獲取API密鑰丑婿。這通常意味著注冊交易并使用你的帳戶創(chuàng)建API密鑰性雄。大多數(shù)交易所需要個人信息或身份證也可能需要某種驗證。如果你想交易羹奉,你需要自己注冊秒旋,此庫不會為你創(chuàng)建帳戶或API密鑰。一些交易API公開了用于在代碼本身內(nèi)注冊帳戶的接口方法尘奏,但大多數(shù)交易不會滩褥。你必須在其網(wǎng)站上注冊并創(chuàng)建API密鑰。
私有API允許以下內(nèi)容:
- 管理個人帳戶信息
- 查詢帳戶余額
- 通過制造市場和限價訂單進行交易
- 存入和取出法定和加密資金
- 查詢個人訂單
- 獲得總賬歷史
- 在賬戶之間轉(zhuǎn)移資金
- 使用商家服務
此庫為所有交換實現(xiàn)完整的公共和私有REST API炫加。即將推出JavaScript瑰煎,PHP,Python和其他語言的WebSocket和FIX實現(xiàn)俗孝。
ccxt庫支持camelcase
表示法(在JavaScript中是首選)和下劃線表示法(在Python和PHP中首選)酒甸,因此所有方法都可以用任何語言的符號或編碼方式調(diào)用。
// 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'));
======================================================================
分享一些以太坊赋铝、EOS插勤、比特幣等區(qū)塊鏈相關的交互式在線編程實戰(zhàn)教程:
- java比特幣開發(fā)教程,本課程面向初學者革骨,內(nèi)容即涵蓋比特幣的核心概念农尖,例如區(qū)塊鏈存儲、去中心化共識機制良哲、密鑰與腳本盛卡、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能筑凫,例如創(chuàng)建地址滑沧、管理錢包、構(gòu)造裸交易等巍实,是Java工程師不可多得的比特幣開發(fā)學習課程滓技。
- php比特幣開發(fā)教程,本課程面向初學者棚潦,內(nèi)容即涵蓋比特幣的核心概念令漂,例如區(qū)塊鏈存儲、去中心化共識機制、密鑰與腳本洗显、交易與UTXO等外潜,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創(chuàng)建地址挠唆、管理錢包、構(gòu)造裸交易等嘱吗,是Php工程師不可多得的比特幣開發(fā)學習課程玄组。
- java以太坊開發(fā)教程,主要是針對java和android程序員進行區(qū)塊鏈以太坊開發(fā)的web3j詳解谒麦。
- python以太坊俄讹,主要是針對python工程師使用web3.py進行區(qū)塊鏈以太坊開發(fā)的詳解。
- php以太坊绕德,主要是介紹使用php進行智能合約開發(fā)交互患膛,進行賬號創(chuàng)建、交易耻蛇、轉(zhuǎn)賬踪蹬、代幣開發(fā)以及過濾器和交易等內(nèi)容。
- 以太坊入門教程臣咖,主要介紹智能合約與dapp應用開發(fā)跃捣,適合入門。
- 以太坊開發(fā)進階教程夺蛇,主要是介紹使用node.js疚漆、mongodb、區(qū)塊鏈刁赦、ipfs實現(xiàn)去中心化電商DApp實戰(zhàn)娶聘,適合進階。
- C#以太坊甚脉,主要講解如何使用C#開發(fā)基于.Net的以太坊應用丸升,包括賬戶管理、狀態(tài)與交易宦焦、智能合約開發(fā)與交互发钝、過濾器和交易等。
- EOS教程波闹,本課程幫助你快速入門EOS區(qū)塊鏈去中心化應用的開發(fā)酝豪,內(nèi)容涵蓋EOS工具鏈、賬戶與錢包精堕、發(fā)行代幣孵淘、智能合約開發(fā)與部署、使用代碼與智能合約交互等核心知識點歹篓,最后綜合運用各知識點完成一個便簽DApp的開發(fā)瘫证。
- tendermint區(qū)塊鏈開發(fā)詳解揉阎,本課程適合希望使用tendermint進行區(qū)塊鏈開發(fā)的工程師,課程內(nèi)容即包括tendermint應用開發(fā)模型中的核心概念背捌,例如ABCI接口毙籽、默克爾樹、多版本狀態(tài)庫等毡庆,也包括代幣發(fā)行等豐富的實操代碼坑赡,是go語言工程師快速入門區(qū)塊鏈開發(fā)的最佳選擇。
匯智網(wǎng)原創(chuàng)翻譯么抗,轉(zhuǎn)載請標明出處毅否。這里是原文比特幣與山寨幣的數(shù)字貨幣交易庫CCXT——CryptoCurrency eXchange