github地址
https://github.com/drip-trader/dripjs
结构图:
功能
- 负责获取数据的功能项目
platform使用方法
- import
import { IntelFactory, BitmexSpy } from 'dripjs';
// 生成指定交易所的数据接口
const bitmexSpy = IntelFactory.create(BitmexSpy, {
apiKey: `你的bitmex交易所apiKey`,
apiSecret: `你的bitmex交易所apiSecret`,
testnet: true,
});
const pair = 'XBTUSD';
// 订阅逐笔数据
bitmexSpy.getTicker$(pair).subscribe((res) => {
console.log(res);
});
setTimeout(() => {
console.log('do stop ticker subscription');
// 不用时,别忘记退订
bitmexSpy.stopTicker(pair);
}, 5000);
- require
const dripjs = require("dripjs")
// 生成指定交易所的数据接口
const bitmexSpy = dripjs.IntelFactory.create(dripjs.BitmexSpy, {
apiKey: `你的bitmex交易所apiKey`,
apiSecret: `你的bitmex交易所apiSecret`,
testnet: true,
})
const pair = 'XBTUSD';
// 订阅逐笔数据
bitmexSpy.getTicker$(pair).subscribe((res) => {
console.log(res)
});
setTimeout(() => {
console.log('do stop ticker subscription');
// 不用时,别忘记退订
bitmexSpy.stopTicker(pair);
}, 5000);
以上方法可以通过此链接,在线测试
输出结果
输出结果中,high和low表示的是当天最高价格和最低价格
显示为0的原因是,bitmex交易所不提供这样的websocket数据,不要说是bug呀😆
程序构造
API接口
目前只开发了5个主要接口,以后根据需要还会继续增加接口
方法 | 方式 | 说明 |
---|---|---|
getSymbols | 一次 | 获取全部商品信息 |
getSymbol | 一次 | 获取指定商品信息 |
getBars | 一次 | 获取 K 线 |
getTicker$ | 实时 | 获取逐笔情报 |
getDepth$ | 实时 | 获取订单薄 |
getTransaction$ | 实时 | 获取成交信息 |
library使用方法
使用方法和上面platform使用方法一样,只不过安装解耦的子模块:
npm install dripjs-intelligence
然后在import
引入时模块名称将dripjs
框架模块改为dripjs-intelligence
import { IntelFactory, BitmexSpy } from 'dripjs-intelligence';
// 生成指定交易所的数据接口
const bitmexSpy = IntelFactory.create(BitmexSpy, {
...
tool使用方法
(一)服务端使用
-
结构图
有些同学以为在墙内,无法通过library正常使用,需要通过翻墙手段。
drip.js提供tool的方式,只需租用墙外服务器,通过以下命令安装数据服务:
1、安装新建空nodejs项目,通过npm安装工具包:
npm install dripjs-intelligence
2、package.json
的 scripts
中加入:
"scripts": {
"service": "intel-service"
},
3、设置数据服务的配置文件
- 项目根目录中创建
config
文件夹,在里面新建default.json
,并在里面配置如下内容:
{
"container": {
"intelService": {
"port": 6531,
"username": "test",
"password": "test"
}
},
"exchange": {
"crypto": {
"bitmex": {
"apiKey": "zzz",
"apiSecret": "xxx"
},
"bitmexTestNet": {
"apiKey": "ccc",
"apiSecret": "cccx"
}
}
}
}
intelService
中的配置项,port
为服务器开启的端口,username
、password
是客户端连接时需要传递的用户名
和密码
。
exchange
中为各交易所的apikey
及密码
,只需配置想要用的交易所即可。
4、运行数据服务器
npm run service
-
运行图片
(二)客户端使用
import { IntelClient } from 'dripjs-intelligence';
import { SupportedExchange } from 'dripjs-types';
async function test() {
const client = new IntelClient({
ip: '127.0.0.1',
port: 6531,
username: 'test',
password: 'test',
});
const exchange = SupportedExchange.Bitmex;
const pair = 'XBTUSD';
// 获取商品列表
const symbols = await client.getSymbols(exchange);
console.log('symbols: ', JSON.stringify(symbols));
// 订阅单商品数据
client.ticker$(exchange, pair).subscribe((res) => {
console.log('ticker: ', JSON.stringify(res));
});
setTimeout(() => {
// 不需要数据时,别忘记退订
client.stopTicker(exchange, pair);
}, 3000);
// 订阅深度数据
client.depth$(exchange, pair).subscribe((res) => {
console.log('depth: ', JSON.stringify(res));
});
setTimeout(() => {
client.stopDepth(exchange, pair);
}, 3000);
// 订阅成交数据
client.transaction$(exchange, pair).subscribe((res) => {
console.log('transaction: ', JSON.stringify(res));
});
setTimeout(() => {
client.stopTransaction(exchange, pair);
}, 3000);
setTimeout(() => {
// 不用时别忘记断开与服务器的连接
client.disconnect();
}, 6000);
}
test().catch(e => {
console.log('error: ', e.message);
});
IntelClient
的构造函数中的username
和password
要和IntelServer的username
和password
一致,这样可以保证自己的数据服务不被其他人盗用。
以上示例中为现有实现功能,之后会随时补充。
待实现功能
- 指定多种商品,同时订阅
例如
import { IntelFactory, BitmexSpy } from 'dripjs';
bitmexSpy.getTicker$('XBTUSD', 'ADAH19').subscribe((res) => {
console.log(res);
});
输出:
{
"XBTUSD": {
"ask": 3804,
"bid": 3803.5,
...
},
"ADAH19": {
...
}
}