@tradejs/node 1.0.2 → 1.0.4
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/dist/{ai-NNJ3RLLL.mjs → ai-G7ATN4YL.mjs} +3 -3
- package/dist/backtest.d.mts +1 -1
- package/dist/backtest.d.ts +1 -1
- package/dist/backtest.js +253 -137
- package/dist/backtest.mjs +52 -25
- package/dist/{chunk-OB4CSYDJ.mjs → chunk-7ICOZAKA.mjs} +0 -4
- package/dist/chunk-CIY64D57.mjs +271 -0
- package/dist/{chunk-ZIMX3JX2.mjs → chunk-LMAKIC3C.mjs} +1 -1
- package/dist/{chunk-DE7ADBIR.mjs → chunk-P2ZUWONT.mjs} +30 -2
- package/dist/{chunk-PXJJPAQT.mjs → chunk-RBE4PZER.mjs} +1 -1
- package/dist/chunk-ZY6ULOWK.mjs +246 -0
- package/dist/cli.js +140 -102
- package/dist/cli.mjs +26 -18
- package/dist/connectors.d.mts +9 -9
- package/dist/connectors.d.ts +9 -9
- package/dist/connectors.js +144 -74
- package/dist/connectors.mjs +2 -2
- package/dist/pine.d.mts +0 -1
- package/dist/pine.d.ts +0 -1
- package/dist/pine.js +0 -4
- package/dist/pine.mjs +1 -1
- package/dist/registry.d.mts +10 -10
- package/dist/registry.d.ts +10 -10
- package/dist/registry.js +156 -85
- package/dist/registry.mjs +2 -2
- package/dist/strategies.js +452 -166
- package/dist/strategies.mjs +300 -85
- package/package.json +6 -5
- package/dist/chunk-E2QNOA5M.mjs +0 -227
- package/dist/chunk-MHCXPD2B.mjs +0 -201
package/dist/connectors.js
CHANGED
|
@@ -64,6 +64,7 @@ var TS_MODULE_RE = /\.(cts|mts|ts)$/i;
|
|
|
64
64
|
var cachedByCwd = /* @__PURE__ */ new Map();
|
|
65
65
|
var announcedConfigFile = /* @__PURE__ */ new Set();
|
|
66
66
|
var tsNodeRegistered = false;
|
|
67
|
+
var tsconfigPathsRegisteredByCwd = /* @__PURE__ */ new Set();
|
|
67
68
|
var getTradejsProjectCwd = (cwd) => {
|
|
68
69
|
const explicit = String(cwd ?? "").trim();
|
|
69
70
|
if (explicit) {
|
|
@@ -105,6 +106,28 @@ var ensureTsNodeRegistered = async () => {
|
|
|
105
106
|
});
|
|
106
107
|
tsNodeRegistered = true;
|
|
107
108
|
};
|
|
109
|
+
var ensureTsconfigPathsRegistered = async (cwd = getTradejsProjectCwd()) => {
|
|
110
|
+
const projectRoot = getTradejsProjectCwd(cwd);
|
|
111
|
+
if (tsconfigPathsRegisteredByCwd.has(projectRoot)) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const tsconfigPathsModule = await import("tsconfig-paths");
|
|
115
|
+
const loadConfig = tsconfigPathsModule.loadConfig;
|
|
116
|
+
const register = tsconfigPathsModule.register;
|
|
117
|
+
if (typeof loadConfig !== "function" || typeof register !== "function") {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const loadedConfig = loadConfig(projectRoot);
|
|
121
|
+
if (loadedConfig.resultType !== "success") {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
register({
|
|
125
|
+
baseUrl: loadedConfig.absoluteBaseUrl,
|
|
126
|
+
paths: loadedConfig.paths,
|
|
127
|
+
addMatchAll: false
|
|
128
|
+
});
|
|
129
|
+
tsconfigPathsRegisteredByCwd.add(projectRoot);
|
|
130
|
+
};
|
|
108
131
|
var toImportSpecifier = (moduleName) => {
|
|
109
132
|
if (moduleName.startsWith("file://")) {
|
|
110
133
|
return moduleName;
|
|
@@ -132,6 +155,7 @@ var importConfigFile = async (configFilePath) => {
|
|
|
132
155
|
if (ext === ".ts" || ext === ".mts") {
|
|
133
156
|
const requireFn = getRequireFn(import_path.default.dirname(configFilePath));
|
|
134
157
|
await ensureTsNodeRegistered();
|
|
158
|
+
await ensureTsconfigPathsRegistered(import_path.default.dirname(configFilePath));
|
|
135
159
|
return requireFn(configFilePath);
|
|
136
160
|
}
|
|
137
161
|
return import(
|
|
@@ -139,7 +163,7 @@ var importConfigFile = async (configFilePath) => {
|
|
|
139
163
|
configFileUrl
|
|
140
164
|
);
|
|
141
165
|
};
|
|
142
|
-
var importTradejsModule = async (moduleName) => {
|
|
166
|
+
var importTradejsModule = async (moduleName, cwd = getTradejsProjectCwd()) => {
|
|
143
167
|
const normalized = String(moduleName ?? "").trim();
|
|
144
168
|
if (!normalized) {
|
|
145
169
|
return {};
|
|
@@ -153,13 +177,15 @@ var importTradejsModule = async (moduleName) => {
|
|
|
153
177
|
}
|
|
154
178
|
}
|
|
155
179
|
const requireFn = getRequireFn(
|
|
156
|
-
import_path.default.isAbsolute(modulePath) ? import_path.default.dirname(modulePath) :
|
|
180
|
+
import_path.default.isAbsolute(modulePath) ? import_path.default.dirname(modulePath) : cwd
|
|
157
181
|
);
|
|
158
182
|
if (isTsModulePath(modulePath)) {
|
|
159
183
|
await ensureTsNodeRegistered();
|
|
184
|
+
await ensureTsconfigPathsRegistered(cwd);
|
|
160
185
|
return requireFn(modulePath);
|
|
161
186
|
}
|
|
162
187
|
if (isBareModuleSpecifier(normalized)) {
|
|
188
|
+
await ensureTsconfigPathsRegistered(cwd);
|
|
163
189
|
return requireFn(normalized);
|
|
164
190
|
}
|
|
165
191
|
try {
|
|
@@ -170,6 +196,7 @@ var importTradejsModule = async (moduleName) => {
|
|
|
170
196
|
} catch (error) {
|
|
171
197
|
if (isTsModulePath(modulePath)) {
|
|
172
198
|
await ensureTsNodeRegistered();
|
|
199
|
+
await ensureTsconfigPathsRegistered(cwd);
|
|
173
200
|
return requireFn(modulePath);
|
|
174
201
|
}
|
|
175
202
|
throw error;
|
|
@@ -247,9 +274,24 @@ var loadTradejsConfig = async (cwd = getTradejsProjectCwd()) => {
|
|
|
247
274
|
};
|
|
248
275
|
|
|
249
276
|
// src/connectorsRegistry.ts
|
|
250
|
-
var
|
|
251
|
-
|
|
252
|
-
|
|
277
|
+
var createConnectorRegistryState = () => ({
|
|
278
|
+
connectorCreators: /* @__PURE__ */ new Map(),
|
|
279
|
+
providerToConnectorName: /* @__PURE__ */ new Map(),
|
|
280
|
+
pluginsLoadPromise: null
|
|
281
|
+
});
|
|
282
|
+
var registryStateByProjectRoot = /* @__PURE__ */ new Map();
|
|
283
|
+
var getConnectorRegistryState = (cwd = getTradejsProjectCwd()) => {
|
|
284
|
+
const projectRoot = getTradejsProjectCwd(cwd);
|
|
285
|
+
let state = registryStateByProjectRoot.get(projectRoot);
|
|
286
|
+
if (!state) {
|
|
287
|
+
state = createConnectorRegistryState();
|
|
288
|
+
registryStateByProjectRoot.set(projectRoot, state);
|
|
289
|
+
}
|
|
290
|
+
return {
|
|
291
|
+
projectRoot,
|
|
292
|
+
state
|
|
293
|
+
};
|
|
294
|
+
};
|
|
253
295
|
var BUILTIN_CONNECTOR_NAMES = {
|
|
254
296
|
ByBit: "ByBit",
|
|
255
297
|
Binance: "Binance",
|
|
@@ -260,7 +302,7 @@ var normalizeProvider = (value) => String(value ?? "").trim().toLowerCase();
|
|
|
260
302
|
var toUniqueModules = (modules = []) => [
|
|
261
303
|
...new Set(modules.map((moduleName) => moduleName.trim()).filter(Boolean))
|
|
262
304
|
];
|
|
263
|
-
var findConnectorNameInsensitive = (name) => {
|
|
305
|
+
var findConnectorNameInsensitive = (name, connectorCreators) => {
|
|
264
306
|
const normalized = name.trim().toLowerCase();
|
|
265
307
|
if (!normalized) {
|
|
266
308
|
return null;
|
|
@@ -280,7 +322,7 @@ var normalizeProviders = (providers, connectorName) => {
|
|
|
280
322
|
}
|
|
281
323
|
return [normalizeProvider(connectorName)];
|
|
282
324
|
};
|
|
283
|
-
var registerProvider = (provider, connectorName, source) => {
|
|
325
|
+
var registerProvider = (provider, connectorName, source, providerToConnectorName) => {
|
|
284
326
|
const existing = providerToConnectorName.get(provider);
|
|
285
327
|
if (existing && existing !== connectorName) {
|
|
286
328
|
import_logger2.logger.warn(
|
|
@@ -293,7 +335,7 @@ var registerProvider = (provider, connectorName, source) => {
|
|
|
293
335
|
}
|
|
294
336
|
providerToConnectorName.set(provider, connectorName);
|
|
295
337
|
};
|
|
296
|
-
var registerEntry = (entry, source) => {
|
|
338
|
+
var registerEntry = (entry, source, state) => {
|
|
297
339
|
const connectorName = String(entry?.name ?? "").trim();
|
|
298
340
|
if (!connectorName) {
|
|
299
341
|
import_logger2.logger.warn("Skip connector entry without name from %s", source);
|
|
@@ -307,7 +349,10 @@ var registerEntry = (entry, source) => {
|
|
|
307
349
|
);
|
|
308
350
|
return;
|
|
309
351
|
}
|
|
310
|
-
const existingByName = findConnectorNameInsensitive(
|
|
352
|
+
const existingByName = findConnectorNameInsensitive(
|
|
353
|
+
connectorName,
|
|
354
|
+
state.connectorCreators
|
|
355
|
+
);
|
|
311
356
|
if (existingByName) {
|
|
312
357
|
import_logger2.logger.warn(
|
|
313
358
|
'Skip duplicate connector "%s" from %s: already registered as %s',
|
|
@@ -317,15 +362,20 @@ var registerEntry = (entry, source) => {
|
|
|
317
362
|
);
|
|
318
363
|
return;
|
|
319
364
|
}
|
|
320
|
-
connectorCreators.set(connectorName, entry.creator);
|
|
365
|
+
state.connectorCreators.set(connectorName, entry.creator);
|
|
321
366
|
const providers = normalizeProviders(entry.providers, connectorName);
|
|
322
367
|
for (const provider of providers) {
|
|
323
|
-
registerProvider(
|
|
368
|
+
registerProvider(
|
|
369
|
+
provider,
|
|
370
|
+
connectorName,
|
|
371
|
+
source,
|
|
372
|
+
state.providerToConnectorName
|
|
373
|
+
);
|
|
324
374
|
}
|
|
325
375
|
};
|
|
326
|
-
var registerEntries = (entries, source) => {
|
|
376
|
+
var registerEntries = (entries, source, state) => {
|
|
327
377
|
for (const entry of entries) {
|
|
328
|
-
registerEntry(entry, source);
|
|
378
|
+
registerEntry(entry, source, state);
|
|
329
379
|
}
|
|
330
380
|
};
|
|
331
381
|
var extractConnectorPluginDefinition = (moduleExport) => {
|
|
@@ -346,110 +396,130 @@ var extractConnectorPluginDefinition = (moduleExport) => {
|
|
|
346
396
|
}
|
|
347
397
|
return null;
|
|
348
398
|
};
|
|
349
|
-
var importConnectorPluginModule = async (moduleName) => {
|
|
399
|
+
var importConnectorPluginModule = async (moduleName, cwd = getTradejsProjectCwd()) => {
|
|
350
400
|
if (typeof importTradejsModule === "function") {
|
|
351
|
-
return importTradejsModule(moduleName);
|
|
401
|
+
return importTradejsModule(moduleName, cwd);
|
|
352
402
|
}
|
|
353
403
|
return import(
|
|
354
404
|
/* webpackIgnore: true */
|
|
355
405
|
moduleName
|
|
356
406
|
);
|
|
357
407
|
};
|
|
358
|
-
var ensureConnectorPluginsLoaded = async () => {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
408
|
+
var ensureConnectorPluginsLoaded = async (cwd = getTradejsProjectCwd()) => {
|
|
409
|
+
const { projectRoot, state } = getConnectorRegistryState(cwd);
|
|
410
|
+
if (!state.pluginsLoadPromise) {
|
|
411
|
+
state.pluginsLoadPromise = (async () => {
|
|
412
|
+
const config = await loadTradejsConfig(projectRoot);
|
|
413
|
+
const connectorModules = toUniqueModules(config.connectors);
|
|
414
|
+
if (!connectorModules.length) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
for (const moduleName of connectorModules) {
|
|
418
|
+
try {
|
|
419
|
+
const resolvedModuleName = resolvePluginModuleSpecifier(
|
|
420
|
+
moduleName,
|
|
421
|
+
projectRoot
|
|
422
|
+
);
|
|
423
|
+
const moduleExport = await importConnectorPluginModule(
|
|
424
|
+
resolvedModuleName,
|
|
425
|
+
projectRoot
|
|
426
|
+
);
|
|
427
|
+
const pluginDefinition = extractConnectorPluginDefinition(moduleExport);
|
|
428
|
+
if (!pluginDefinition) {
|
|
429
|
+
import_logger2.logger.warn(
|
|
430
|
+
'Skip connector plugin "%s": export { connectorEntries } is missing',
|
|
431
|
+
moduleName
|
|
432
|
+
);
|
|
433
|
+
continue;
|
|
434
|
+
}
|
|
435
|
+
registerEntries(pluginDefinition.connectorEntries, moduleName, state);
|
|
436
|
+
} catch (error) {
|
|
374
437
|
import_logger2.logger.warn(
|
|
375
|
-
'
|
|
376
|
-
moduleName
|
|
438
|
+
'Failed to load connector plugin "%s": %s',
|
|
439
|
+
moduleName,
|
|
440
|
+
String(error)
|
|
377
441
|
);
|
|
378
|
-
continue;
|
|
379
442
|
}
|
|
380
|
-
registerEntries(pluginDefinition.connectorEntries, moduleName);
|
|
381
|
-
} catch (error) {
|
|
382
|
-
import_logger2.logger.warn(
|
|
383
|
-
'Failed to load connector plugin "%s": %s',
|
|
384
|
-
moduleName,
|
|
385
|
-
String(error)
|
|
386
|
-
);
|
|
387
443
|
}
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
|
|
444
|
+
})();
|
|
445
|
+
}
|
|
446
|
+
await state.pluginsLoadPromise;
|
|
391
447
|
};
|
|
392
|
-
var getConnectorCreatorByName = async (connectorName) => {
|
|
393
|
-
await ensureConnectorPluginsLoaded();
|
|
448
|
+
var getConnectorCreatorByName = async (connectorName, cwd = getTradejsProjectCwd()) => {
|
|
449
|
+
await ensureConnectorPluginsLoaded(cwd);
|
|
450
|
+
const { state } = getConnectorRegistryState(cwd);
|
|
394
451
|
const raw = String(connectorName ?? "").trim();
|
|
395
452
|
if (!raw) {
|
|
396
453
|
return void 0;
|
|
397
454
|
}
|
|
398
|
-
const direct = connectorCreators.get(raw);
|
|
455
|
+
const direct = state.connectorCreators.get(raw);
|
|
399
456
|
if (direct) {
|
|
400
457
|
return direct;
|
|
401
458
|
}
|
|
402
|
-
const existing = findConnectorNameInsensitive(raw);
|
|
459
|
+
const existing = findConnectorNameInsensitive(raw, state.connectorCreators);
|
|
403
460
|
if (!existing) {
|
|
404
461
|
return void 0;
|
|
405
462
|
}
|
|
406
|
-
return connectorCreators.get(existing);
|
|
463
|
+
return state.connectorCreators.get(existing);
|
|
407
464
|
};
|
|
408
|
-
var getConnectorNameByProvider = async (provider) => {
|
|
409
|
-
await ensureConnectorPluginsLoaded();
|
|
465
|
+
var getConnectorNameByProvider = async (provider, cwd = getTradejsProjectCwd()) => {
|
|
466
|
+
await ensureConnectorPluginsLoaded(cwd);
|
|
467
|
+
const { state } = getConnectorRegistryState(cwd);
|
|
410
468
|
const normalized = normalizeProvider(provider);
|
|
411
469
|
if (!normalized) {
|
|
412
470
|
return void 0;
|
|
413
471
|
}
|
|
414
|
-
return providerToConnectorName.get(normalized);
|
|
472
|
+
return state.providerToConnectorName.get(normalized);
|
|
415
473
|
};
|
|
416
|
-
var getConnectorCreatorByProvider = async (provider) => {
|
|
417
|
-
|
|
474
|
+
var getConnectorCreatorByProvider = async (provider, cwd = getTradejsProjectCwd()) => {
|
|
475
|
+
await ensureConnectorPluginsLoaded(cwd);
|
|
476
|
+
const { state } = getConnectorRegistryState(cwd);
|
|
477
|
+
const normalized = normalizeProvider(provider);
|
|
478
|
+
if (!normalized) {
|
|
479
|
+
return void 0;
|
|
480
|
+
}
|
|
481
|
+
const connectorName = state.providerToConnectorName.get(normalized);
|
|
418
482
|
if (!connectorName) {
|
|
419
483
|
return void 0;
|
|
420
484
|
}
|
|
421
|
-
return connectorCreators.get(connectorName);
|
|
485
|
+
return state.connectorCreators.get(connectorName);
|
|
422
486
|
};
|
|
423
|
-
var resolveConnectorName = async (providerOrName) => {
|
|
487
|
+
var resolveConnectorName = async (providerOrName, cwd = getTradejsProjectCwd()) => {
|
|
488
|
+
await ensureConnectorPluginsLoaded(cwd);
|
|
489
|
+
const { state } = getConnectorRegistryState(cwd);
|
|
424
490
|
const raw = String(providerOrName ?? "").trim();
|
|
425
491
|
if (!raw) {
|
|
426
492
|
return void 0;
|
|
427
493
|
}
|
|
428
|
-
const byProvider =
|
|
494
|
+
const byProvider = state.providerToConnectorName.get(normalizeProvider(raw));
|
|
429
495
|
if (byProvider) {
|
|
430
496
|
return byProvider;
|
|
431
497
|
}
|
|
432
|
-
|
|
433
|
-
if (!byName) {
|
|
434
|
-
return void 0;
|
|
435
|
-
}
|
|
436
|
-
return findConnectorNameInsensitive(raw) ?? void 0;
|
|
498
|
+
return state.connectorCreators.get(raw) && raw ? raw : findConnectorNameInsensitive(raw, state.connectorCreators) ?? void 0;
|
|
437
499
|
};
|
|
438
|
-
var getAvailableConnectorNames = async () => {
|
|
439
|
-
await ensureConnectorPluginsLoaded();
|
|
440
|
-
|
|
500
|
+
var getAvailableConnectorNames = async (cwd = getTradejsProjectCwd()) => {
|
|
501
|
+
await ensureConnectorPluginsLoaded(cwd);
|
|
502
|
+
const { state } = getConnectorRegistryState(cwd);
|
|
503
|
+
return [...state.connectorCreators.keys()].sort((a, b) => a.localeCompare(b));
|
|
441
504
|
};
|
|
442
|
-
var getAvailableConnectorProviders = async () => {
|
|
443
|
-
await ensureConnectorPluginsLoaded();
|
|
444
|
-
|
|
505
|
+
var getAvailableConnectorProviders = async (cwd = getTradejsProjectCwd()) => {
|
|
506
|
+
await ensureConnectorPluginsLoaded(cwd);
|
|
507
|
+
const { state } = getConnectorRegistryState(cwd);
|
|
508
|
+
return [...state.providerToConnectorName.keys()].sort(
|
|
509
|
+
(a, b) => a.localeCompare(b)
|
|
510
|
+
);
|
|
445
511
|
};
|
|
446
|
-
var registerConnectorEntries = (entries) => {
|
|
447
|
-
|
|
512
|
+
var registerConnectorEntries = (entries, cwd = getTradejsProjectCwd()) => {
|
|
513
|
+
const { state } = getConnectorRegistryState(cwd);
|
|
514
|
+
registerEntries(entries, "runtime", state);
|
|
448
515
|
};
|
|
449
|
-
var resetConnectorRegistryCache = () => {
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
516
|
+
var resetConnectorRegistryCache = (cwd) => {
|
|
517
|
+
const normalizedCwd = String(cwd ?? "").trim();
|
|
518
|
+
if (!normalizedCwd) {
|
|
519
|
+
registryStateByProjectRoot.clear();
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
registryStateByProjectRoot.delete(getTradejsProjectCwd(normalizedCwd));
|
|
453
523
|
};
|
|
454
524
|
var DEFAULT_CONNECTOR_NAME = BUILTIN_CONNECTOR_NAMES.ByBit;
|
|
455
525
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/connectors.mjs
CHANGED
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
registerConnectorEntries,
|
|
11
11
|
resetConnectorRegistryCache,
|
|
12
12
|
resolveConnectorName
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-CIY64D57.mjs";
|
|
14
|
+
import "./chunk-P2ZUWONT.mjs";
|
|
15
15
|
import "./chunk-6DZX6EAA.mjs";
|
|
16
16
|
export {
|
|
17
17
|
BUILTIN_CONNECTOR_NAMES,
|
package/dist/pine.d.mts
CHANGED
|
@@ -25,7 +25,6 @@ declare const getPinePlotSeries: (context: PineContextLike, plotName: string) =>
|
|
|
25
25
|
declare const getLatestPinePlotValue: (context: PineContextLike, plotName: string) => unknown;
|
|
26
26
|
declare const asFiniteNumber: (value: unknown) => number | undefined;
|
|
27
27
|
declare const asPineBoolean: (value: unknown) => boolean;
|
|
28
|
-
|
|
29
28
|
declare const loadPineScript: (filePath: string, fallback?: string) => string;
|
|
30
29
|
declare const createLoadPineScript: (baseDir: string) => ((fileNameOrPath: string, fallback?: string) => string);
|
|
31
30
|
declare const runPineScript: ({ candles, script, symbol, timeframe, inputs, limit, }: RunPineScriptParams) => Promise<PineContextLike>;
|
package/dist/pine.d.ts
CHANGED
|
@@ -25,7 +25,6 @@ declare const getPinePlotSeries: (context: PineContextLike, plotName: string) =>
|
|
|
25
25
|
declare const getLatestPinePlotValue: (context: PineContextLike, plotName: string) => unknown;
|
|
26
26
|
declare const asFiniteNumber: (value: unknown) => number | undefined;
|
|
27
27
|
declare const asPineBoolean: (value: unknown) => boolean;
|
|
28
|
-
|
|
29
28
|
declare const loadPineScript: (filePath: string, fallback?: string) => string;
|
|
30
29
|
declare const createLoadPineScript: (baseDir: string) => ((fileNameOrPath: string, fallback?: string) => string);
|
|
31
30
|
declare const runPineScript: ({ candles, script, symbol, timeframe, inputs, limit, }: RunPineScriptParams) => Promise<PineContextLike>;
|
package/dist/pine.js
CHANGED
|
@@ -41,8 +41,6 @@ __export(pine_exports, {
|
|
|
41
41
|
module.exports = __toCommonJS(pine_exports);
|
|
42
42
|
var import_node_fs = __toESM(require("fs"));
|
|
43
43
|
var import_node_path = __toESM(require("path"));
|
|
44
|
-
|
|
45
|
-
// src/pineShared.ts
|
|
46
44
|
var getPinePlotSeries = (context, plotName) => {
|
|
47
45
|
const name = String(plotName || "").trim();
|
|
48
46
|
if (!name) return [];
|
|
@@ -65,8 +63,6 @@ var asPineBoolean = (value) => {
|
|
|
65
63
|
if (typeof value === "number") return Number.isFinite(value) && value !== 0;
|
|
66
64
|
return false;
|
|
67
65
|
};
|
|
68
|
-
|
|
69
|
-
// src/pine.ts
|
|
70
66
|
var loadPinets = () => {
|
|
71
67
|
const resolvedPath = require.resolve("pinets");
|
|
72
68
|
const cjsPath = resolvedPath.includes("pinets.min.browser") ? resolvedPath.replace(/pinets\.min\.browser(\.es)?\.js$/, "pinets.min.cjs") : resolvedPath;
|
package/dist/pine.mjs
CHANGED
package/dist/registry.d.mts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { StrategyManifest, StrategyCreator, StrategyRegistryEntry } from '@tradejs/types';
|
|
2
2
|
|
|
3
|
-
declare const ensureStrategyPluginsLoaded: () => Promise<void>;
|
|
4
|
-
declare const ensureIndicatorPluginsLoaded: () => Promise<void>;
|
|
5
|
-
declare const getStrategyCreator: (name: string) => Promise<StrategyCreator | undefined>;
|
|
6
|
-
declare const getAvailableStrategyNames: () => Promise<string[]>;
|
|
7
|
-
declare const getRegisteredStrategies: () => Record<string, StrategyCreator>;
|
|
8
|
-
declare const getRegisteredManifests: () => StrategyManifest[];
|
|
9
|
-
declare const getStrategyManifest: (name?: string) => StrategyManifest | undefined;
|
|
10
|
-
declare const isKnownStrategy: (name: string) => boolean;
|
|
11
|
-
declare const registerStrategyEntries: (entries: readonly StrategyRegistryEntry[]) => void;
|
|
12
|
-
declare const resetStrategyRegistryCache: () => void;
|
|
3
|
+
declare const ensureStrategyPluginsLoaded: (cwd?: string) => Promise<void>;
|
|
4
|
+
declare const ensureIndicatorPluginsLoaded: (cwd?: string) => Promise<void>;
|
|
5
|
+
declare const getStrategyCreator: (name: string, cwd?: string) => Promise<StrategyCreator | undefined>;
|
|
6
|
+
declare const getAvailableStrategyNames: (cwd?: string) => Promise<string[]>;
|
|
7
|
+
declare const getRegisteredStrategies: (cwd?: string) => Record<string, StrategyCreator>;
|
|
8
|
+
declare const getRegisteredManifests: (cwd?: string) => StrategyManifest[];
|
|
9
|
+
declare const getStrategyManifest: (name?: string, cwd?: string) => StrategyManifest | undefined;
|
|
10
|
+
declare const isKnownStrategy: (name: string, cwd?: string) => boolean;
|
|
11
|
+
declare const registerStrategyEntries: (entries: readonly StrategyRegistryEntry[], cwd?: string) => void;
|
|
12
|
+
declare const resetStrategyRegistryCache: (cwd?: string) => void;
|
|
13
13
|
declare const strategies: Record<string, StrategyCreator>;
|
|
14
14
|
|
|
15
15
|
export { ensureIndicatorPluginsLoaded, ensureStrategyPluginsLoaded, getAvailableStrategyNames, getRegisteredManifests, getRegisteredStrategies, getStrategyCreator, getStrategyManifest, isKnownStrategy, registerStrategyEntries, resetStrategyRegistryCache, strategies };
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { StrategyManifest, StrategyCreator, StrategyRegistryEntry } from '@tradejs/types';
|
|
2
2
|
|
|
3
|
-
declare const ensureStrategyPluginsLoaded: () => Promise<void>;
|
|
4
|
-
declare const ensureIndicatorPluginsLoaded: () => Promise<void>;
|
|
5
|
-
declare const getStrategyCreator: (name: string) => Promise<StrategyCreator | undefined>;
|
|
6
|
-
declare const getAvailableStrategyNames: () => Promise<string[]>;
|
|
7
|
-
declare const getRegisteredStrategies: () => Record<string, StrategyCreator>;
|
|
8
|
-
declare const getRegisteredManifests: () => StrategyManifest[];
|
|
9
|
-
declare const getStrategyManifest: (name?: string) => StrategyManifest | undefined;
|
|
10
|
-
declare const isKnownStrategy: (name: string) => boolean;
|
|
11
|
-
declare const registerStrategyEntries: (entries: readonly StrategyRegistryEntry[]) => void;
|
|
12
|
-
declare const resetStrategyRegistryCache: () => void;
|
|
3
|
+
declare const ensureStrategyPluginsLoaded: (cwd?: string) => Promise<void>;
|
|
4
|
+
declare const ensureIndicatorPluginsLoaded: (cwd?: string) => Promise<void>;
|
|
5
|
+
declare const getStrategyCreator: (name: string, cwd?: string) => Promise<StrategyCreator | undefined>;
|
|
6
|
+
declare const getAvailableStrategyNames: (cwd?: string) => Promise<string[]>;
|
|
7
|
+
declare const getRegisteredStrategies: (cwd?: string) => Record<string, StrategyCreator>;
|
|
8
|
+
declare const getRegisteredManifests: (cwd?: string) => StrategyManifest[];
|
|
9
|
+
declare const getStrategyManifest: (name?: string, cwd?: string) => StrategyManifest | undefined;
|
|
10
|
+
declare const isKnownStrategy: (name: string, cwd?: string) => boolean;
|
|
11
|
+
declare const registerStrategyEntries: (entries: readonly StrategyRegistryEntry[], cwd?: string) => void;
|
|
12
|
+
declare const resetStrategyRegistryCache: (cwd?: string) => void;
|
|
13
13
|
declare const strategies: Record<string, StrategyCreator>;
|
|
14
14
|
|
|
15
15
|
export { ensureIndicatorPluginsLoaded, ensureStrategyPluginsLoaded, getAvailableStrategyNames, getRegisteredManifests, getRegisteredStrategies, getStrategyCreator, getStrategyManifest, isKnownStrategy, registerStrategyEntries, resetStrategyRegistryCache, strategies };
|