CCXT(CryptoCurrency eXchange)交易庫,一個JavaScript/Python/PHP加密貨幣交易庫,支持超過100種山寨幣與比特幣交易所。javascript
用於加密貨幣交易和電子商務的JavaScript/Python/PHP庫,支持許多比特幣/以太網/山寨幣交易所和商家API。php
CCXT庫用於鏈接和交易全球的加密貨幣/山寨幣交易所和支付處理服務。它能夠快速訪問市場數據,用於存儲,分析,可視化,指標開發,算法交易,策略回溯測試,機器人編程,網上商店集成和相關軟件工程。java
它旨在供編碼人員,開發人員,技術熟練的交易員,數據科學家和金融分析師用於構建交易算法。node
當前功能列表:python
ccxt庫目前支持如下131個加密貨幣交易所和交易API(太多了想看的直接到github看吧,就不列出來了):android
https://github.com/ccxt/ccxtgit
上面的列表常常更新,新的加密市場,山寨幣交換,錯誤修復,API端點按期引入和添加。有關詳細信息,請參閱手冊,若是你沒有在上面的列表中找到加密貨幣交易市場和/或想要添加其餘交易所,請經過GitHub或經過電子郵件在此處發佈問題來發布或向咱們發送連接。程序員
該庫受到MIT許可,這意味着任何開發人員均可以徹底免費構建商業和開源軟件,但使用它須要你自擔風險且無需擔保。github
安裝ccxt庫的最簡單方法是使用內置包管理器:web
該庫做爲一體化模塊實現提供,具備最小的依賴性和要求:
也能夠從ccxt GitHub存儲庫將其克隆到項目目錄中:
git clone https://github.com/ccxt/ccxt.git
將此庫安裝到代碼中的另外一種方法是將單個文件手動複製到工做目錄中,並使用適合你環境的語言擴展名。
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
pip install ccxt
import ccxt print(ccxt.exchanges) # print a list of all available exchange classes
該庫支持在Python 3.5.3+中使用asyncio
和async/await
的併發異步模式:
import ccxt.async_support as ccxt # link against the asynchronous version of ccxt
它須要常見的PHP模塊:
include "ccxt.php"; var_dump (\ccxt\Exchange::$exchanges); // print a list of all available exchange classes
ccxt庫由公共部分和私有部分組成。任何人均可以在安裝後當即使用公共部分即插即用。公共API能夠從全部交易所市場開放訪問公共信息,無需註冊用戶賬戶,也無需擁有API密鑰。
公共API包括如下內容:
對於使用私有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
'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' }) }) ();
# 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'})
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、比特幣等區塊鏈相關的交互式在線編程實戰教程:
- java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- php以太坊,主要是介紹使用php進行智能合約開發交互,進行帳號建立、交易、轉帳、代幣開發以及過濾器和交易等內容。
- 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括帳戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
- EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、帳戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
- tendermint區塊鏈開發詳解,本課程適合但願使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
匯智網原創翻譯,轉載請標明出處。這裏是原文比特幣與山寨幣的數字貨幣交易庫CCXT——CryptoCurrency eXchange