@tradejs/node 2.0.7 → 2.0.9

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.
@@ -1,7 +1,7 @@
1
1
  export * from '@tradejs/core/strategies';
2
2
  export { DEFAULT_AI_MODEL, MAX_AI_SERIES_POINTS, askAI, buildAiHumanPrompt, buildAiPayload, buildAiPrompts, buildAiSystemPrompt, buildCompactAiIndicatorsSnapshot, ensureAiStrategyPluginsLoaded, getDeterministicAiGateContext, getOpenRouterModelKwargs, resetAiRuntimeCache, runAiPrompt, runAiPromptLocal, trimSeriesDeep } from './ai.mjs';
3
3
  export { ensureIndicatorPluginsLoaded, ensureStrategyPluginsLoaded, getAvailableStrategyNames, getRegisteredManifests, getRegisteredStrategies, getStrategyCreator, getStrategyManifest, isKnownStrategy, registerStrategyEntries, resetStrategyRegistryCache, strategies } from './registry.mjs';
4
- import { StrategyConfig, CreateStrategyCore, StrategyManifest, StrategyCreator, Signal, Direction, StrategyRuntimeMlOptions, StrategyRuntimeAiOptions, Connector, Tp, MarketFeatureInterval, StrategyEntrySignalContext } from '@tradejs/types';
4
+ import { StrategyConfig, CreateStrategyCore, StrategyManifest, StrategyCreator, RuntimeStrategyConfigSnapshot, Signal, Direction, StrategyRuntimeMlOptions, StrategyRuntimeAiOptions, Connector, Tp, MarketFeatureInterval, StrategyEntrySignalContext } from '@tradejs/types';
5
5
  import { TradejsConfigOnBarHook, TradejsConfigBeforeSignalsHook } from '@tradejs/core/config';
6
6
 
