jackyxie / ccxt
一个支持超过90家比特币/代币交易所的JavaScript / Python / PHP加密货币交易库
Requires
- php: >=5.3.0
- ext-bcmath: *
- ext-curl: *
- ext-gmp: *
- ext-iconv: *
- ext-pcre: *
- kornrunner/ethereum-util: 0.0.3
- kornrunner/secp256k1: 0.1.0
- kornrunner/solidity: 0.1.2
- pear/console_table: 1.3.1
- symfony/polyfill-mbstring: ^1.7
Requires (Dev)
- phpunit/phpunit: ~6
README
一个JavaScript / Python / PHP加密货币交易和电子商务库,支持许多比特币/以太坊/代币交易所市场和商家API。
CCXT库用于连接和交易全球的加密货币/代币交易所和支付处理服务。它提供了快速访问市场数据,用于存储、分析、可视化、指标开发、算法交易、策略回测、机器人编程、网店集成和相关软件工程。
它适用于 程序员、开发者、技术娴熟的交易员、数据科学家和金融分析师 在其基础上构建交易算法。
当前功能列表
- 支持许多交易所市场,即将支持更多
- 所有交易所的公共和私有API都已完全实现
- 所有货币、代币和符号、价格、订单簿、交易、报价器等...
- 可选的标准化数据,用于跨交易所或跨货币分析和套利
- 开箱即用的统一一体化API,极其容易集成
- 在Node 7.6+、Python 2和3、PHP 5.3+、网络浏览器中运行
ccxt on GitHub | 安装 | 使用 | 手册 | 常见问题解答 | 示例 | 变更日志 | 贡献
支持的加密货币交易所市场
ccxt库目前支持以下132个加密货币交易所市场和交易API
以上列表经常更新,新的加密货币市场、代币交易所、错误修复、API端点会定期引入和添加。请参阅手册以获取详细信息。如果您在上面的列表中没有找到加密货币交易所市场,或者想要添加其他交易所,请在此GitHub上打开一个问题或通过电子邮件发送链接。
该库采用MIT许可证,这意味着任何开发人员都可以在其上构建商业和开源软件,但使用时请自行承担风险,不提供任何保证。
安装
安装ccxt库最简单的方法是使用内置的包管理器
- ccxt in NPM (JavaScript / Node v7.6+)
- ccxt in PyPI (Python 2和3.5.3+)
- ccxt in Packagist/Composer (PHP 5.3+)
此库作为一体化模块实现,具有最小化依赖和要求
您还可以从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
配置中未排除它。[查看详情](https://github.com/ccxt/ccxt/issues/225#issuecomment-331905178)
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+中的asyncio和async/await的并发异步模式
import ccxt.async_support as ccxt # link against the asynchronous version of ccxt
PHP
使用Packagist/Composer的PHP中的ccxt(PHP 5.3+)
它需要常见的PHP模块
- cURL
- mbstring(强烈推荐使用UTF-8)
- PCRE
- iconv
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库支持骆驼命名法(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', }) 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', }) 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', )); $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'));
贡献
在您想要在代码中进行更改并希望被采用之前,请阅读贡献文档。另外,阅读手册以获取更多信息。
支持开发团队
我们在开发这个库上投入了大量的时间。如果CCXT使您的生活变得更轻松,并且您喜欢它并希望帮助我们进一步改进它,或者您想加快新功能和交易所的推出,请支持我们,给我们一个小费。我们感激所有贡献!
赞助商
通过成为赞助商来支持此项目。您的标志将在此处显示,并附有指向您网站的链接。
[成为赞助商]
支持者
感谢所有支持者! [成为支持者]
加密货币
ETH 0xa7c2b18b7c8b86984560cad3b1bc3224b388ded0
BTC 33RmVRfhK2WZVQR1R83h2e9yXoqRNDvJva
BCH 1GN9p233TvNcNQFthCgfiHUnj5JRKEc2Ze
LTC LbT8mkAqQBphc4yxLXEDgYDfEax74et3bP
谢谢!