@continuumdao/continuum-node-sdk 1.3.22 → 1.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3,9 +3,11 @@ export type MergeLiveTickOptions = {
|
|
|
3
3
|
bucketSec: number;
|
|
4
4
|
maxPoints?: number;
|
|
5
5
|
};
|
|
6
|
+
/** Infer bar period from the most recent spacing in the series (preferred over binding bucketSec). */
|
|
7
|
+
export declare function inferBarPeriodSec(bars: Record<string, unknown>[]): number | null;
|
|
6
8
|
/**
|
|
7
9
|
* Merge a normalized live tick into OHLCV bar rows (same shape as normalizeCandleRow output).
|
|
8
|
-
*
|
|
10
|
+
* Uses bar spacing from the series; appends at most one new bar per call (never ladders synthetic bars).
|
|
9
11
|
*/
|
|
10
12
|
export declare function mergeLiveTickIntoBars(bars: Record<string, unknown>[], tick: ChartLiveTick, options: MergeLiveTickOptions): {
|
|
11
13
|
bars: Record<string, unknown>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-tick.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"merge-tick.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyBF,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,CAUhF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,oBAAoB,GAC3B;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,CA2D3D;AAYD,6EAA6E;AAC7E,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAAC,CAAC,GAC5D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAM3B"}
|
|
@@ -9,15 +9,30 @@ function barTimeSec(row) {
|
|
|
9
9
|
}
|
|
10
10
|
return Math.floor(Date.UTC(time.year, time.month - 1, time.day) / 1000);
|
|
11
11
|
}
|
|
12
|
+
function periodStartSec(timeSec, barPeriod) {
|
|
13
|
+
return Math.floor(timeSec / barPeriod) * barPeriod;
|
|
14
|
+
}
|
|
12
15
|
function bucketStartSec(timeSec, bucketSec) {
|
|
13
16
|
return Math.floor(timeSec / bucketSec) * bucketSec;
|
|
14
17
|
}
|
|
15
18
|
function cloneBar(row) {
|
|
16
19
|
return { ...row };
|
|
17
20
|
}
|
|
21
|
+
/** Infer bar period from the most recent spacing in the series (preferred over binding bucketSec). */
|
|
22
|
+
export function inferBarPeriodSec(bars) {
|
|
23
|
+
if (bars.length < 2) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const prev = barTimeSec(bars[bars.length - 2]);
|
|
27
|
+
const last = barTimeSec(bars[bars.length - 1]);
|
|
28
|
+
if (prev == null || last == null || last <= prev) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return last - prev;
|
|
32
|
+
}
|
|
18
33
|
/**
|
|
19
34
|
* Merge a normalized live tick into OHLCV bar rows (same shape as normalizeCandleRow output).
|
|
20
|
-
*
|
|
35
|
+
* Uses bar spacing from the series; appends at most one new bar per call (never ladders synthetic bars).
|
|
21
36
|
*/
|
|
22
37
|
export function mergeLiveTickIntoBars(bars, tick, options) {
|
|
23
38
|
if (bars.length === 0) {
|
|
@@ -35,42 +50,44 @@ export function mergeLiveTickIntoBars(bars, tick, options) {
|
|
|
35
50
|
return { bars: [row], barRolledOver: true };
|
|
36
51
|
}
|
|
37
52
|
const tickSec = Math.floor(tick.timeMs / 1000);
|
|
38
|
-
const tickBucket = bucketStartSec(tickSec, options.bucketSec);
|
|
39
53
|
const out = bars.map(cloneBar);
|
|
40
|
-
|
|
54
|
+
let last = out[out.length - 1];
|
|
41
55
|
const lastSec = barTimeSec(last);
|
|
42
56
|
if (lastSec == null) {
|
|
43
57
|
return { bars: out, barRolledOver: false };
|
|
44
58
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
59
|
+
const barPeriod = inferBarPeriodSec(out) ?? options.bucketSec;
|
|
60
|
+
let barRolledOver = false;
|
|
61
|
+
if (tickSec >= lastSec + barPeriod) {
|
|
62
|
+
const prevClose = coerceFiniteNumber(last.close);
|
|
63
|
+
if (prevClose == null) {
|
|
64
|
+
return { bars: out, barRolledOver: false };
|
|
65
|
+
}
|
|
66
|
+
const newBarTime = lastSec + barPeriod;
|
|
67
|
+
const newBar = {
|
|
68
|
+
time: newBarTime,
|
|
69
|
+
open: prevClose,
|
|
70
|
+
high: Math.max(prevClose, tick.price),
|
|
71
|
+
low: Math.min(prevClose, tick.price),
|
|
72
|
+
close: tick.price,
|
|
73
|
+
};
|
|
55
74
|
if (tick.volume != null) {
|
|
56
|
-
|
|
57
|
-
last.volume = prevVol + tick.volume;
|
|
75
|
+
newBar.volume = tick.volume;
|
|
58
76
|
}
|
|
59
|
-
|
|
77
|
+
out.push(newBar);
|
|
78
|
+
last = newBar;
|
|
79
|
+
barRolledOver = true;
|
|
60
80
|
}
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
low: Math.min(prevClose, tick.price),
|
|
67
|
-
close: tick.price,
|
|
68
|
-
};
|
|
81
|
+
const high = coerceFiniteNumber(last.high) ?? tick.price;
|
|
82
|
+
const low = coerceFiniteNumber(last.low) ?? tick.price;
|
|
83
|
+
last.high = Math.max(high, tick.price);
|
|
84
|
+
last.low = Math.min(low, tick.price);
|
|
85
|
+
last.close = tick.price;
|
|
69
86
|
if (tick.volume != null) {
|
|
70
|
-
|
|
87
|
+
const prevVol = coerceFiniteNumber(last.volume) ?? 0;
|
|
88
|
+
last.volume = prevVol + tick.volume;
|
|
71
89
|
}
|
|
72
|
-
out.
|
|
73
|
-
return { bars: trimBars(out, options.maxPoints), barRolledOver: true };
|
|
90
|
+
return { bars: trimBars(out, options.maxPoints), barRolledOver };
|
|
74
91
|
}
|
|
75
92
|
function trimBars(bars, maxPoints) {
|
|
76
93
|
if (maxPoints == null || maxPoints <= 0 || bars.length <= maxPoints) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-tick.js","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAOhF,SAAS,UAAU,CAAC,GAA4B;IAC/C,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,SAAiB;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CAAC,GAA4B;IAC7C,OAAO,EAAC,GAAG,GAAG,EAAC,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACpC,IAA+B,EAC/B,IAAmB,EACnB,OAA6B;IAE7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAClF,MAAM,GAAG,GAA4B;YACpC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,GAAG,EAAE,IAAI,CAAC,KAAK;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,EAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAC,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,
|
|
1
|
+
{"version":3,"file":"merge-tick.js","sourceRoot":"","sources":["../../../../src/core/chart/live/merge-tick.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED