加密交易所-网关
ccxt是一个非常好的项目,它提供了一个连接多个交易所的库(php、js、python)。当我开始的时候,我还不知道这个项目。ccxt的目的是提供一个库,而我想提供一个http网关,作为一个独立的服务,被任何REST客户端使用(所以几乎任何语言)。
DAPP交易所系统开发(开发案例)丨DAPP交易所系统开发(源码及方案)
交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计
区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署
Uniswap交易所开发稳定版丨Uniswap交易所系统开发(开发模板)丨Uniswap交易所系统源码案例部署
数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品
交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易所系统源码平台
Btw,ccxt库现在被用来与一些交易所对接;)
该服务的月费是多少?
没有月费。它是免费的,因为你将是在你自己的服务器上运行该服务的人。
你们的服务是在哪里托管的?
这是一个自我托管的服务。你需要把它安装在你自己的服务器上
我看到你们在接受捐赠。捐赠后我能得到什么额外的服务?
除了上床睡觉的特权,知道你做了正确的事情?没有什么
它的作用
为各种交易所提供统一的REST API(可用于自动交易或建立机器人)。
处理认证,这样在客户端你就可以集中精力做真正重要的事情了
在转发请求到远程交易所时,实施速率限制
提供一个REST API,使用PushOver发送推送通知
提供了一个基本的UI,实现了大多数的API调用(见doc目录中的文档)。
提供实时数据的WS访问(股票、订单和交易,见文档目录中的文档和视频,解释如何创建自定义的WS流来复用来自多个交易所的数据)。
访问所有交易所的投资组合概况,以美元为单位的估计价值
高级警报系统
请在https://mpe-demo.crazyme.net/ui/ 观看现场演示
当然,上述演示并没有使用任何有效的用户/令牌。这意味着以下情况。
所有与价格和订单簿相关的内容都是用真实数据填充的
打开/完成的订单列表是用随机数据填充的
余额列表是用随机数据填充的
新订单不会被实际执行;)
为了获得完整的体验,只需遵循安装步骤
如何使用它
在你想去的地方安装它,并开始从你自己的程序中发送请求
它可以被托管在云端的虚拟机上
可以在家里的树莓派上安装。
只需使用你喜欢的语言(python、javascript、ruby、bash...)向网关发送请求。你自己的服务,你自己的规则 !
这里有一个Node.js客户端,或作为一个npm包。
可用的交易所
目前支持以下交易所。
Binance (曾经是我的最爱)
Bittrex
Kucoin (可选KYC)
OKEx (可选的KYC)
Poloniex (有史以来最差的支持)
更多的将会出现...
以下是目前支持的API。
检索货币对
检索股票代码
检索订单簿
检索最后执行的交易
检索k线(图表数据)。
列出未结订单
列出已关闭的订单
检索单个订单
测试订单(以确保数量和价格与交易所过滤器相匹配)
创建一个订单
检索余额
参见doc目录下的文档,了解每个REST API的概述
关于支持的websocket协议(类似于JSON-RPC)的描述,见doc目录下的文档
关于单元测试的信息,见doc目录下的文档
警报
你是否曾想过在满足以下所有条件的情况下收到一个警报。
Binance上NEO-USDT的价格在[120, 135]范围内
Bittrex上的NEO-BTC价格< 0.010
MarketCap模块中的NEO价格>125美元
也许不是;)无论如何,你现在可以定义这种自定义警报了。见文档目录中的文件
它内置了对PushOver的支持,但任何其他的通知系统都可以轻松实现(通过第三方应用程序),因为所有的警报变化都是通过websocket端点发出的(见doc目录下的文档)。
限制条件
不支持保证金交易(也不可能支持)。
不支持取款(也不太可能)。
暂时不支持止损和追踪止损(尽管在某些时候可能会支持)。
其他服务
MarketCap
MarketCap模块支持:
报价器
参见doc目录下的文档,了解每个API的概况
推送
PushOver模块支持.NET技术。
推送通知
参见doc目录下的文档,了解各API的概况)
速率限制
由于Bottleneck的存在,当交易所需要时,会实施速率限制。
安装
安装依赖项
npm安装
复制样本配置
cp config/config.sample.json config/config.json
查看doc目录下的文档,了解每个配置部分的详细信息
启动网关
node gateway.js
构建用户界面
如果你想使用用户界面,请在启动网关之前按照以下步骤建立用户界面。
cd ui
npm install && ./rebuild-ui
检查哪些交易所已启用
在浏览器中打开http://127.0.0.1:8000/exchanges/。你应该看到下面这样的JSON内容。
["binance", "bittrex", "poloniex", "kucoin"]
默认情况下,只有公共API会被启用。为了访问交易/私人API,你需要用交易所提供的适当的用户和密码来更新config.json(查看doc目录下的文档)。
使用MarketCap模块检查BTC和ETH价格
在你的浏览器中打开http://127.0.0.1:8000/marketCap/tickers?symbols=BTC,ETH。你应该看到JSON内容,如下面所示。
[
{
"symbol":"BTC",
"name":"Bitcoin",
"circulating_supply":17372012,
"price_usd":6406.1049,
"percent_change_1h":-0.08,
"percent_change_1d":-0.08,
"percent_change_7d":-0.15,
"volume_24h_usd":3120534126.1266,
"lastUpdated":1542009997,
"market_cap_usd":111286930723.4185,
"rank":1,
"price_btc":1
},
{
"symbol":"ETH",
"name":"Ethereum",
"circulating_supply":103150460,
"price_usd":210.4854,
"percent_change_1h":-0.39,
"percent_change_1d":-0.39,
"percent_change_7d":-0.8,
"volume_24h_usd":1294093048.2094,
"lastUpdated":1542009997,
"market_cap_usd":21711669585.6914,
"rank":2,
"price_btc":0.032857
}
]
在Bittrex下单购买1个NEO,价格为0.0040BTC(假设你有足够的资金)。
在终端机上执行以下操作。
curl -X POST 'http://127.0.0.1:8000/exchanges/bittrex/openOrders?pair=BTC-NEO&quantity=1&targetRate=0.0040'
你应该看到如下的JSON内容。
{"orderNumber":"8bc49a59-1056-4c20-90f2-893fff2be279"}
取消上述订单(假设订单仍然存在)
在终端执行以下内容。
curl -X DELETE 'http://127.0.0.1:8000/exchanges/bittrex/openOrders/8bc49a59-1056-4c20-90f2-893fff2be279'
在订单有效的情况下,你应该看到如下的JSON内容。
{}
Docker
请看这个视频,了解如何使用Docker和Kitematic在3分钟内做好交易准备。
docker镜像可在https://hub.docker.com/r/apendergast/crypto-exchanges-gateway/。
拉取图像
docker pull apendergast/crypto-exchanges-gateway
运行镜像
docker run --rm -p 8000:8000 -p 8001:8001 --name ceg apendergast/crypto-exchanges-gateway
然后你应该能够在http://127.0.0.1:8000 上访问服务
WS端点将在ws:/127.0.0.1:8001上可用。
检查哪些交换被启用
在你的浏览器中打开http://127.0.0.1:8000/exchanges/。你应该看到下面这样的JSON内容。
["binance", "bittrex", "kucoin", "okex", "poloniex"]
默认情况下,只有公共API会被启用。为了访问交易/私人API,你需要在创建容器时传递环境。以下是可用的环境变量。
cfg.logLevel:日志级别
cfg.listen.externalEndpoint:在网关以代理方式运行的情况下,用于表示访问http套接字的外部端点。
cfg.listenWs.externalEndpoint:用于表示在网关通过代理运行的情况下,用于访问ws套接字的外部端点。
cfg.session.maxSubscriptions:一个会话允许的最大订阅数(可选,默认=0,没有最大)。
cfg.session.maxDuration:给定会话的最大持续时间,以秒为单位(可选,默认=0,没有最大)。
cfg.session.hideIpaddr:通过REST api列出会话时,是否要隐藏IP地址(可选,默认=0)。
cfg.auth.apikey 。用于保护访问的API密钥
cfg.ui.enabled : 启用/禁用用户界面(值应设置为1以启用用户界面,0以禁用用户界面)。
cfg.tickerMonitor.enabled : 启用/禁用Ticker Monitor模块(值应设置为1以启用Ticker Monitor,0以禁用Ticker Monitor)(默认=1)
cfg.marketCap.enabled : 启用/禁用MarketCap模块(值应设置为1,启用MarketCap模块,0禁用MarketCap模块)(默认值为1)
cfg.pushover.user : PushOver用户密钥
cfg.pushover.token : PushOver代币
cfg.exchanges.poloniex.enabled : 值应设置为1以启用交易所,0以禁用交易所(默认=1)。
cfg. exchanges.poloniex.key 。Poloniex用户密钥
cfg.exchanges.poloniex.secret : Poloniex的秘密。
cfg.exchanges.bittrex.enabled : 值应设置为1以启用交易所,0以禁用交易所(默认=1)。
cfg.exchanges.bittrex.key : Bittrex用户密钥
cfg.exchanges.bittrex.secret : Bittrex的秘密
cfg.exchanges.binance.enabled : 值应设置为1以启用交易所,0以禁用交易所(默认=1)。
cfg.exchanges.binance.requirePair : 值应设置为0,以允许一次检索所有交易对的股票/订单,1则要求此类操作使用交易对(默认=0)。
cfg.exchanges.binance.key : Binance用户密钥
cfg.exchanges.binance.secret : Binance的秘密
cfg.exchanges.kucoin.enabled : 值应设置为1以启用交换,0以禁用交换(默认=1)。
cfg.exchanges.kucoin.requirePair : 值应设置为0,允许一次性检索所有交易对的股票/订单,1则要求此类操作必须有交易对(默认=0)。
cfg.exchanges.kucoin.key : Kucoin用户密钥
cfg.exchanges.kucoin.secret : Kucoin的秘密
cfg.exchanges.kucoin.password :Kucoin API密码
cfg.exchanges.okex.enabled : 值应设置为1以启用交换,0以禁用交换(默认=1)。
cfg.exchanges.okex.requirePair : 值应设置为0,以允许一次检索所有交易对的股票/订单,1则要求进行此类操作的交易对(默认=0)。
cfg.exchanges.okex.key 。OKEx用户密钥
cfg.exchanges.okex.secret : OKEx的密码
cfg.exchanges.okex.password :OKEx密码
如果你不想使用环境变量,或者想为运行中的容器定制配置,你可以创建和编辑custom_config/config.json
例子:
使用Bittrex用户/密钥环境变量运行容器
docker run --rm -p 8000:8000 -p 8001:8001 --name ceg -e cfg.Exchange.bittrex.key='abcdefghijkl' -e cfg.Exchange.bittrex.secret='123456789' apendergast/crypto-exchanges-gateway
依赖性
这个项目的完成要感谢以下项目。
big.js
binance
身体解析器
瓶颈(用于速率限制)
ccxt (用于与一些交易所对接)
chump (用于PushOver)
css-select (用于HTML解析)
快递
express-ws
htmlparser2 (用于HTML解析)
joi (用于JSON模式验证)
lodash
mocha (用于单元测试)
node-bittrex-api
poloniex-api-节点
retry (用于网络故障时的自定义重试策略)
请求
sqlite3 (用于数据存储)
uuid
winston (用于日志记录)
ws
yargs (用于CLI命令)