比特幣與山寨幣的PHP/Python/JS交易庫CCXT——CryptoCurrency eXchange

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瀏覽器

認證交易所

image

支持的加密貨幣交易所

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

https://github.com/ccxt/ccxt

上面的列表經(jīng)常更新,新的加密市場盼玄,山寨幣交換贴彼,錯誤修復,API端點定期引入和添加埃儿。有關詳細信息器仗,請參閱手冊,如果你沒有在上面的列表中找到加密貨幣交易市場和/或想要添加其他交易所蝌箍,請通過GitHub或通過電子郵件在此處發(fā)布問題來發(fā)布或向我們發(fā)送鏈接青灼。

該庫受到MIT許可,這意味著任何開發(fā)人員都可以完全免費構(gòu)建商業(yè)和開源軟件妓盲,但使用它需要你自擔風險且無需擔保杂拨。

安裝

安裝ccxt庫的最簡單方法是使用內(nèi)置包管理器:

該庫作為一體化模塊實現(xiàn)提供,具有最小的依賴性和要求:

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

也可以從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+中使用asyncioasync/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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蝇刀,隨后出現(xiàn)的幾起案子螟加,更是在濱河造成了極大的恐慌,老刑警劉巖吞琐,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捆探,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門征堪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黔寇,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵恰起,是天一觀的道長。 經(jīng)常有香客問我趾牧,道長检盼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任翘单,我火速辦了婚禮吨枉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哄芜。我一直安慰自己貌亭,他們只是感情好,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布认臊。 她就那樣靜靜地躺著圃庭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剧腻,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天拘央,我揣著相機與錄音,去河邊找鬼书在。 笑死灰伟,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蕊温。 我是一名探鬼主播袱箱,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼义矛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盟萨,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤凉翻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捻激,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體制轰,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年胞谭,在試婚紗的時候發(fā)現(xiàn)自己被綠了垃杖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡丈屹,死狀恐怖调俘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旺垒,我是刑警寧澤彩库,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站先蒋,受9級特大地震影響骇钦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竞漾,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一眯搭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧业岁,春花似錦鳞仙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春梳玫,著一層夾襖步出監(jiān)牢的瞬間爹梁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工提澎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姚垃,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓盼忌,卻偏偏與公主長得像积糯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谦纱,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一看成、快速術(shù)語檢索 比特幣地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如閱讀 15,997評論 4 87
  • 每次周二的第二節(jié)課川慌,都是懷著忐忑被罵的心上L5。當然今天也不例外祠乃,為啥這樣說呢梦重,因為和我搭課的老師是主任,她有8年...
    小莎妹兒閱讀 188評論 0 0
  • 今天下午我們看了厲害了我的國亮瓷,以下是觀后感:中國的科技急速發(fā)展琴拧,天眼打開了人類通向宇宙的大門,工程師們耗費了多年的...
    沒有沒有沒有沒有閱讀 374評論 0 0
  • 對自己而言 有一種東西嘱支,特別特別想吃蚓胸,不吃是一種遺憾,可是吃了又覺得特別后悔 其實可以給她們起個名字 `自己眼中的...
    葉子隨筆閱讀 212評論 0 0
  • 是什么斗塘,是生命不能承受的赢织,是“失去”嗎?那“失去”的具體含義又是什么呢馍盟?有人說是愛情于置,有人說是責任,有人說是對生活...
    安靜的等待中閱讀 335評論 0 0