@tradejs/core 1.0.12 → 2.0.1
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/LICENSE +21 -0
- package/README.md +7 -1
- package/dist/{chunk-EQEIRB6P.mjs → chunk-2OUA2S6U.mjs} +56 -0
- package/dist/indicators.d.mts +3 -1
- package/dist/indicators.d.ts +3 -1
- package/dist/indicators.js +58 -0
- package/dist/indicators.mjs +5 -1
- package/dist/strategies.js +6 -0
- package/dist/strategies.mjs +1 -1
- package/package.json +3 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 aleksnick
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
# @tradejs/core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MIT-licensed browser-safe public API for TradeJS: config, strategy authoring helpers, indicators, figures, math, and shared utilities.
|
|
4
4
|
|
|
5
5
|
- Homepage: https://tradejs.dev
|
|
6
6
|
- Documentation: https://docs.tradejs.dev
|
|
7
7
|
- Quickstart: https://docs.tradejs.dev/getting-started/quickstart
|
|
8
8
|
- Core API docs: https://docs.tradejs.dev/api/framework
|
|
9
9
|
|
|
10
|
+
## License
|
|
11
|
+
|
|
12
|
+
This package remains MIT-licensed. Some TradeJS runtime dependencies use the
|
|
13
|
+
Business Source License 1.1; see the
|
|
14
|
+
[TradeJS licensing policy](https://github.com/TradeJS-Dev/TradeJS/blob/stable/LICENSING.md).
|
|
15
|
+
|
|
10
16
|
## Install
|
|
11
17
|
|
|
12
18
|
```bash
|
|
@@ -130,6 +130,14 @@ var toFiniteNumber = (value, fallback = 0) => {
|
|
|
130
130
|
};
|
|
131
131
|
|
|
132
132
|
// src/utils/derivativesCoinalyze.ts
|
|
133
|
+
var DERIVATIVES_INTERVAL_MS = {
|
|
134
|
+
"15m": 15 * 60 * 1e3,
|
|
135
|
+
"1h": 60 * 60 * 1e3
|
|
136
|
+
};
|
|
137
|
+
var getLastClosedDerivativesBarStartMs = (timestamp, interval) => {
|
|
138
|
+
const intervalMs = DERIVATIVES_INTERVAL_MS[interval];
|
|
139
|
+
return Math.floor(timestamp / intervalMs) * intervalMs - intervalMs;
|
|
140
|
+
};
|
|
133
141
|
var normalizeCoinalyzeSymbols = (input) => String(input ?? "").split(",").map((item) => item.trim().toUpperCase()).filter(Boolean);
|
|
134
142
|
var normalizeDerivativesIntervals = (input) => parseDerivativesIntervals(input);
|
|
135
143
|
var toCoinalyzeTimestampMs = (value) => {
|
|
@@ -210,6 +218,52 @@ var coinalyzePointsToRows = (points, interval, source) => points.map((point) =>
|
|
|
210
218
|
liqTotal: point.liqTotal ?? null,
|
|
211
219
|
source
|
|
212
220
|
}));
|
|
221
|
+
var sumAvailable = (values) => {
|
|
222
|
+
const available = values.filter(
|
|
223
|
+
(value) => typeof value === "number" && Number.isFinite(value)
|
|
224
|
+
);
|
|
225
|
+
return available.length ? available.reduce((total, value) => total + value, 0) : null;
|
|
226
|
+
};
|
|
227
|
+
var getLiquidationTotal = (row) => typeof row.liqTotal === "number" && Number.isFinite(row.liqTotal) ? row.liqTotal : sumAvailable([row.liqLong, row.liqShort]);
|
|
228
|
+
var deriveCoinalyzeHourlyRowsFrom15m = (rows) => {
|
|
229
|
+
const quarterHourMs = DERIVATIVES_INTERVAL_MS["15m"];
|
|
230
|
+
const hourMs = DERIVATIVES_INTERVAL_MS["1h"];
|
|
231
|
+
const rowsByHour = /* @__PURE__ */ new Map();
|
|
232
|
+
for (const row of rows ?? []) {
|
|
233
|
+
if (row.interval !== "15m") continue;
|
|
234
|
+
const timestamp = row.ts.getTime();
|
|
235
|
+
if (!Number.isFinite(timestamp) || timestamp % quarterHourMs !== 0) {
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
const hourStart = Math.floor(timestamp / hourMs) * hourMs;
|
|
239
|
+
const hourRows = rowsByHour.get(hourStart) ?? /* @__PURE__ */ new Map();
|
|
240
|
+
hourRows.set(timestamp, row);
|
|
241
|
+
rowsByHour.set(hourStart, hourRows);
|
|
242
|
+
}
|
|
243
|
+
const hourlyRows = [];
|
|
244
|
+
for (const [hourStart, hourRows] of [...rowsByHour.entries()].sort(
|
|
245
|
+
([left], [right]) => left - right
|
|
246
|
+
)) {
|
|
247
|
+
const expectedRows = [0, 1, 2, 3].map(
|
|
248
|
+
(offset) => hourRows.get(hourStart + offset * quarterHourMs)
|
|
249
|
+
);
|
|
250
|
+
if (expectedRows.some((row) => row == null)) continue;
|
|
251
|
+
const completeRows = expectedRows;
|
|
252
|
+
const latest = completeRows[completeRows.length - 1];
|
|
253
|
+
hourlyRows.push({
|
|
254
|
+
symbol: latest.symbol,
|
|
255
|
+
interval: "1h",
|
|
256
|
+
ts: new Date(hourStart),
|
|
257
|
+
openInterest: latest.openInterest ?? null,
|
|
258
|
+
fundingRate: latest.fundingRate ?? null,
|
|
259
|
+
liqLong: sumAvailable(completeRows.map((row) => row.liqLong)),
|
|
260
|
+
liqShort: sumAvailable(completeRows.map((row) => row.liqShort)),
|
|
261
|
+
liqTotal: sumAvailable(completeRows.map(getLiquidationTotal)),
|
|
262
|
+
source: latest.source ?? null
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
return hourlyRows;
|
|
266
|
+
};
|
|
213
267
|
|
|
214
268
|
// src/utils/derivativesContext.ts
|
|
215
269
|
var HOUR_MS = 60 * 60 * 1e3;
|
|
@@ -11814,6 +11868,7 @@ export {
|
|
|
11814
11868
|
buildReturnsFromCandles,
|
|
11815
11869
|
calculatePearsonCorrelation,
|
|
11816
11870
|
calculateCoinBtcCorrelation,
|
|
11871
|
+
getLastClosedDerivativesBarStartMs,
|
|
11817
11872
|
normalizeCoinalyzeSymbols,
|
|
11818
11873
|
normalizeDerivativesIntervals,
|
|
11819
11874
|
toCoinalyzeTimestampMs,
|
|
@@ -11821,6 +11876,7 @@ export {
|
|
|
11821
11876
|
toArrayData,
|
|
11822
11877
|
mergeCoinalyzeMetrics,
|
|
11823
11878
|
coinalyzePointsToRows,
|
|
11879
|
+
deriveCoinalyzeHourlyRowsFrom15m,
|
|
11824
11880
|
buildDerivativesContext,
|
|
11825
11881
|
buildMlCandleIndicators,
|
|
11826
11882
|
registerIndicatorEntries,
|
package/dist/indicators.d.mts
CHANGED
|
@@ -37,6 +37,7 @@ type CoinalyzePoint = {
|
|
|
37
37
|
liqShort?: number | null;
|
|
38
38
|
liqTotal?: number | null;
|
|
39
39
|
};
|
|
40
|
+
declare const getLastClosedDerivativesBarStartMs: (timestamp: number, interval: DerivativesInterval) => number;
|
|
40
41
|
declare const normalizeCoinalyzeSymbols: (input: unknown) => string[];
|
|
41
42
|
declare const normalizeDerivativesIntervals: (input: unknown) => DerivativesInterval[];
|
|
42
43
|
declare const toCoinalyzeTimestampMs: (value: unknown) => number | null;
|
|
@@ -49,6 +50,7 @@ declare const mergeCoinalyzeMetrics: (params: {
|
|
|
49
50
|
liqRaw: unknown;
|
|
50
51
|
}) => CoinalyzePoint[];
|
|
51
52
|
declare const coinalyzePointsToRows: (points: CoinalyzePoint[], interval: DerivativesInterval, source: string) => DerivativesRow[];
|
|
53
|
+
declare const deriveCoinalyzeHourlyRowsFrom15m: (rows: DerivativesRow[] | undefined) => DerivativesRow[];
|
|
52
54
|
|
|
53
55
|
declare const buildDerivativesContext: (params: {
|
|
54
56
|
symbol: string;
|
|
@@ -93,4 +95,4 @@ type TrendlineEngine = {
|
|
|
93
95
|
};
|
|
94
96
|
declare const createTrendlineEngine: (initialCandles: KLineData[], options: TrendLineOptions) => TrendlineEngine;
|
|
95
97
|
|
|
96
|
-
export { type CoinalyzePoint, type IndicatorRendererDescriptor, type TrendlineEngine, alignSortedCandlesByTimestamp, buildDerivativesContext, buildReturnsFromCandles, calculateCoinBtcCorrelation, calculatePearsonCorrelation, coinalyzePointsToRows, createTrendlineEngine, detectRawSupportResistance, getPluginIndicatorCatalog, getPluginIndicatorRenderers, getRegisteredIndicatorEntries, getSupportResistanceLevels, mergeCoinalyzeMetrics, normalizeCoinalyzeSymbols, normalizeDerivativesIntervals, registerIndicatorEntries, resetIndicatorRegistryCache, toArrayData, toCoinalyzeTimestampMs, toFiniteNumber };
|
|
98
|
+
export { type CoinalyzePoint, type IndicatorRendererDescriptor, type TrendlineEngine, alignSortedCandlesByTimestamp, buildDerivativesContext, buildReturnsFromCandles, calculateCoinBtcCorrelation, calculatePearsonCorrelation, coinalyzePointsToRows, createTrendlineEngine, deriveCoinalyzeHourlyRowsFrom15m, detectRawSupportResistance, getLastClosedDerivativesBarStartMs, getPluginIndicatorCatalog, getPluginIndicatorRenderers, getRegisteredIndicatorEntries, getSupportResistanceLevels, mergeCoinalyzeMetrics, normalizeCoinalyzeSymbols, normalizeDerivativesIntervals, registerIndicatorEntries, resetIndicatorRegistryCache, toArrayData, toCoinalyzeTimestampMs, toFiniteNumber };
|
package/dist/indicators.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ type CoinalyzePoint = {
|
|
|
37
37
|
liqShort?: number | null;
|
|
38
38
|
liqTotal?: number | null;
|
|
39
39
|
};
|
|
40
|
+
declare const getLastClosedDerivativesBarStartMs: (timestamp: number, interval: DerivativesInterval) => number;
|
|
40
41
|
declare const normalizeCoinalyzeSymbols: (input: unknown) => string[];
|
|
41
42
|
declare const normalizeDerivativesIntervals: (input: unknown) => DerivativesInterval[];
|
|
42
43
|
declare const toCoinalyzeTimestampMs: (value: unknown) => number | null;
|
|
@@ -49,6 +50,7 @@ declare const mergeCoinalyzeMetrics: (params: {
|
|
|
49
50
|
liqRaw: unknown;
|
|
50
51
|
}) => CoinalyzePoint[];
|
|
51
52
|
declare const coinalyzePointsToRows: (points: CoinalyzePoint[], interval: DerivativesInterval, source: string) => DerivativesRow[];
|
|
53
|
+
declare const deriveCoinalyzeHourlyRowsFrom15m: (rows: DerivativesRow[] | undefined) => DerivativesRow[];
|
|
52
54
|
|
|
53
55
|
declare const buildDerivativesContext: (params: {
|
|
54
56
|
symbol: string;
|
|
@@ -93,4 +95,4 @@ type TrendlineEngine = {
|
|
|
93
95
|
};
|
|
94
96
|
declare const createTrendlineEngine: (initialCandles: KLineData[], options: TrendLineOptions) => TrendlineEngine;
|
|
95
97
|
|
|
96
|
-
export { type CoinalyzePoint, type IndicatorRendererDescriptor, type TrendlineEngine, alignSortedCandlesByTimestamp, buildDerivativesContext, buildReturnsFromCandles, calculateCoinBtcCorrelation, calculatePearsonCorrelation, coinalyzePointsToRows, createTrendlineEngine, detectRawSupportResistance, getPluginIndicatorCatalog, getPluginIndicatorRenderers, getRegisteredIndicatorEntries, getSupportResistanceLevels, mergeCoinalyzeMetrics, normalizeCoinalyzeSymbols, normalizeDerivativesIntervals, registerIndicatorEntries, resetIndicatorRegistryCache, toArrayData, toCoinalyzeTimestampMs, toFiniteNumber };
|
|
98
|
+
export { type CoinalyzePoint, type IndicatorRendererDescriptor, type TrendlineEngine, alignSortedCandlesByTimestamp, buildDerivativesContext, buildReturnsFromCandles, calculateCoinBtcCorrelation, calculatePearsonCorrelation, coinalyzePointsToRows, createTrendlineEngine, deriveCoinalyzeHourlyRowsFrom15m, detectRawSupportResistance, getLastClosedDerivativesBarStartMs, getPluginIndicatorCatalog, getPluginIndicatorRenderers, getRegisteredIndicatorEntries, getSupportResistanceLevels, mergeCoinalyzeMetrics, normalizeCoinalyzeSymbols, normalizeDerivativesIntervals, registerIndicatorEntries, resetIndicatorRegistryCache, toArrayData, toCoinalyzeTimestampMs, toFiniteNumber };
|
package/dist/indicators.js
CHANGED
|
@@ -47,7 +47,9 @@ __export(indicators_exports, {
|
|
|
47
47
|
createSerializableSpreadSmoother: () => createSerializableSpreadSmoother,
|
|
48
48
|
createSpreadSmoother: () => createSpreadSmoother,
|
|
49
49
|
createTrendlineEngine: () => createTrendlineEngine,
|
|
50
|
+
deriveCoinalyzeHourlyRowsFrom15m: () => deriveCoinalyzeHourlyRowsFrom15m,
|
|
50
51
|
detectRawSupportResistance: () => detectRawSupportResistance,
|
|
52
|
+
getLastClosedDerivativesBarStartMs: () => getLastClosedDerivativesBarStartMs,
|
|
51
53
|
getPluginIndicatorCatalog: () => getPluginIndicatorCatalog,
|
|
52
54
|
getPluginIndicatorRenderers: () => getPluginIndicatorRenderers,
|
|
53
55
|
getRegisteredIndicatorEntries: () => getRegisteredIndicatorEntries,
|
|
@@ -188,6 +190,14 @@ var toFiniteNumber = (value, fallback = 0) => {
|
|
|
188
190
|
};
|
|
189
191
|
|
|
190
192
|
// src/utils/derivativesCoinalyze.ts
|
|
193
|
+
var DERIVATIVES_INTERVAL_MS = {
|
|
194
|
+
"15m": 15 * 60 * 1e3,
|
|
195
|
+
"1h": 60 * 60 * 1e3
|
|
196
|
+
};
|
|
197
|
+
var getLastClosedDerivativesBarStartMs = (timestamp, interval) => {
|
|
198
|
+
const intervalMs = DERIVATIVES_INTERVAL_MS[interval];
|
|
199
|
+
return Math.floor(timestamp / intervalMs) * intervalMs - intervalMs;
|
|
200
|
+
};
|
|
191
201
|
var normalizeCoinalyzeSymbols = (input) => String(input ?? "").split(",").map((item) => item.trim().toUpperCase()).filter(Boolean);
|
|
192
202
|
var normalizeDerivativesIntervals = (input) => parseDerivativesIntervals(input);
|
|
193
203
|
var toCoinalyzeTimestampMs = (value) => {
|
|
@@ -268,6 +278,52 @@ var coinalyzePointsToRows = (points, interval, source) => points.map((point) =>
|
|
|
268
278
|
liqTotal: point.liqTotal ?? null,
|
|
269
279
|
source
|
|
270
280
|
}));
|
|
281
|
+
var sumAvailable = (values) => {
|
|
282
|
+
const available = values.filter(
|
|
283
|
+
(value) => typeof value === "number" && Number.isFinite(value)
|
|
284
|
+
);
|
|
285
|
+
return available.length ? available.reduce((total, value) => total + value, 0) : null;
|
|
286
|
+
};
|
|
287
|
+
var getLiquidationTotal = (row) => typeof row.liqTotal === "number" && Number.isFinite(row.liqTotal) ? row.liqTotal : sumAvailable([row.liqLong, row.liqShort]);
|
|
288
|
+
var deriveCoinalyzeHourlyRowsFrom15m = (rows) => {
|
|
289
|
+
const quarterHourMs = DERIVATIVES_INTERVAL_MS["15m"];
|
|
290
|
+
const hourMs = DERIVATIVES_INTERVAL_MS["1h"];
|
|
291
|
+
const rowsByHour = /* @__PURE__ */ new Map();
|
|
292
|
+
for (const row of rows ?? []) {
|
|
293
|
+
if (row.interval !== "15m") continue;
|
|
294
|
+
const timestamp = row.ts.getTime();
|
|
295
|
+
if (!Number.isFinite(timestamp) || timestamp % quarterHourMs !== 0) {
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
const hourStart = Math.floor(timestamp / hourMs) * hourMs;
|
|
299
|
+
const hourRows = rowsByHour.get(hourStart) ?? /* @__PURE__ */ new Map();
|
|
300
|
+
hourRows.set(timestamp, row);
|
|
301
|
+
rowsByHour.set(hourStart, hourRows);
|
|
302
|
+
}
|
|
303
|
+
const hourlyRows = [];
|
|
304
|
+
for (const [hourStart, hourRows] of [...rowsByHour.entries()].sort(
|
|
305
|
+
([left], [right]) => left - right
|
|
306
|
+
)) {
|
|
307
|
+
const expectedRows = [0, 1, 2, 3].map(
|
|
308
|
+
(offset) => hourRows.get(hourStart + offset * quarterHourMs)
|
|
309
|
+
);
|
|
310
|
+
if (expectedRows.some((row) => row == null)) continue;
|
|
311
|
+
const completeRows = expectedRows;
|
|
312
|
+
const latest = completeRows[completeRows.length - 1];
|
|
313
|
+
hourlyRows.push({
|
|
314
|
+
symbol: latest.symbol,
|
|
315
|
+
interval: "1h",
|
|
316
|
+
ts: new Date(hourStart),
|
|
317
|
+
openInterest: latest.openInterest ?? null,
|
|
318
|
+
fundingRate: latest.fundingRate ?? null,
|
|
319
|
+
liqLong: sumAvailable(completeRows.map((row) => row.liqLong)),
|
|
320
|
+
liqShort: sumAvailable(completeRows.map((row) => row.liqShort)),
|
|
321
|
+
liqTotal: sumAvailable(completeRows.map(getLiquidationTotal)),
|
|
322
|
+
source: latest.source ?? null
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
return hourlyRows;
|
|
326
|
+
};
|
|
271
327
|
|
|
272
328
|
// src/utils/derivativesContext.ts
|
|
273
329
|
var HOUR_MS = 60 * 60 * 1e3;
|
|
@@ -11942,7 +11998,9 @@ var createTrendlineEngine = (initialCandles, options) => {
|
|
|
11942
11998
|
createSerializableSpreadSmoother,
|
|
11943
11999
|
createSpreadSmoother,
|
|
11944
12000
|
createTrendlineEngine,
|
|
12001
|
+
deriveCoinalyzeHourlyRowsFrom15m,
|
|
11945
12002
|
detectRawSupportResistance,
|
|
12003
|
+
getLastClosedDerivativesBarStartMs,
|
|
11946
12004
|
getPluginIndicatorCatalog,
|
|
11947
12005
|
getPluginIndicatorRenderers,
|
|
11948
12006
|
getRegisteredIndicatorEntries,
|
package/dist/indicators.mjs
CHANGED
|
@@ -16,7 +16,9 @@ import {
|
|
|
16
16
|
createSerializableSpreadSmoother,
|
|
17
17
|
createSpreadSmoother,
|
|
18
18
|
createTrendlineEngine,
|
|
19
|
+
deriveCoinalyzeHourlyRowsFrom15m,
|
|
19
20
|
detectRawSupportResistance,
|
|
21
|
+
getLastClosedDerivativesBarStartMs,
|
|
20
22
|
getPluginIndicatorCatalog,
|
|
21
23
|
getPluginIndicatorRenderers,
|
|
22
24
|
getRegisteredIndicatorEntries,
|
|
@@ -33,7 +35,7 @@ import {
|
|
|
33
35
|
toArrayData,
|
|
34
36
|
toCoinalyzeTimestampMs,
|
|
35
37
|
toFiniteNumber
|
|
36
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-2OUA2S6U.mjs";
|
|
37
39
|
import "./chunk-AYC2QVKI.mjs";
|
|
38
40
|
import "./chunk-M7QGVZ3J.mjs";
|
|
39
41
|
import "./chunk-BOETNABM.mjs";
|
|
@@ -56,7 +58,9 @@ export {
|
|
|
56
58
|
createSerializableSpreadSmoother,
|
|
57
59
|
createSpreadSmoother,
|
|
58
60
|
createTrendlineEngine,
|
|
61
|
+
deriveCoinalyzeHourlyRowsFrom15m,
|
|
59
62
|
detectRawSupportResistance,
|
|
63
|
+
getLastClosedDerivativesBarStartMs,
|
|
60
64
|
getPluginIndicatorCatalog,
|
|
61
65
|
getPluginIndicatorRenderers,
|
|
62
66
|
getRegisteredIndicatorEntries,
|
package/dist/strategies.js
CHANGED
|
@@ -151,6 +151,12 @@ var calculateCoinBtcCorrelation = (coinCandles, btcCandles) => {
|
|
|
151
151
|
};
|
|
152
152
|
};
|
|
153
153
|
|
|
154
|
+
// src/utils/derivativesCoinalyze.ts
|
|
155
|
+
var DERIVATIVES_INTERVAL_MS = {
|
|
156
|
+
"15m": 15 * 60 * 1e3,
|
|
157
|
+
"1h": 60 * 60 * 1e3
|
|
158
|
+
};
|
|
159
|
+
|
|
154
160
|
// src/utils/derivativesContext.ts
|
|
155
161
|
var HOUR_MS = 60 * 60 * 1e3;
|
|
156
162
|
var DEFAULT_STALE_AFTER_MS = {
|
package/dist/strategies.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tradejs/core",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "MIT-licensed browser-safe API for TradeJS config, strategy authoring, figures, and shared helpers.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tradejs",
|
|
7
7
|
"trading",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
102
|
"dependencies": {
|
|
103
|
-
"@tradejs/types": "^
|
|
103
|
+
"@tradejs/types": "^2.0.1",
|
|
104
104
|
"date-fns": "^3.3.1",
|
|
105
105
|
"fast-technical-indicators": "^1.1.4",
|
|
106
106
|
"klinecharts": "10.0.0-alpha9",
|