CCXT 是一个用于加密货币电子化交易的 JavaScript / Python / PHP 库,支持诸多比特币/以太币/山寨币交易市场的交易 API 。
CCXT 库可用于世界各地的加密货币/山寨币交易所的连接和交易,以及转账支付处理服务。它提供了快速访问市场数据的途径,可用于存储数据,分析,可视化,指标开发,算法交易,策略回测,机器人程序,网上商店集成及其它相关的软件工程。
它可被程序员,开发工程师,技术熟练的交易员,数据科学家和财务分析师用于在其基础上构建交易算法。
当前具有的特性:
支持许多交易所,并将添加更多
为上述交易所实现了全部公共和私有 API
所有货币,山寨币和交易对,价格,订单簿,交易,行情等...
可选的用于跨交易所或跨币种分析和套利的标准化数据
一个非常容易集成的开箱即用的统一 API
可在 Node 7.6+,Python 2 和 3,PHP 5.3+ 及 Web 浏览器中使用
支持的加密货币交易所
CCXT 库目前支持 115 个加密货币交易所的交易 API,可以在这里找到列表:ccxt/ccxtgithub.com
上面的列表经常更新,新的加密货币市场,山寨币交易所,bug修复,API接口将定期被引入、添加。详细信息请参见手册。如果您没有在上面的列表中找到加密货币交易所并且/或者想要添加另一个交易所,请通过在GitHub上创建issue或或通过电子邮件向我们发送链接。
本仓库使用MIT 许可,这意味着任何开发人员都可以免费在其上构建商业和开源软件,但如果使用该软件,则风险自担,不作任何担保。
安装
安装 CCXT 库的最简单方法是使用内置包管理器:
本仓库提供一个整合的模块实现,具有最小依赖和要求:
您也可以从CCXT GitHub 仓库中将它克隆到您的项目目录中
git clone https://github.com/ccxt/ccxt.git
将该库集成到代码中的另一种方法,是将单个文件手动复制到您的工作目录中,并使用适合您环境的语言扩展。
JavaScript (NPM)
CCXT的JavaScript版本在Node和Web浏览器中均可以使用。需要 ES6 和 async/await 语法支持( Node 7.6.0+ )。在使用Webpack和Babel进行编译时,请确保它不会在您的 babel-loader 配置中被排除。
npm install ccxt
var ccxt = require ('ccxt')
console.log (ccxt.exchanges) // print all available exchanges
JavaScript(与 标签一起使用):
包含所有功能于一身的浏览器软件包(包括依赖项),由 unpkg CDN 提供。unpkg CDN 是一个快速的全球性的内容分发网络,适用于NPM上的所有内容。
创建一个全局的 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进行异步并发模式
import ccxt.async as ccxt # link against the asynchronous version of ccxt
PHP
PHP版的 CCXT 库:ccxt.php
它需要以下PHP模块:cURL
mbstring (强烈推荐使用 UTF-8 )
PCRE
iconv
include "ccxt.php";
var_dump (\ccxt\Exchange::$exchanges); // 打印所有支持的交易所
文档
阅读操作手册以获得更多详细信息。
使用方法
介绍
CCXT 库由公共接口部分和私有接口部分组成。任何人都可以在安装后立即使用公共部分。公共 API 具有获取所有交易所公开信息的权限,无需注册用户账户,也无需 API 密钥。
公共 API 包括以下内容:市场数据
交易对
交易手续费
订单簿 / 深度数据
交易历史
行情 / Tickers
用以制图的 OHLC(V) / K线
其他公共接口
对于通过私有 API 进行交易,您需要从交易所获取 API 密钥。它通常意味着在交易所注册,并使用您的账户创建 API 密钥。大多数交易所需要个人信息或身份证明。其他验证材料也可能是必要的。如果你想要交易,你需要自己注册,这个库不会为你创建账户或 API 密钥。一些交易所 API 提供了用代码本身注册帐户的接口,但大多数交易所并没有。因此您必须注册并在网站上创建 API 密钥。
私有API允许以下内容:管理个人帐户信息
查询账户余额
通过市价单和限价单进行交易
存入和提取法币和加密货币
查询个人订单
获取交易明细/历史
在账户之间转移资金
使用商业服务
本仓库实现了所有交易所的公共和私有REST API。JavaScript,PHP,Python及其他语言的WebSocket实现和FIX将尽快推出。
CCXT 库同时支持驼峰命名法(常用于 JavaScript)和下划线命名法(常用于 Python 和 PHP),因此在任意一种语言中,两种命名法/编码风格均可调用所有方法。
// 以下两种格式在JavaScript/Python/PHP下均有效
exchange.methodName () // 驼峰命名法
exchange.method_name () // 下划线命名法
阅读 指南以获得更多详细信息。
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',
})
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 ())
// 以市价卖出 1BTC,并立马得到1比特币等值的欧元
console.log (okcoinusd.id, await okcoinusd.createMarketSellOrder ('BTC/USD', 1))
// 以 $2500 购买 1 BTC, 当该订单成交时,你会付出 $2500 美金并获得 1BTC
console.log (okcoinusd.id, await okcoinusd.createLimitBuyOrder ('BTC/USD', 1, 2500.00))
// 传递/重定义特定交易所的订单自定义参数:类型,数量,价格 等等
// 使用一个交易所专有的订单类型
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',
})
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())
# 以市价卖出 1BTC,并立马得到美元现金
print(exmo.id, exmo.create_market_sell_order('BTC/USD', 1))
# 限价买入 BTC/EUR, 当该订单成交时,你会以 €2500 欧元的价格收到 1BTC
print(exmo.id, exmo.create_limit_buy_order('BTC/EUR', 1, 2500.00))
# 传递/重定义特定交易所的订单自定义参数:类型,数量,价格,flags 等等
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',
));
$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 ());
// 以市价卖出 1 BTC/JPY,你将会立即卖出比特币并收到日元
var_dump ($zaif->id, $zaif->create_market_sell_order ('BTC/JPY', 1));
// 买入 BTC/JPY, 当该订单成交时,你会以 ¥285000 日元的价格收到 1BTC
var_dump ($zaif->id, $zaif->create_limit_buy_order ('BTC/JPY', 1, 285000));
// 为你的订单设置一个用户自定义的 id
$hitbtc->create_order ('BTC/USD', 'limit', 'buy', 1, 3000, array ('clientOrderId' => '123'));
贡献力量
在您做出一些修改并希望合并进代码之前,请阅读 贡献 文档。 另外,您可通过阅读 指南 来获取更多详细信息.
支持开发团队
我们对此仓库的开发正在投入大量的时间。如果 CCXT 使得您的生活更加简单,并且您喜欢它,并希望帮助我们进一步改进它,或者如果您想加快开发新功能和交易所,请通过小费支持我们。我们感谢所有的支持!
加密货币捐助地址
ETH 0xa7c2b18b7c8b86984560cad3b1bc3224b388ded0
BTC 33RmVRfhK2WZVQR1R83h2e9yXoqRNDvJva
BCH 1GN9p233TvNcNQFthCgfiHUnj5JRKEc2Ze
LTC LbT8mkAqQBphc4yxLXEDgYDfEax74et3bP
谢谢!
中文社区资源CCXTCN 是 CCXT 文档中文翻译项目,开始于 2018.05.14,欢迎加入我们一起完成这个项目。
CCXT 中文文档翻译 QQ 群:749640693
CCXT 使用问题交流 QQ 群:150134435