@tradecanvas/core 1.83.0 → 1.84.0
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.
- package/README.md +6 -6
- package/dist/{WebGLSeriesRenderer-CNjcz7gD.js → WebGLSeriesRenderer-DguvFCTx.js} +1 -1
- package/dist/{WebGLSeriesRenderer-CNjcz7gD.js.map → WebGLSeriesRenderer-DguvFCTx.js.map} +1 -1
- package/dist/{WebGLSeriesRenderer-CcD5VtQE.cjs → WebGLSeriesRenderer-lwJz1WAg.cjs} +1 -1
- package/dist/{WebGLSeriesRenderer-CcD5VtQE.cjs.map → WebGLSeriesRenderer-lwJz1WAg.cjs.map} +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3232 -2503
- package/dist/index.js.map +1 -1
- package/dist/indicator.worker-1I8WNx4q.js +18 -0
- package/dist/indicator.worker-1I8WNx4q.js.map +1 -0
- package/dist/indicator.worker-g0us81yM.cjs +2 -0
- package/dist/indicator.worker-g0us81yM.cjs.map +1 -0
- package/dist/indicators/IndicatorEngine.d.ts +33 -40
- package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
- package/dist/indicators/IndicatorValueMap.d.ts +6 -0
- package/dist/indicators/IndicatorValueMap.d.ts.map +1 -1
- package/dist/indicators/PointwiseIndicator.d.ts +7 -5
- package/dist/indicators/PointwiseIndicator.d.ts.map +1 -1
- package/dist/indicators/builtInFactories.d.ts +8 -0
- package/dist/indicators/builtInFactories.d.ts.map +1 -0
- package/dist/indicators/index.d.ts +7 -0
- package/dist/indicators/index.d.ts.map +1 -1
- package/dist/indicators/indicatorInstance.d.ts +59 -0
- package/dist/indicators/indicatorInstance.d.ts.map +1 -0
- package/dist/indicators/instanceReads.d.ts +40 -0
- package/dist/indicators/instanceReads.d.ts.map +1 -0
- package/dist/indicators/overlay/ChandeKrollStop.d.ts +4 -0
- package/dist/indicators/overlay/ChandeKrollStop.d.ts.map +1 -1
- package/dist/indicators/overlay/DEMA.d.ts +4 -0
- package/dist/indicators/overlay/DEMA.d.ts.map +1 -1
- package/dist/indicators/overlay/VWAP.d.ts +4 -0
- package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
- package/dist/indicators/panel/MACD.d.ts +4 -0
- package/dist/indicators/panel/MACD.d.ts.map +1 -1
- package/dist/indicators/panel/RSI.d.ts +4 -0
- package/dist/indicators/panel/RSI.d.ts.map +1 -1
- package/dist/indicators/panel/UlcerIndex.d.ts +4 -0
- package/dist/indicators/panel/UlcerIndex.d.ts.map +1 -1
- package/dist/indicators/panel/VolumeOscillator.d.ts +4 -0
- package/dist/indicators/panel/VolumeOscillator.d.ts.map +1 -1
- package/dist/indicators/recompute.bench.d.ts +2 -0
- package/dist/indicators/recompute.bench.d.ts.map +1 -0
- package/dist/indicators/registry.d.ts.map +1 -1
- package/dist/indicators/worker/IndicatorWorkerBridge.d.ts +81 -0
- package/dist/indicators/worker/IndicatorWorkerBridge.d.ts.map +1 -0
- package/dist/indicators/worker/IndicatorWorkerHost.d.ts +2 -1
- package/dist/indicators/worker/IndicatorWorkerHost.d.ts.map +1 -1
- package/dist/indicators/worker/IndicatorWorkerPool.d.ts +99 -0
- package/dist/indicators/worker/IndicatorWorkerPool.d.ts.map +1 -0
- package/dist/indicators/worker/columns.d.ts +78 -0
- package/dist/indicators/worker/columns.d.ts.map +1 -0
- package/dist/indicators/worker/messages.d.ts +26 -13
- package/dist/indicators/worker/messages.d.ts.map +1 -1
- package/dist/indicators/worker/spawnWorker.d.ts +17 -0
- package/dist/indicators/worker/spawnWorker.d.ts.map +1 -0
- package/dist/indicators/worker/workerHandler.d.ts +16 -0
- package/dist/indicators/worker/workerHandler.d.ts.map +1 -0
- package/dist/indicators/worker/workerJobs.d.ts +56 -0
- package/dist/indicators/worker/workerJobs.d.ts.map +1 -0
- package/dist/indicators/worker/workerState.d.ts +28 -0
- package/dist/indicators/worker/workerState.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indicators/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indicators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { IndicatorConfig, IndicatorDescriptor, IndicatorIntervals, IndicatorOutput, IndicatorPlugin, OHLCBar, ResolvedIndicatorStyle } from '@tradecanvas/commons';
|
|
2
|
+
/** An indicator on the chart, as the engine keeps it. */
|
|
3
|
+
export interface IndicatorInstance {
|
|
4
|
+
plugin: IndicatorPlugin;
|
|
5
|
+
config: IndicatorConfig;
|
|
6
|
+
output: IndicatorOutput | null;
|
|
7
|
+
style: ResolvedIndicatorStyle;
|
|
8
|
+
/** Bars with `close` replaced by the price source, kept for incremental updates. */
|
|
9
|
+
sourceBars?: OHLCBar[];
|
|
10
|
+
/** What an indicator read from another's line was computed on, kept for incremental updates. */
|
|
11
|
+
lineInput?: LineInput;
|
|
12
|
+
/**
|
|
13
|
+
* The first bar whose values the last computation may have changed: what
|
|
14
|
+
* indicators read from this one must recompute from. 0 after a full
|
|
15
|
+
* computation.
|
|
16
|
+
*/
|
|
17
|
+
changedFrom: number;
|
|
18
|
+
/** Not shown on the chart's interval (its `intervals` leave it out). */
|
|
19
|
+
offInterval: boolean;
|
|
20
|
+
/** Not shown on the chart's type: it reads another symbol by time, and the bars drawn carry none. */
|
|
21
|
+
offChartType: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface LineInput {
|
|
24
|
+
sourceId: string;
|
|
25
|
+
key: string;
|
|
26
|
+
/** Index in the chart's bars of the line's first value. */
|
|
27
|
+
start: number;
|
|
28
|
+
/** Bars made of the line, from `start` on. */
|
|
29
|
+
bars: OHLCBar[];
|
|
30
|
+
/** The plugin's own output over `bars`. */
|
|
31
|
+
raw: IndicatorOutput;
|
|
32
|
+
/** `raw` re-indexed to the chart's bars: the instance's output. */
|
|
33
|
+
aligned: IndicatorOutput;
|
|
34
|
+
}
|
|
35
|
+
/** An active indicator instance as listed by `getActiveIndicators`. */
|
|
36
|
+
export interface ActiveIndicatorInfo {
|
|
37
|
+
instanceId: string;
|
|
38
|
+
id: string;
|
|
39
|
+
params: Record<string, unknown>;
|
|
40
|
+
descriptor: IndicatorDescriptor;
|
|
41
|
+
visible: boolean;
|
|
42
|
+
/** Whether it is drawn now: visible, on the chart's interval, and on its type. */
|
|
43
|
+
shown: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* True while the chart's type draws bars with no time of their own (Renko,
|
|
46
|
+
* Kagi, line break, point & figure, range bars) and the indicator reads
|
|
47
|
+
* another symbol by time (a compare on its own scale or in a pane, a
|
|
48
|
+
* spread, a ratio, a correlation) or counts days (VWAP and the others
|
|
49
|
+
* whose descriptor says `readsExchangeTimeZone`): it is not drawn there.
|
|
50
|
+
*/
|
|
51
|
+
offChartType?: true;
|
|
52
|
+
/** The intervals it shows on, when not all. */
|
|
53
|
+
intervals?: IndicatorIntervals;
|
|
54
|
+
/** The instance whose pane it is drawn in, when not its own. */
|
|
55
|
+
pane?: string;
|
|
56
|
+
/** `'left'`: an overlay on a price scale of its own on the left, not the chart's prices. */
|
|
57
|
+
scale?: 'left';
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=indicatorInstance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indicatorInstance.d.ts","sourceRoot":"","sources":["../../src/indicators/indicatorInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,OAAO,EACP,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,gGAAgG;IAChG,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IACrB,qGAAqG;IACrG,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,2CAA2C;IAC3C,GAAG,EAAE,eAAe,CAAC;IACrB,mEAAmE;IACnE,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { IndicatorDescriptor, OverlayScale } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorInstance } from './indicatorInstance.js';
|
|
3
|
+
type ValueRange = {
|
|
4
|
+
min: number;
|
|
5
|
+
max: number;
|
|
6
|
+
};
|
|
7
|
+
type AxisValue = {
|
|
8
|
+
value: number;
|
|
9
|
+
color: string;
|
|
10
|
+
};
|
|
11
|
+
/** Whether an instance is drawn: switched on, on the chart's interval, and on its type. */
|
|
12
|
+
export declare function isShown(instance: IndicatorInstance): boolean;
|
|
13
|
+
/** The fields an instance draws and shows: a hidden plot stretches no scale. */
|
|
14
|
+
export declare function shownKeys(instance: IndicatorInstance): readonly string[] | null;
|
|
15
|
+
export declare function latestValues(instance: IndicatorInstance): AxisValue[];
|
|
16
|
+
/** `latestValues` of every price-pane indicator on one scale. */
|
|
17
|
+
export declare function overlayLatestValues(instances: Iterable<IndicatorInstance>, scale: OverlayScale): AxisValue[];
|
|
18
|
+
/** The value range of a pane's instances over bars `[from, to]`; with `log`, null when any has a value at or below zero. */
|
|
19
|
+
export declare function paneRange(members: readonly IndicatorInstance[], from: number, to: number, log: boolean): ValueRange | null;
|
|
20
|
+
/** Each shown line's value at bar `barIndex` of a pane's instances. */
|
|
21
|
+
export declare function paneValuesAt(members: readonly IndicatorInstance[], barIndex: number): number[];
|
|
22
|
+
/**
|
|
23
|
+
* The min/max of the visible overlays on `scale` over bars `[from, to]`.
|
|
24
|
+
* Read on every autoscaled frame, so it walks `output.series` over the
|
|
25
|
+
* range only, never the whole `values` map.
|
|
26
|
+
*/
|
|
27
|
+
export declare function overlayPriceRange(instances: Iterable<IndicatorInstance>, from: number, to: number, scale: OverlayScale): ValueRange | null;
|
|
28
|
+
/**
|
|
29
|
+
* The main colours of the lines drawn where an indicator would go: the
|
|
30
|
+
* price pane (an overlay), another instance's pane, or a pane of its own.
|
|
31
|
+
*/
|
|
32
|
+
export declare function colorsInPane(instances: Iterable<IndicatorInstance>, placement: IndicatorDescriptor['placement'], pane: string | null, except?: string): Set<string>;
|
|
33
|
+
/**
|
|
34
|
+
* The first palette colour no line in the indicator's pane and no other
|
|
35
|
+
* instance of it starts with, so a second EMA, or an SMA next to an EMA,
|
|
36
|
+
* does not look like the first.
|
|
37
|
+
*/
|
|
38
|
+
export declare function freeColor(instances: readonly IndicatorInstance[], id: string, placement: IndicatorDescriptor['placement'], pane: string | null, except?: string): number;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=instanceReads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instanceReads.d.ts","sourceRoot":"","sources":["../../src/indicators/instanceReads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAMhE,KAAK,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/C,KAAK,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD,2FAA2F;AAC3F,wBAAgB,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE5D;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAI/E;AASD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EAAE,CAarE;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,CAM5G;AAED,4HAA4H;AAC5H,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAgB1H;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAa9F;AAyCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI,CAO1I;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACtC,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAC3C,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,GAAG,CAAC,MAAM,CAAC,CAUb;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,iBAAiB,EAAE,EACvC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAC3C,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAOR"}
|
|
@@ -10,6 +10,10 @@ export declare class ChandeKrollStopIndicator extends IndicatorBase {
|
|
|
10
10
|
descriptor: IndicatorDescriptor;
|
|
11
11
|
/** ATR and the first stops behind each output, so a tick extends them. */
|
|
12
12
|
private states;
|
|
13
|
+
/** What `update` reads beside an output, sent from the worker with it (`WorkerStateful`). */
|
|
14
|
+
workerState(output: IndicatorOutput): unknown;
|
|
15
|
+
/** Keep what the worker sent beside an output it computed (`WorkerStateful`). */
|
|
16
|
+
adoptWorkerState(output: IndicatorOutput, state: unknown): void;
|
|
13
17
|
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
14
18
|
update(data: DataSeries, config: IndicatorConfig, prev: IndicatorOutput, from: number): IndicatorOutput | null;
|
|
15
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChandeKrollStop.d.ts","sourceRoot":"","sources":["../../../src/indicators/overlay/ChandeKrollStop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;IACzD,UAAU,EAAE,mBAAmB,CAQ7B;IAEF,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAyC;IAEvD,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAYrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAkB/G"}
|
|
1
|
+
{"version":3,"file":"ChandeKrollStop.d.ts","sourceRoot":"","sources":["../../../src/indicators/overlay/ChandeKrollStop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;IACzD,UAAU,EAAE,mBAAmB,CAQ7B;IAEF,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAyC;IAEvD,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAI7C,iFAAiF;IACjF,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAYrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAkB/G"}
|
|
@@ -5,6 +5,10 @@ export declare class DEMAIndicator extends IndicatorBase {
|
|
|
5
5
|
descriptor: IndicatorDescriptor;
|
|
6
6
|
/** The two EMAs behind each output, so a tick extends them instead of starting over. */
|
|
7
7
|
private emas;
|
|
8
|
+
/** What `update` reads beside an output, sent from the worker with it (`WorkerStateful`). */
|
|
9
|
+
workerState(output: IndicatorOutput): unknown;
|
|
10
|
+
/** Keep what the worker sent beside an output it computed (`WorkerStateful`). */
|
|
11
|
+
adoptWorkerState(output: IndicatorOutput, state: unknown): void;
|
|
8
12
|
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
9
13
|
update(data: DataSeries, config: IndicatorConfig, prev: IndicatorOutput, from: number): IndicatorOutput | null;
|
|
10
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DEMA.d.ts","sourceRoot":"","sources":["../../../src/indicators/overlay/DEMA.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,+FAA+F;AAC/F,qBAAa,aAAc,SAAQ,aAAa;IAC9C,UAAU,EAAE,mBAAmB,CAQ7B;IAEF,wFAAwF;IACxF,OAAO,CAAC,IAAI,CAA4D;IAExE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IASrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAgB/G"}
|
|
1
|
+
{"version":3,"file":"DEMA.d.ts","sourceRoot":"","sources":["../../../src/indicators/overlay/DEMA.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,+FAA+F;AAC/F,qBAAa,aAAc,SAAQ,aAAa;IAC9C,UAAU,EAAE,mBAAmB,CAQ7B;IAEF,wFAAwF;IACxF,OAAO,CAAC,IAAI,CAA4D;IAExE,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAI7C,iFAAiF;IACjF,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IASrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAgB/G"}
|
|
@@ -15,6 +15,10 @@ export declare class VWAPIndicator extends IndicatorBase {
|
|
|
15
15
|
descriptor: IndicatorDescriptor;
|
|
16
16
|
/** The running sums through each output's last bars, which the average alone cannot be turned back into. */
|
|
17
17
|
private kept;
|
|
18
|
+
/** What `update` reads beside an output, sent from the worker with it (`WorkerStateful`). */
|
|
19
|
+
workerState(output: IndicatorOutput): unknown;
|
|
20
|
+
/** Keep what the worker sent beside an output it computed (`WorkerStateful`). */
|
|
21
|
+
adoptWorkerState(output: IndicatorOutput, state: unknown): void;
|
|
18
22
|
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
19
23
|
/**
|
|
20
24
|
* On a tick or a new bar, each changed bar is added to the sums kept for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VWAP.d.ts","sourceRoot":"","sources":["../../../src/indicators/overlay/VWAP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,4GAA4G;AAC5G,eAAO,MAAM,YAAY,8CAA+C,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAsBvD,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU,CAG9D;AAQD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,UAAU,EAAE,mBAAmB,CAS7B;IAEF,4GAA4G;IAC5G,OAAO,CAAC,IAAI,CAAiD;IAE7D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IASrE;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAa9G;;;OAGG;IACH,OAAO,CAAC,IAAI;CA0Bb"}
|
|
1
|
+
{"version":3,"file":"VWAP.d.ts","sourceRoot":"","sources":["../../../src/indicators/overlay/VWAP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,4GAA4G;AAC5G,eAAO,MAAM,YAAY,8CAA+C,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAsBvD,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU,CAG9D;AAQD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,UAAU,EAAE,mBAAmB,CAS7B;IAEF,4GAA4G;IAC5G,OAAO,CAAC,IAAI,CAAiD;IAE7D,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAI7C,iFAAiF;IACjF,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IASrE;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAa9G;;;OAGG;IACH,OAAO,CAAC,IAAI;CA0Bb"}
|
|
@@ -4,6 +4,10 @@ export declare class MACDIndicator extends IndicatorBase {
|
|
|
4
4
|
descriptor: IndicatorDescriptor;
|
|
5
5
|
/** Fast/slow EMA per bar — `macd = fast - slow` can't be split back into the two. */
|
|
6
6
|
private emas;
|
|
7
|
+
/** What `update` reads beside an output, sent from the worker with it (`WorkerStateful`). */
|
|
8
|
+
workerState(output: IndicatorOutput): unknown;
|
|
9
|
+
/** Keep what the worker sent beside an output it computed (`WorkerStateful`). */
|
|
10
|
+
adoptWorkerState(output: IndicatorOutput, state: unknown): void;
|
|
7
11
|
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
8
12
|
update(data: DataSeries, config: IndicatorConfig, prev: IndicatorOutput, from: number): IndicatorOutput | null;
|
|
9
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MACD.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/MACD.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,UAAU,EAAE,mBAAmB,CAY7B;IAEF,qFAAqF;IACrF,OAAO,CAAC,IAAI,CAAsE;IAElF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IA0CrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CA2B/G"}
|
|
1
|
+
{"version":3,"file":"MACD.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/MACD.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,UAAU,EAAE,mBAAmB,CAY7B;IAEF,qFAAqF;IACrF,OAAO,CAAC,IAAI,CAAsE;IAElF,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAI7C,iFAAiF;IACjF,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IA0CrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CA2B/G"}
|
|
@@ -4,6 +4,10 @@ export declare class RSIIndicator extends IndicatorBase {
|
|
|
4
4
|
descriptor: IndicatorDescriptor;
|
|
5
5
|
/** Wilder's running averages per bar — the RSI value alone can't be inverted back into them. */
|
|
6
6
|
private smoothing;
|
|
7
|
+
/** What `update` reads beside an output, sent from the worker with it (`WorkerStateful`). */
|
|
8
|
+
workerState(output: IndicatorOutput): unknown;
|
|
9
|
+
/** Keep what the worker sent beside an output it computed (`WorkerStateful`). */
|
|
10
|
+
adoptWorkerState(output: IndicatorOutput, state: unknown): void;
|
|
7
11
|
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
8
12
|
update(data: DataSeries, config: IndicatorConfig, prev: IndicatorOutput, from: number): IndicatorOutput | null;
|
|
9
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RSI.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/RSI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,YAAa,SAAQ,aAAa;IAC7C,UAAU,EAAE,mBAAmB,CAU7B;IAEF,gGAAgG;IAChG,OAAO,CAAC,SAAS,CAAsE;IAEvF,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IA6CrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAqB/G"}
|
|
1
|
+
{"version":3,"file":"RSI.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/RSI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,YAAa,SAAQ,aAAa;IAC7C,UAAU,EAAE,mBAAmB,CAU7B;IAEF,gGAAgG;IAChG,OAAO,CAAC,SAAS,CAAsE;IAEvF,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAI7C,iFAAiF;IACjF,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IA6CrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAqB/G"}
|
|
@@ -9,6 +9,10 @@ export declare class UlcerIndexIndicator extends IndicatorBase {
|
|
|
9
9
|
descriptor: IndicatorDescriptor;
|
|
10
10
|
/** Each bar's drawdown behind each output, so a tick redoes only the new ones. */
|
|
11
11
|
private drawdowns;
|
|
12
|
+
/** What `update` reads beside an output, sent from the worker with it (`WorkerStateful`). */
|
|
13
|
+
workerState(output: IndicatorOutput): unknown;
|
|
14
|
+
/** Keep what the worker sent beside an output it computed (`WorkerStateful`). */
|
|
15
|
+
adoptWorkerState(output: IndicatorOutput, state: unknown): void;
|
|
12
16
|
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
13
17
|
update(data: DataSeries, config: IndicatorConfig, prev: IndicatorOutput, from: number): IndicatorOutput | null;
|
|
14
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UlcerIndex.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/UlcerIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,UAAU,EAAE,mBAAmB,CAS7B;IAEF,kFAAkF;IAClF,OAAO,CAAC,SAAS,CAAyC;IAE1D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAQrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAS/G"}
|
|
1
|
+
{"version":3,"file":"UlcerIndex.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/UlcerIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,UAAU,EAAE,mBAAmB,CAS7B;IAEF,kFAAkF;IAClF,OAAO,CAAC,SAAS,CAAyC;IAE1D,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAI7C,iFAAiF;IACjF,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IAQrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAS/G"}
|
|
@@ -5,6 +5,10 @@ export declare class VolumeOscillatorIndicator extends IndicatorBase {
|
|
|
5
5
|
descriptor: IndicatorDescriptor;
|
|
6
6
|
/** The two volume EMAs behind each output, so a tick extends them. */
|
|
7
7
|
private emas;
|
|
8
|
+
/** What `update` reads beside an output, sent from the worker with it (`WorkerStateful`). */
|
|
9
|
+
workerState(output: IndicatorOutput): unknown;
|
|
10
|
+
/** Keep what the worker sent beside an output it computed (`WorkerStateful`). */
|
|
11
|
+
adoptWorkerState(output: IndicatorOutput, state: unknown): void;
|
|
8
12
|
calculate(data: DataSeries, config: IndicatorConfig): IndicatorOutput;
|
|
9
13
|
update(data: DataSeries, config: IndicatorConfig, prev: IndicatorOutput, from: number): IndicatorOutput | null;
|
|
10
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolumeOscillator.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/VolumeOscillator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,iGAAiG;AACjG,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,UAAU,EAAE,mBAAmB,CAS7B;IAEF,sEAAsE;IACtE,OAAO,CAAC,IAAI,CAAgE;IAE5E,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IASrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAkB/G"}
|
|
1
|
+
{"version":3,"file":"VolumeOscillator.d.ts","sourceRoot":"","sources":["../../../src/indicators/panel/VolumeOscillator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,iGAAiG;AACjG,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,UAAU,EAAE,mBAAmB,CAS7B;IAEF,sEAAsE;IACtE,OAAO,CAAC,IAAI,CAAgE;IAE5E,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO;IAI7C,iFAAiF;IACjF,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/D,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe;IASrE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;CAkB/G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recompute.bench.d.ts","sourceRoot":"","sources":["../../src/indicators/recompute.bench.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/indicators/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/indicators/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAMvE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { DataSeries } from '@tradecanvas/commons';
|
|
2
|
+
import { IndicatorInstance } from '../indicatorInstance.js';
|
|
3
|
+
import { IndicatorWorkerClient } from './IndicatorWorkerPool.js';
|
|
4
|
+
/** Where full recomputes go besides this thread (`useWorker`). */
|
|
5
|
+
export interface IndicatorWorkerOptions {
|
|
6
|
+
/** The fewest bars a full recompute goes to the worker for. Default `INDICATOR_WORKER_MIN_BARS`. */
|
|
7
|
+
minBars?: number;
|
|
8
|
+
/**
|
|
9
|
+
* Called when outputs from the worker have been put in place, or a read
|
|
10
|
+
* finished here what was still out: draw again, and fit the scales.
|
|
11
|
+
*/
|
|
12
|
+
onLand?: () => void;
|
|
13
|
+
}
|
|
14
|
+
/** What the bridge reads and runs of the engine's. */
|
|
15
|
+
export interface WorkerBridgeHost {
|
|
16
|
+
instance(instanceId: string): IndicatorInstance | undefined;
|
|
17
|
+
/** The instances, each after the indicators it reads. */
|
|
18
|
+
ordered(): IndicatorInstance[];
|
|
19
|
+
/** The instances reading `instanceId`'s lines, directly or through others. */
|
|
20
|
+
dependents(instanceId: string): string[];
|
|
21
|
+
/** Compute one instance; `here` keeps a full computation off the worker. */
|
|
22
|
+
compute(instance: IndicatorInstance, data: DataSeries, from?: number, here?: boolean): void;
|
|
23
|
+
/** Run the ticks waiting for the next read. */
|
|
24
|
+
runPending(): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The engine's way to the indicator worker: which full recomputes go there,
|
|
28
|
+
* what runs there by instance, the ticks that come meanwhile, and the
|
|
29
|
+
* replies put in place. While one runs, the instance keeps its last output;
|
|
30
|
+
* `settle` computes here whatever is still out, for a read that must see
|
|
31
|
+
* the bars' own values.
|
|
32
|
+
*/
|
|
33
|
+
export declare class IndicatorWorkerBridge {
|
|
34
|
+
private readonly host;
|
|
35
|
+
private worker;
|
|
36
|
+
/** The full recomputes running in the worker, by instance: each shows its last output till it lands. */
|
|
37
|
+
private jobs;
|
|
38
|
+
/** The bars sent to the worker this task, shared by every indicator sent with them. */
|
|
39
|
+
private sharedBars;
|
|
40
|
+
constructor(host: WorkerBridgeHost);
|
|
41
|
+
/** Send full recomputes to `client`'s worker from now on (null: none), once what is out is settled. */
|
|
42
|
+
use(client: IndicatorWorkerClient | null, options: IndicatorWorkerOptions): void;
|
|
43
|
+
/**
|
|
44
|
+
* Whether a full recompute runs in the worker: any, or (with an id) the
|
|
45
|
+
* instance's own, or that of an indicator whose line it reads.
|
|
46
|
+
*/
|
|
47
|
+
computing(instanceId?: string): boolean;
|
|
48
|
+
/** Drop what runs in the worker without computing it, and send nothing more there: the engine is going. */
|
|
49
|
+
stop(): void;
|
|
50
|
+
/** The bars changed: a recompute sent from now on is sent them anew. */
|
|
51
|
+
barsChanged(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Whether the instance's computation is the worker's to do: a full one is
|
|
54
|
+
* sent there; a tick while one runs only widens what its reply is brought
|
|
55
|
+
* up to date from; and an indicator reading the line of one running there
|
|
56
|
+
* is computed when that one lands.
|
|
57
|
+
*/
|
|
58
|
+
takes(instance: IndicatorInstance, data: DataSeries, from?: number): boolean;
|
|
59
|
+
/** Cancel the instance's recompute in the worker, if one runs. */
|
|
60
|
+
drop(instanceId: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Finish here what runs in the worker, so a read sees the bars' own
|
|
63
|
+
* values: each such indicator, and those reading its lines, computed now.
|
|
64
|
+
*/
|
|
65
|
+
settle(): void;
|
|
66
|
+
/** Start a full recompute in the worker, if it takes this one: a built-in, on bars or a price, over enough bars. */
|
|
67
|
+
private send;
|
|
68
|
+
/** The bars for the worker: made once a task for every indicator sent with them, which go in one message. */
|
|
69
|
+
private barsFor;
|
|
70
|
+
/** The computation running in the worker that the instance reads a line of, directly or through others. */
|
|
71
|
+
private jobReadBy;
|
|
72
|
+
/**
|
|
73
|
+
* A reply from the worker: put in place, brought up to date with the
|
|
74
|
+
* ticks since, unless a newer computation replaced it; then the
|
|
75
|
+
* indicators reading its lines follow.
|
|
76
|
+
*/
|
|
77
|
+
private land;
|
|
78
|
+
/** The reply as the instance's output, brought up to date; computed here when it can't be. */
|
|
79
|
+
private apply;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=IndicatorWorkerBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndicatorWorkerBridge.d.ts","sourceRoot":"","sources":["../../../src/indicators/worker/IndicatorWorkerBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAgB,MAAM,0BAA0B,CAAC;AAIpF,kEAAkE;AAClE,MAAM,WAAW,sBAAsB;IACrC,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC5D,yDAAyD;IACzD,OAAO,IAAI,iBAAiB,EAAE,CAAC;IAC/B,8EAA8E;IAC9E,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzC,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5F,+CAA+C;IAC/C,UAAU,IAAI,IAAI,CAAC;CACpB;AAQD;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAOpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,OAAO,CAAC,MAAM,CAA0B;IACxC,wGAAwG;IACxG,OAAO,CAAC,IAAI,CAAwC;IACpD,uFAAuF;IACvF,OAAO,CAAC,UAAU,CAA2B;gBAEhB,IAAI,EAAE,gBAAgB;IAEnD,uGAAuG;IACvG,GAAG,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,EAAE,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAKhF;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAOvC,2GAA2G;IAC3G,IAAI,IAAI,IAAI;IAMZ,wEAAwE;IACxE,WAAW,IAAI,IAAI;IAInB;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAe5E,kEAAkE;IAClE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAO9B;;;OAGG;IACH,MAAM,IAAI,IAAI;IAcd,oHAAoH;IACpH,OAAO,CAAC,IAAI;IAcZ,6GAA6G;IAC7G,OAAO,CAAC,OAAO;IAWf,2GAA2G;IAC3G,OAAO,CAAC,SAAS;IAejB;;;;OAIG;IACH,OAAO,CAAC,IAAI;IAiBZ,8FAA8F;IAC9F,OAAO,CAAC,KAAK;CAad"}
|
|
@@ -4,7 +4,8 @@ import { DataSeries, IndicatorConfig, IndicatorOutput, IndicatorPlugin } from '@
|
|
|
4
4
|
* Real `Worker` instances satisfy this interface; tests can pass a stub.
|
|
5
5
|
*/
|
|
6
6
|
export interface WorkerLike {
|
|
7
|
-
|
|
7
|
+
/** `transfer` hands over the buffers of the columns sent, instead of copying them. */
|
|
8
|
+
postMessage(msg: unknown, transfer?: Transferable[]): void;
|
|
8
9
|
addEventListener(type: 'message' | 'error' | 'messageerror', listener: (ev: MessageEvent | ErrorEvent) => void): void;
|
|
9
10
|
removeEventListener(type: 'message' | 'error' | 'messageerror', listener: (ev: MessageEvent | ErrorEvent) => void): void;
|
|
10
11
|
terminate(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndicatorWorkerHost.d.ts","sourceRoot":"","sources":["../../../src/indicators/worker/IndicatorWorkerHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"IndicatorWorkerHost.d.ts","sourceRoot":"","sources":["../../../src/indicators/worker/IndicatorWorkerHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAK9B;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,sFAAsF;IACtF,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC3D,gBAAgB,CACd,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,cAAc,EAC1C,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,GAAG,UAAU,KAAK,IAAI,GAChD,IAAI,CAAC;IACR,mBAAmB,CACjB,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,cAAc,EAC1C,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,GAAG,UAAU,KAAK,IAAI,GAChD,IAAI,CAAC;IACR,SAAS,IAAI,IAAI,CAAC;CACnB;AAUD,MAAM,WAAW,0BAA0B;IACzC,sEAAsE;IACtE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,cAAc,CAA0C;gBAEpD,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,GAAE,0BAA+B;IAW/E,2EAA2E;IAC3E,SAAS,IAAI,OAAO;IAIpB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIrD;;;OAGG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,eAAe,CAAC;IA0B3B,iFAAiF;IACjF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrB,SAAS,IAAI,IAAI;IAcjB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,gBAAgB;CAgBzB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { IndicatorConfig, IndicatorOutput, PriceSource } from '@tradecanvas/commons';
|
|
2
|
+
import { WorkerLike } from './IndicatorWorkerHost.js';
|
|
3
|
+
import { BarColumns } from './columns.js';
|
|
4
|
+
/**
|
|
5
|
+
* How many bars of an output are made into points in one task. A reply
|
|
6
|
+
* over a million bars is rebuilt over twenty tasks of a few milliseconds
|
|
7
|
+
* each, so the page answers input and draws frames meanwhile.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DECODE_SLICE_BARS = 50000;
|
|
10
|
+
/** How a client gets its worker: at once, or once its code has loaded. Throwing, or rejecting, means none. */
|
|
11
|
+
export type WorkerSpawn = () => WorkerLike | Promise<WorkerLike>;
|
|
12
|
+
/** One full computation for the worker. */
|
|
13
|
+
export interface WorkerJob {
|
|
14
|
+
indicatorId: string;
|
|
15
|
+
config: IndicatorConfig;
|
|
16
|
+
/** The price the indicator reads in place of the close (none: the close). */
|
|
17
|
+
source?: PriceSource;
|
|
18
|
+
/**
|
|
19
|
+
* The bars as columns. Jobs given the same columns before the next
|
|
20
|
+
* microtask go to the worker in one message, and the columns' buffers
|
|
21
|
+
* with it: they are empty here after.
|
|
22
|
+
*/
|
|
23
|
+
bars: BarColumns;
|
|
24
|
+
/** The bars' times, kept here: the output's `values` are keyed by them. */
|
|
25
|
+
times: ArrayLike<number>;
|
|
26
|
+
}
|
|
27
|
+
/** A job's output, with what the plugin keeps beside it for `update` (`WorkerStateful`). */
|
|
28
|
+
export interface WorkerResult {
|
|
29
|
+
output: IndicatorOutput;
|
|
30
|
+
state?: unknown;
|
|
31
|
+
}
|
|
32
|
+
/** What a job ends with: its result, or why there is none (the caller computes it itself). */
|
|
33
|
+
export type WorkerJobDone = (result: WorkerResult | Error) => void;
|
|
34
|
+
/**
|
|
35
|
+
* The page's indicator worker, as the charts use it: jobs in, outputs out,
|
|
36
|
+
* matched by request id. It starts as soon as it is made and answers a ping
|
|
37
|
+
* when it is up. If it cannot be made (no `Worker`, a constructor that
|
|
38
|
+
* throws, as under a Content Security Policy that refuses `blob:`) or reports
|
|
39
|
+
* an error, it fails: every job waiting gets an `Error` and `usable` turns
|
|
40
|
+
* false, so the charts compute on the main thread instead.
|
|
41
|
+
*/
|
|
42
|
+
export declare class IndicatorWorkerClient {
|
|
43
|
+
private state;
|
|
44
|
+
private worker;
|
|
45
|
+
/** Messages posted before the worker was there, sent once it is. */
|
|
46
|
+
private outbox;
|
|
47
|
+
private jobs;
|
|
48
|
+
/** The jobs being gathered on one set of bars. */
|
|
49
|
+
private batch;
|
|
50
|
+
private nextId;
|
|
51
|
+
private pingId;
|
|
52
|
+
private readonly onMessage;
|
|
53
|
+
private readonly onError;
|
|
54
|
+
constructor(spawn: WorkerSpawn);
|
|
55
|
+
/** False once the worker failed or was closed: compute on the main thread. */
|
|
56
|
+
get usable(): boolean;
|
|
57
|
+
/** True once the worker answered its first ping. */
|
|
58
|
+
get ready(): boolean;
|
|
59
|
+
/** Send a job; its id, for `cancel`, or null when the worker is not usable. */
|
|
60
|
+
submit(job: WorkerJob, done: WorkerJobDone): number | null;
|
|
61
|
+
/** The batch gathering jobs on `bars`: a new one, once the last is sent, for other bars. */
|
|
62
|
+
private batchFor;
|
|
63
|
+
/** Send the jobs gathered, those not cancelled meanwhile. */
|
|
64
|
+
private sendBatch;
|
|
65
|
+
/** Drop jobs no longer wanted: their replies are ignored, and the worker skips those still queued. */
|
|
66
|
+
cancel(requestIds: readonly number[]): void;
|
|
67
|
+
/** Stop the worker. Jobs still out are dropped without an answer. */
|
|
68
|
+
terminate(): void;
|
|
69
|
+
private attach;
|
|
70
|
+
private send;
|
|
71
|
+
private receive;
|
|
72
|
+
/**
|
|
73
|
+
* Make the reply an output a slice of bars a task (`DECODE_SLICE_BARS`),
|
|
74
|
+
* then hand it over. A job cancelled meanwhile is dropped where it is.
|
|
75
|
+
*/
|
|
76
|
+
private decode;
|
|
77
|
+
private fail;
|
|
78
|
+
private detach;
|
|
79
|
+
}
|
|
80
|
+
/** A chart's hold on the page's worker; `release` it when the chart goes. */
|
|
81
|
+
export interface IndicatorWorkerLease {
|
|
82
|
+
readonly client: IndicatorWorkerClient;
|
|
83
|
+
release(): void;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* One indicator worker for the whole page, shared by every chart on it and
|
|
87
|
+
* stopped when the last one lets go. A worker that failed stays failed until
|
|
88
|
+
* then, so a page whose policy refuses workers does not try for each chart.
|
|
89
|
+
*/
|
|
90
|
+
export declare class IndicatorWorkerPool {
|
|
91
|
+
private readonly spawn;
|
|
92
|
+
private client;
|
|
93
|
+
private holders;
|
|
94
|
+
constructor(spawn?: WorkerSpawn);
|
|
95
|
+
acquire(): IndicatorWorkerLease;
|
|
96
|
+
}
|
|
97
|
+
/** The page's pool, which charts with `indicatorWorker: 'auto'` share. */
|
|
98
|
+
export declare const indicatorWorkerPool: IndicatorWorkerPool;
|
|
99
|
+
//# sourceMappingURL=IndicatorWorkerPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndicatorWorkerPool.d.ts","sourceRoot":"","sources":["../../../src/indicators/worker/IndicatorWorkerPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAI3D,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAI9D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC,8GAA8G;AAC9G,MAAM,MAAM,WAAW,GAAG,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEjE,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB,2EAA2E;IAC3E,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,8FAA8F;AAC9F,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,KAAK,IAAI,CAAC;AAoBnE;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,MAAM,CAA2B;IACzC,oEAAoE;IACpE,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,IAAI,CAA8B;IAC1C,kDAAkD;IAClD,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoF;IAC9G,OAAO,CAAC,QAAQ,CAAC,OAAO,CACuD;gBAEnE,KAAK,EAAE,WAAW;IAY9B,8EAA8E;IAC9E,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,oDAAoD;IACpD,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,+EAA+E;IAC/E,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;IAS1D,4FAA4F;IAC5F,OAAO,CAAC,QAAQ;IAWhB,6DAA6D;IAC7D,OAAO,CAAC,SAAS;IAQjB,sGAAsG;IACtG,MAAM,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAO3C,qEAAqE;IACrE,SAAS,IAAI,IAAI;IAQjB,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,OAAO;IAgBf;;;OAGG;IACH,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,MAAM;CASf;AAMD,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAIlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,OAAO,CAAK;gBAES,KAAK,GAAE,WAAkC;IAEtE,OAAO,IAAI,oBAAoB;CAiBhC;AAED,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { DataSeries, IndicatorOutput, IndicatorValue, OHLCBar } from '@tradecanvas/commons';
|
|
2
|
+
/**
|
|
3
|
+
* Bars as six columns of numbers. A worker is handed the columns' buffers
|
|
4
|
+
* (transferred, not copied), which costs nothing however many bars there
|
|
5
|
+
* are; an array of bar objects would be copied object by object.
|
|
6
|
+
*/
|
|
7
|
+
export interface BarColumns {
|
|
8
|
+
/** Each bar's time, in milliseconds. */
|
|
9
|
+
time: Float64Array;
|
|
10
|
+
open: Float64Array;
|
|
11
|
+
high: Float64Array;
|
|
12
|
+
low: Float64Array;
|
|
13
|
+
close: Float64Array;
|
|
14
|
+
volume: Float64Array;
|
|
15
|
+
}
|
|
16
|
+
/** The bars as columns. */
|
|
17
|
+
export declare function barsToColumns(bars: DataSeries): BarColumns;
|
|
18
|
+
/** The bars the columns hold, as objects again. */
|
|
19
|
+
export declare function columnsToBars(columns: BarColumns): OHLCBar[];
|
|
20
|
+
/** The buffers to transfer with the columns. */
|
|
21
|
+
export declare function barColumnBuffers(columns: BarColumns): ArrayBuffer[];
|
|
22
|
+
/**
|
|
23
|
+
* An indicator's output as columns: one `Float64Array` per line key, NaN
|
|
24
|
+
* where a point has no value for it. Transferred back from a worker, these
|
|
25
|
+
* cost nothing to pass, where a structured clone of the point objects would
|
|
26
|
+
* be rebuilt one by one on the receiving thread.
|
|
27
|
+
*/
|
|
28
|
+
export interface OutputColumns {
|
|
29
|
+
/** 1 where `series` has a point, 0 where it is null. Null when the output had no `series`. */
|
|
30
|
+
present: Uint8Array | null;
|
|
31
|
+
/** The keys found in the series' points, in the order first seen. */
|
|
32
|
+
keys: string[];
|
|
33
|
+
/** One column per key, in the order of `keys`. */
|
|
34
|
+
columns: Float64Array[];
|
|
35
|
+
/**
|
|
36
|
+
* Per key, 1 where a point holds NaN itself (not no value); null for a
|
|
37
|
+
* key that never does, which is nearly every one.
|
|
38
|
+
*/
|
|
39
|
+
nans: (Uint8Array | null)[];
|
|
40
|
+
/**
|
|
41
|
+
* The output's `values` when they are not simply the series by bar time;
|
|
42
|
+
* null when they are, and they are rebuilt from it.
|
|
43
|
+
*/
|
|
44
|
+
values: Map<number, IndicatorValue> | null;
|
|
45
|
+
meta?: Record<string, unknown>;
|
|
46
|
+
/** What the plugin's `update` reads beside the output (`WorkerStateful`), when it keeps anything. */
|
|
47
|
+
state?: unknown;
|
|
48
|
+
}
|
|
49
|
+
/** The output as columns over the bars at `time`, for a worker to send back. */
|
|
50
|
+
export declare function outputToColumns(output: IndicatorOutput, time: Float64Array): OutputColumns;
|
|
51
|
+
/**
|
|
52
|
+
* Makes an output from its columns a slice of bars at a time, so a long
|
|
53
|
+
* one can be rebuilt over several tasks, the page answering in between.
|
|
54
|
+
* `columnsToOutput` does it in one go.
|
|
55
|
+
*/
|
|
56
|
+
export declare class OutputDecoder {
|
|
57
|
+
private readonly columns;
|
|
58
|
+
private readonly time;
|
|
59
|
+
private next;
|
|
60
|
+
private readonly series;
|
|
61
|
+
private readonly full;
|
|
62
|
+
/** The times and points of `values`, in order, when they are the series'. */
|
|
63
|
+
private readonly keys;
|
|
64
|
+
private readonly points;
|
|
65
|
+
constructor(columns: OutputColumns, time: ArrayLike<number>);
|
|
66
|
+
/** Rebuild up to `count` more bars; true once every bar is done. */
|
|
67
|
+
step(count: number): boolean;
|
|
68
|
+
/** The output, once `step` said every bar is done. */
|
|
69
|
+
output(): IndicatorOutput;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The output the columns hold: its series of points, and `values` by the
|
|
73
|
+
* times of the bars it was computed on (`time`) sharing them.
|
|
74
|
+
*/
|
|
75
|
+
export declare function columnsToOutput(columns: OutputColumns, time: ArrayLike<number>): IndicatorOutput;
|
|
76
|
+
/** The buffers to transfer with the output's columns. */
|
|
77
|
+
export declare function outputColumnBuffers(columns: OutputColumns): ArrayBuffer[];
|
|
78
|
+
//# sourceMappingURL=columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../src/indicators/worker/columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGjG;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,YAAY,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,2BAA2B;AAC3B,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAoB1D;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,EAAE,CAO5D;AAED,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,EAAE,CAGnE;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,8FAA8F;IAC9F,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,qEAAqE;IACrE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,kDAAkD;IAClD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB;;;OAGG;IACH,IAAI,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5B;;;OAGG;IACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,qGAAqG;IACrG,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkCD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,GAAG,aAAa,CAqB1F;AAsCD;;;;GAIG;AACH,qBAAa,aAAa;IAQZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAiB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAP1E,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;gBAElB,OAAO,EAAE,aAAa,EAAmB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;IAK7F,oEAAoE;IACpE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAqB5B,sDAAsD;IACtD,MAAM,IAAI,eAAe;CAO1B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,eAAe,CAIhG;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,EAAE,CAKzE"}
|