preData.py
例子1:bid和ask成对档的情况下,要校验的字符串为:bid:ask:bid:ask:...
"data": [{
"instrument_id": "BTC-USDT",
"asks": [["3366.8", "9", 10],[ "3368","8",3]],
"bids": [
["3366.1", "7", 0],[ "3366","6",3 ]
],
"timestamp": "2018-12-04T09:38:36.300Z",
"checksum": -1881014294
}]
该例子对应的checksum字符串为:3366.1:7:3366.8:9:3366:6:3368:8
例子2:bid和ask不成对档的情况 ,要校验的字符串为:bid:ask:ask:ask:...
"data": [{
"instrument_id": "BTC-USDT",
"asks": [["3366.8", "9", 10],[ "3368","8",3],[ "3372","8",3 ]],
"bids": [
["3366.1", "7", 0]
],
"timestamp": "2018-12-04T09:38:36.300Z",
"checksum": 831078360
}]
此例子对应的checksum String 将会是 3366.1:7:3366.8:9:3368:8:3372:8
depth 频道用户收到推送数据为:
首次Example Response
{
"table": "spot/depth",
"action": "partial",
"data": [{
"instrument_id": "ETH-USDT",
"asks": [
["8.8", "96.99999966", 1],
["9", "39", 3],
["9.5", "100", 1],
["12", "12", 1],
["95", "0.42973686", 3],
["11111", "1003.99999795", 1]
],
"bids": [
["5", "7", 4],
["3", "5", 3],
["2.5", "100", 2],
["1.5", "100", 1],
["1.1", "100", 1],
["1", "1004.9998", 1]
],
"timestamp": "2018-12-18T07:27:13.655Z",
"checksum": 468410539
}]
}
增量:
{
"table": "spot/depth",
"action": "update",
"data": [{
"instrument_id": "BTC-USDT",
"asks": [],
"bids": [
["3983", "789", 0]
],
"timestamp": "2018-12-04T09:38:36.300Z",
"checksum": -1200119424
}]
}
#trade
{'table': 'spot/trade', 'data': [{'side': 'sell', 'trade_id': '38994605', 'price': '6225.5', 'size': '0.08', 'instrument_id': 'BTC-USDT', 'timestamp': '2020-03-23T14:03:17.042Z'}]}
#deep
{'table': 'spot/depth', 'action': 'update/sell', 'data': [{'instrument_id': 'BTC-USDT', 'asks': [['6225.7', '0.15653571', '3'], ['6225.8', '0.08', '1'], ['6226.2', '0.02980727', '1'], ['6226.3', '0.12709411', '4'], ['6226.4', '0.20279634', '3'], ['6226.5', '0.03080703', '2'], ['6226.6', '0', '0'], ['6226.7', '0', '0'], ['6226.8', '2', '1'], ['6226.9', '0', '0'], ['6227.1', '0.80187679', '1'], ['6227.2', '0', '0']]}
#spot/depth为400深度频道名
首次Example Response
{
"table":"spot/depth",
"action":"partial",
"data":[
{
"instrument_id":"ETH-USDT",
"asks":[
[
"162.5",
"14.29884",
2
],
[
"162.51",
"2.084362",
1
],
...
[
"168.51",
"7.760755",
2
],
[
"168.57",
"0.02",
1
]
],
"bids":[
[
"162.49",
"1.556106",
3
],
[
"162.47",
"0.00913",
1
],
...
[
"155.15",
"70",
1
],
[
"155.13",
"3",
1
]
],
"timestamp":"2019-04-16T10:17:28.507Z",
"checksum":1141851215
}
]
}
增量:
{
"table":"spot/depth",
"action":"update",
"data":[
{
"instrument_id":"ETH-USDT",
"asks":[
[
"162.5",
"0",
0
],
[
"162.61",
"1.209",
2
],
[
"168.69",
"0.006",
1
],
[
"168.73",
"0.002082",
1
]
],
"bids":[
[
"162.49",
"1.512544",
2
],
[
"162.47",
"0.05333",
2
],
[
"162.46",
"14.608508",
3
],
[
"162.43",
"10.61874",
3
],
[
"162.41",
"27.303906",
2
],
[
"162.4",
"14.762929",
6
],
[
"162.39",
"11.045909",
1
],
[
"162.36",
"19.230907",
8
],
[
"162.31",
"3.927598",
4
],
[
"162.3",
"5.353085",
5
],
[
"162.29",
"6.569261",
12
],
[
"162.25",
"8.308575",
3
]
],
"timestamp":"2019-04-16T10:17:29.045Z",
"checksum":227291232
}
]
}
#spot/trade为交易频道名
{
"table": "spot/trade",
"data": [{
"instrument_id": "ETH-USDT",
"price": "162.12",
"side": "buy",
"size": "11.085",
"timestamp": "2019-05-06T06:51:24.389Z",
"trade_id": "1210447366"
}]
}
#tbdata
spot/depth
#askscurr/bidcurr
[[price,order,quant]] 即现货 深度价格、此价格数量、此深度由几笔订单组成
[['6225.5', '0.02981205', '1'], ['6225.6', '0.19081205', '3'], ['6225.7', '0.43585531', '6'], ['6226.2', '0', '0'], ['6226.3', '1.991', '1'], ['6226.4', '0.07298931', '1'], ['6226.5', '0.002', '2'], ['6227.1', '0.80287679', '2'], ['6228', '0.307', '4'], ['6230', '0.001', '1'], ['6234.5', '0', '0'], ['6235.5', '0.946', '1'], ['6235.6', '0', '0'], ['6237.4', '1', '1'], ['6237.7', '1', '1'], ['6241.6', '0', '0'], ['6243.6', '0', '0'], ['6248.4', '0.06420545', '1'], ['6255.9', '0.06528076', '2'], ['6267.9', '3.33445013', '1'], ['6530.6', '0', '0'], ['6532.9', '0', '0']]
#deeplimit
[timestamp,price,?limit?]#limit部分还不是很清楚为何是小数
['2020-03-23T14:03:17.222Z', 6225.5, 0.02981205, 0.57243615, 2.61513186, 0.08, 0, 0, 0, 0, 1.991, 0.07298931, 0.004, 0, 0, 2.0, 0, 0.01801751, 1.60575358, 0, 0, 0, 0.0555999, 0.8, 0, 0, 0, 1.228, 0.035, 0, 0, 0, 0, 7.76559972, 0, 0, 0, 0, 0, 0, 1.925058, 0.1, 0.02551, 0, 1.089, 0, 0.001, 0.001, 0, 0, 0, 0, 0.0515, 0, 0, 0.05514094, 2.602, 0, 0, 0, 0, 0.572, 0, 0, 0, 0.32895899, 0.461, 0, 0, 0.048, 0, 0.159, 0, 0, 0.005, 0, 0.393, 0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0.1707, 0.3, 0, 0, 0, 0, 0, 3.51016, 0.8, 0, 0, 0, 0.33305288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.002, 0, 0.1, 0, 0.0019996, 0, 0, 0, 0, 0.004, 0.00321273, 0, 0, 0, 0, 0.335, 0, 0.8, 0, 0.001, 0, 0, 0.50594165, 0, 0.005, 0.001, 0, 1.0, 0, 0, 0.0515, 0, 2.002, 0, 0, 0.8, 0, 0.063, 0, 0.015, 0, 0, 0.001, 0, 0.1, 0, 0, 0.11, 0, 0, 0.02551, 0, 0, 0, 0, 0, 0, 0.393
- 深度行情间隔0.1s,trade不一定
- 判断某一时刻trade现货交易的价格是否在深度行情的买卖价格+-10以内,如果是,那么就把深度行情中的askvolume和bidvolume加到该时刻的deeplimit中--即将限价交易成交量(订单数*它们买卖的数量)存起来
- deeplimit 前100是ask,100后才是bid
- 成交量可以判断波幅
- 疑问:round处理是在干什么?
微服务架构
- 把MongoDB作为持久化存储数据库,Redis做缓存数据库,通过异步消息发布给订阅用户,把接收数据和处理数据分成两个微服务,避免相互干扰
系统模块
- 预处理系统,预测模型,还有交易策略,还有下单优化算法,还有止损系统