Skip to content

Commit dd430af

Browse files
committed
Add mid to stock quotes
1 parent 5fb38df commit dd430af

File tree

7 files changed

+28
-4
lines changed

7 files changed

+28
-4
lines changed

.changeset/violet-zoos-walk.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@chainlink/dxfeed-adapter': minor
3+
'@chainlink/finage-adapter': minor
4+
---
5+
6+
Add mid to stock quotes

packages/sources/dxfeed/src/endpoint/stock-quotes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export type BaseEndpointTypes = {
1414
Response: {
1515
Result: null
1616
Data: {
17+
mid_price: number
1718
bid_price: number
1819
bid_volume: number
1920
ask_price: number

packages/sources/dxfeed/src/transport/stock-quotes.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,18 @@ export const transport = buildWsTransport<BaseEndpointTypes>(
1616

1717
const data = message[0].data[1]
1818

19+
const midPrice =
20+
(Number(data[bidPriceIndex]) * Number(data[bidSizeIndex]) +
21+
Number(data[askPriceIndex]) * Number(data[askSizeIndex])) /
22+
(Number(data[bidSizeIndex]) + Number(data[askSizeIndex]))
23+
1924
return [
2025
{
2126
params: { base: data[eventSymbolIndex] },
2227
response: {
2328
result: null,
2429
data: {
30+
mid_price: midPrice,
2531
bid_price: Number(data[bidPriceIndex]),
2632
bid_volume: Number(data[bidSizeIndex]),
2733
ask_price: Number(data[askPriceIndex]),

packages/sources/dxfeed/test/integration/__snapshots__/adapter-ws.test.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ exports[`websocket quote endpoint should return success 1`] = `
77
"ask_volume": 100,
88
"bid_price": 170,
99
"bid_volume": 148,
10+
"mid_price": 170.80645161290323,
1011
},
1112
"result": null,
1213
"statusCode": 200,

packages/sources/finage/src/endpoint/stock-quotes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export type BaseEndpointTypes = {
1111
Response: {
1212
Result: null
1313
Data: {
14+
mid_price: number
1415
bid_price: number
1516
bid_volume: number
1617
ask_price: number

packages/sources/finage/src/transport/stock-quotes.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,23 @@ export const transport = new WebSocketTransport<WsTransportTypes>({
4848
return []
4949
}
5050

51+
const bidPrice = isValidNumber(message.b) ? Number(message.b) : Number(message.bp)
52+
const bidVolume = Number(message.bs)
53+
const askPrice = isValidNumber(message.a) ? Number(message.a) : Number(message.ap)
54+
const askVolume = Number(message.as)
55+
const midPrice = (bidPrice * bidVolume + askPrice * askVolume) / (bidVolume + askVolume)
56+
5157
return [
5258
{
5359
params: { base: message.s },
5460
response: {
5561
result: null,
5662
data: {
57-
bid_price: isValidNumber(message.b) ? Number(message.b) : Number(message.bp),
58-
bid_volume: Number(message.bs),
59-
ask_price: isValidNumber(message.a) ? Number(message.a) : Number(message.ap),
60-
ask_volume: Number(message.as),
63+
mid_price: midPrice,
64+
bid_price: bidPrice,
65+
bid_volume: bidVolume,
66+
ask_price: askPrice,
67+
ask_volume: askVolume,
6168
},
6269
timestamps: {
6370
providerIndicatedTimeUnixMs: message.t,

packages/sources/finage/test/integration/__snapshots__/adapter-stock-quote.test.ts.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ exports[`stock quotes websocket stock quotes endpoint missing a and b fields sho
77
"ask_volume": 11,
88
"bid_price": 12,
99
"bid_volume": 13,
10+
"mid_price": 11.083333333333334,
1011
},
1112
"result": null,
1213
"statusCode": 200,
@@ -25,6 +26,7 @@ exports[`stock quotes websocket stock quotes endpoint should return success 1`]
2526
"ask_volume": 6,
2627
"bid_price": 7,
2728
"bid_volume": 8,
29+
"mid_price": 6.142857142857143,
2830
},
2931
"result": null,
3032
"statusCode": 200,

0 commit comments

Comments
 (0)