7
7
  interface CreateStrategyRuntimeParams<TConfig extends StrategyConfig> {
@@ -22,8 +22,9 @@ interface ResolveStrategyConfigParams<TConfig extends StrategyConfig> {
22
22
  baseConfig: Record<string, any>;
23
23
  defaults: TConfig;
24
24
  runtimeConfigId?: string;
25
+ runtimeConfigSnapshot?: RuntimeStrategyConfigSnapshot;
25
26
  }
26
- declare const resolveStrategyConfig: <TConfig extends StrategyConfig>({ strategyName, userName, symbol, baseConfig, defaults, runtimeConfigId, }: ResolveStrategyConfigParams<TConfig>) => Promise<{
27
+ declare const resolveStrategyConfig: <TConfig extends StrategyConfig>({ strategyName, userName, symbol, baseConfig, defaults, runtimeConfigId, runtimeConfigSnapshot, }: ResolveStrategyConfigParams<TConfig>) => Promise<{
27
28
  config: TConfig;
28
29
  isConfigFromBacktest: boolean;
29
30
  }>;
@@ -1,7 +1,7 @@
1
1
  export * from '@tradejs/core/strategies';
2
2
  export { DEFAULT_AI_MODEL, MAX_AI_SERIES_POINTS, askAI, buildAiHumanPrompt, buildAiPayload, buildAiPrompts, buildAiSystemPrompt, buildCompactAiIndicatorsSnapshot, ensureAiStrategyPluginsLoaded, getDeterministicAiGateContext, getOpenRouterModelKwargs, resetAiRuntimeCache, runAiPrompt, runAiPromptLocal, trimSeriesDeep } from './ai.js';
3
3
  export { ensureIndicatorPluginsLoaded, ensureStrategyPluginsLoaded, getAvailableStrategyNames, getRegisteredManifests, getRegisteredStrategies, getStrategyCreator, getStrategyManifest, isKnownStrategy, registerStrategyEntries, resetStrategyRegistryCache, strategies } from './registry.js';
4
- import { StrategyConfig, CreateStrategyCore, StrategyManifest, StrategyCreator, Signal, Direction, StrategyRuntimeMlOptions, StrategyRuntimeAiOptions, Connector, Tp, MarketFeatureInterval, StrategyEntrySignalContext } from '@tradejs/types';
4
+ import { StrategyConfig, CreateStrategyCore, StrategyManifest, StrategyCreator, RuntimeStrategyConfigSnapshot, Signal, Direction, StrategyRuntimeMlOptions, StrategyRuntimeAiOptions, Connector, Tp, MarketFeatureInterval, StrategyEntrySignalContext } from '@tradejs/types';
5
5
  import { TradejsConfigOnBarHook, TradejsConfigBeforeSignalsHook } from '@tradejs/core/config';
6
6
 
7
7
  interface CreateStrategyRuntimeParams<TConfig extends StrategyConfig> {
@@ -22,8 +22,9 @@ interface ResolveStrategyConfigParams<TConfig extends StrategyConfig> {
22
22
  baseConfig: Record<string, any>;
23
23
  defaults: TConfig;
24
24
  runtimeConfigId?: string;
25
+ runtimeConfigSnapshot?: RuntimeStrategyConfigSnapshot;
25
26
  }
26
- declare const resolveStrategyConfig: <TConfig extends StrategyConfig>({ strategyName, userName, symbol, baseConfig, defaults, runtimeConfigId, }: ResolveStrategyConfigParams<TConfig>) => Promise<{
27
+ declare const resolveStrategyConfig: <TConfig extends StrategyConfig>({ strategyName, userName, symbol, baseConfig, defaults, runtimeConfigId, runtimeConfigSnapshot, }: ResolveStrategyConfigParams<TConfig>) => Promise<{
27
28
  config: TConfig;
28
29
  isConfigFromBacktest: boolean;
29
30
  }>;
@@ -9328,7 +9328,8 @@ var resolveStrategyConfig = async ({
9328
9328
  symbol,
9329
9329
  baseConfig,
9330
9330
  defaults,
9331
- runtimeConfigId
9331
+ runtimeConfigId,
9332
+ runtimeConfigSnapshot
9332
9333
  }) => {
9333
9334
  const mergeIfNotEmpty = (target, patch) => patch && !import_lodash.default.isEmpty(patch) ? {
9334
9335
  ...target,
@@ -9340,21 +9341,24 @@ var resolveStrategyConfig = async ({
9340
9341
  };
9341
9342
  let isConfigFromBacktest = false;
9342
9343
  if (config.ENV !== "BACKTEST") {
9343
- const userConfig = await (0, import_redis3.getData)(
9344
- runtimeConfigId ? import_redis3.redisKeys.strategyConfig(userName, strategyName, runtimeConfigId) : import_redis3.redisKeys.strategyConfig(userName, strategyName),
9344
+ const userConfig = runtimeConfigSnapshot ? runtimeConfigSnapshot.userConfig : await (0, import_redis3.getData)(
9345
+ runtimeConfigId ? import_redis3.redisKeys.strategyConfig(
9346
+ userName,
9347
+ strategyName,
9348
+ runtimeConfigId
9349
+ ) : import_redis3.redisKeys.strategyConfig(userName, strategyName),
9345
9350
  {}
9346
9351
  );
9347
9352
  config = mergeIfNotEmpty(config, userConfig);
9348
9353
  if (!runtimeConfigId || runtimeConfigId === "config") {
9349
- const results = await (0, import_redis3.getData)(
9354
+ const symbolResultConfig = runtimeConfigSnapshot ? runtimeConfigSnapshot.symbolResultConfig : (await (0, import_redis3.getData)(
9350
9355
  import_redis3.redisKeys.strategyResults(userName, strategyName),
9351
9356
  {}
9352
- );
9353
- const backtestResult = results?.[symbol];
9354
- if (backtestResult && !import_lodash.default.isEmpty(backtestResult.config)) {
9357
+ ))?.[symbol]?.config;
9358
+ if (symbolResultConfig && !import_lodash.default.isEmpty(symbolResultConfig)) {
9355
9359
  config = mergeIfNotEmpty(
9356
9360
  config,
9357
- backtestResult.config
9361
+ symbolResultConfig
9358
9362
  );
9359
9363
  isConfigFromBacktest = true;
9360
9364
  }
@@ -10195,6 +10199,7 @@ var createStrategyRuntime = ({
10195
10199
  deploymentId: requestedDeploymentId,
10196
10200
  policyProfileId,
10197
10201
  runtimeConfigId,
10202
+ runtimeConfigSnapshot,
10198
10203
  data,
10199
10204
  btcData,
10200
10205
  ethData = [],
@@ -10212,7 +10217,8 @@ var createStrategyRuntime = ({
10212
10217
  symbol,
10213
10218
  baseConfig,
10214
10219
  defaults,
10215
- runtimeConfigId
10220
+ runtimeConfigId,
10221
+ runtimeConfigSnapshot
10216
10222
  });
10217
10223
  const universe = requestedUniverse ?? connector.universe;
10218
10224
  const accountId = requestedAccountId ?? connector.accountId;
@@ -778,7 +778,8 @@ var resolveStrategyConfig = async ({
778
778
  symbol,
779
779
  baseConfig,
780
780
  defaults,
781
- runtimeConfigId
781
+ runtimeConfigId,
782
+ runtimeConfigSnapshot
782
783
  }) => {
783
784
  const mergeIfNotEmpty = (target, patch) => patch && !import_lodash.default.isEmpty(patch) ? {
784
785
  ...target,
@@ -790,21 +791,24 @@ var resolveStrategyConfig = async ({
790
791
  };
791
792
  let isConfigFromBacktest = false;
792
793
  if (config.ENV !== "BACKTEST") {
793
- const userConfig = await getData2(
794
- runtimeConfigId ? redisKeys2.strategyConfig(userName, strategyName, runtimeConfigId) : redisKeys2.strategyConfig(userName, strategyName),
794
+ const userConfig = runtimeConfigSnapshot ? runtimeConfigSnapshot.userConfig : await getData2(
795
+ runtimeConfigId ? redisKeys2.strategyConfig(
796
+ userName,
797
+ strategyName,
798
+ runtimeConfigId
799
+ ) : redisKeys2.strategyConfig(userName, strategyName),
795
800
  {}
796
801
  );
797
802
  config = mergeIfNotEmpty(config, userConfig);
798
803
  if (!runtimeConfigId || runtimeConfigId === "config") {
799
- const results = await getData2(
804
+ const symbolResultConfig = runtimeConfigSnapshot ? runtimeConfigSnapshot.symbolResultConfig : (await getData2(
800
805
  redisKeys2.strategyResults(userName, strategyName),
801
806
  {}
802
- );
803
- const backtestResult = results?.[symbol];
804
- if (backtestResult && !import_lodash.default.isEmpty(backtestResult.config)) {
807
+ ))?.[symbol]?.config;
808
+ if (symbolResultConfig && !import_lodash.default.isEmpty(symbolResultConfig)) {
805
809
  config = mergeIfNotEmpty(
806
810
  config,
807
- backtestResult.config
811
+ symbolResultConfig
808
812
  );
809
813
  isConfigFromBacktest = true;
810
814
  }
@@ -1647,6 +1651,7 @@ var createStrategyRuntime = ({
1647
1651
  deploymentId: requestedDeploymentId,
1648
1652
  policyProfileId,
1649
1653
  runtimeConfigId,
1654
+ runtimeConfigSnapshot,
1650
1655
  data,
1651
1656
  btcData,
1652
1657
  ethData = [],
@@ -1664,7 +1669,8 @@ var createStrategyRuntime = ({
1664
1669
  symbol,
1665
1670
  baseConfig,
1666
1671
  defaults,
1667
- runtimeConfigId
1672
+ runtimeConfigId,
1673
+ runtimeConfigSnapshot
1668
1674
  });
1669
1675
  const universe = requestedUniverse ?? connector.universe;
1670
1676
  const accountId = requestedAccountId ?? connector.accountId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradejs/node",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Node-only runtime for the TradeJS TypeScript framework: strategies, backtests, Pine strategy loading, and plugin registries.",
5
5
  "keywords": [
6
6
  "tradejs",
@@ -67,9 +67,9 @@
67
67
  "dependencies": {
68
68
  "@langchain/core": "^1.2.3",
69
69
  "@langchain/openai": "^1.5.5",
70
- "@tradejs/core": "^2.0.7",
71
- "@tradejs/infra": "^2.0.7",
72
- "@tradejs/types": "^2.0.7",
70
+ "@tradejs/core": "^2.0.9",
71
+ "@tradejs/infra": "^2.0.9",
72
+ "@tradejs/types": "^2.0.9",
73
73
  "chalk": "4.1.2",
74
74
  "ioredis": "5.11.1",
75
75
  "pinets": "0.8.12",