Skip to content
This repository was archived by the owner on Sep 9, 2023. It is now read-only.

Commit cf5d698

Browse files
authored
Merge pull request #243 from evan-coygo/fix/bitfinex-ticker-seq
Bitfinex include sequenceId on ticker and trades
2 parents 37bcf4e + ec3938d commit cf5d698

File tree

4 files changed

+28
-8
lines changed

4 files changed

+28
-8
lines changed

__tests__/exchanges/bitfinex-client.spec.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,13 @@ testClient({
4949
hasBid: true,
5050
hasBidVolume: true,
5151
hasAsk: true,
52+
hasSequenceId: true,
5253
hasAskVolume: true,
5354
},
5455

5556
trade: {
5657
hasTradeId: true,
58+
hasSequenceId: true,
5759
},
5860

5961
l2snapshot: {

__tests__/test-runner.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,12 @@ function testTickers(spec, state) {
311311
testUndefined(result, "ticker.timestamp");
312312
}
313313

314+
if (spec.ticker.hasSequenceId) {
315+
testPositiveNumber(result, "ticker.sequenceId");
316+
} else {
317+
testUndefined(result, "ticker.sequenceId");
318+
}
319+
314320
let numberProps = [
315321
[spec.ticker.hasLast, "ticker.last"],
316322
[spec.ticker.hasOpen, "ticker.open"],
@@ -401,6 +407,12 @@ function testTrades(spec, state) {
401407
testUndefined(result, "trade.tradeId");
402408
}
403409

410+
if (spec.trade.hasSequenceId) {
411+
testPositiveNumber(result, `trade.sequenceId`);
412+
} else {
413+
testUndefined(result, `trade.sequenceId`);
414+
}
415+
404416
if (spec.trade.tradeIdPattern) {
405417
it(`trade.tradeId should match pattern ${spec.trade.tradeIdPattern}`, () => {
406418
expect(result.trade.tradeId).to.match(spec.trade.tradeIdPattern);

src/exchanges/bitfinex-client.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,15 @@ class BitfinexClient extends BasicClient {
182182

183183
_onTicker(msg, market) {
184184
let msgBody = msg[1];
185+
const sequenceId = Number(msg[2]);
185186
let [bid, bidSize, ask, askSize, change, changePercent, last, volume, high, low] = msgBody;
186187
let open = last + change;
187188
let ticker = new Ticker({
188189
exchange: "Bitfinex",
189190
base: market.base,
190191
quote: market.quote,
191192
timestamp: Date.now(),
193+
sequenceId,
192194
last: last.toFixed(8),
193195
open: open.toFixed(8),
194196
high: high.toFixed(8),
@@ -207,6 +209,7 @@ class BitfinexClient extends BasicClient {
207209
_onTradeMessage(msg, market) {
208210
// example msg: [ 359491, 'tu', [ 560287312, 1609712228656, 0.005, 33432 ], 6 ]
209211
let [id, unix, amount, price] = msg[2];
212+
const sequenceId = Number(msg[3]);
210213

211214
let side = amount > 0 ? "buy" : "sell";
212215
price = price.toFixed(8);
@@ -216,6 +219,7 @@ class BitfinexClient extends BasicClient {
216219
base: market.base,
217220
quote: market.quote,
218221
tradeId: id.toFixed(),
222+
sequenceId,
219223
unix: unix,
220224
side,
221225
price,
@@ -240,7 +244,7 @@ class BitfinexClient extends BasicClient {
240244
*/
241245
let bids = [];
242246
let asks = [];
243-
const sequence = Number(msg[2]);
247+
const sequenceId = Number(msg[2]);
244248
const timestampMs = msg[3];
245249
for (let [price, count, size] of msg[1]) {
246250
let isBid = size > 0;
@@ -252,7 +256,7 @@ class BitfinexClient extends BasicClient {
252256
exchange: "Bitfinex",
253257
base: market.base,
254258
quote: market.quote,
255-
sequenceId: sequence,
259+
sequenceId,
256260
timestampMs,
257261
bids,
258262
asks,
@@ -263,7 +267,7 @@ class BitfinexClient extends BasicClient {
263267
_onLevel2Update(msg, market) {
264268
// example msg: [ 646750, [ 30927, 5, 0.0908 ], 19, 1609794565952 ]
265269
let [price, count, size] = msg[1];
266-
let sequence = Number(msg[2]);
270+
const sequenceId = Number(msg[2]);
267271
const timestampMs = msg[3];
268272

269273
if (!price.toFixed) return;
@@ -281,7 +285,7 @@ class BitfinexClient extends BasicClient {
281285
exchange: "Bitfinex",
282286
base: market.base,
283287
quote: market.quote,
284-
sequenceId: sequence,
288+
sequenceId,
285289
timestampMs,
286290
asks,
287291
bids,
@@ -307,7 +311,7 @@ class BitfinexClient extends BasicClient {
307311
let asks = [];
308312

309313
let orders = msg[1];
310-
let sequence = Number(msg[2]);
314+
const sequenceId = Number(msg[2]);
311315
const timestampMs = msg[3];
312316

313317
for (let [orderId, price, size] of orders) {
@@ -319,7 +323,7 @@ class BitfinexClient extends BasicClient {
319323
exchange: "Bitfinex",
320324
base: market.base,
321325
quote: market.quote,
322-
sequenceId: sequence,
326+
sequenceId,
323327
timestampMs,
324328
asks,
325329
bids,
@@ -333,7 +337,7 @@ class BitfinexClient extends BasicClient {
333337
let asks = [];
334338

335339
let [orderId, price, size] = msg[1];
336-
let sequence = Number(msg[2]);
340+
const sequenceId = Number(msg[2]);
337341
const timestampMs = msg[3];
338342

339343
let point = new Level3Point(orderId.toFixed(), price.toFixed(8), Math.abs(size).toFixed(8));
@@ -344,7 +348,7 @@ class BitfinexClient extends BasicClient {
344348
exchange: "Bitfinex",
345349
base: market.base,
346350
quote: market.quote,
347-
sequenceId: sequence,
351+
sequenceId,
348352
timestampMs,
349353
asks,
350354
bids,

src/ticker.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class Ticker {
44
base,
55
quote,
66
timestamp,
7+
sequenceId,
78
last,
89
open,
910
high,
@@ -21,6 +22,7 @@ class Ticker {
2122
this.base = base;
2223
this.quote = quote;
2324
this.timestamp = timestamp;
25+
this.sequenceId = sequenceId;
2426
this.last = last;
2527
this.open = open;
2628
this.high = high;

0 commit comments

Comments
 (0)