@tradejs/node 3.1.21 → 3.1.22-beta.238

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/backtest.js CHANGED
@@ -4991,6 +4991,19 @@ var shouldRecordRuntimeJournal = ({
4991
4991
  var isTestConnector = (connector) => Boolean(
4992
4992
  connector.__tradejsTestConnector
4993
4993
  );
4994
+ var isRuntimeOrderExecutionEnabled = ({
4995
+ config,
4996
+ env,
4997
+ connector,
4998
+ externalOrderPlacement = process.env.TRADEJS_EXTERNAL_ORDER_PLACEMENT
4999
+ }) => {
5000
+ const testConnector = isTestConnector(connector);
5001
+ const simulationEnabled = env === "PARITY" && config.SIMULATE_ORDERS === true && testConnector;
5002
+ const makeOrdersRequested = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
5003
+ if (!testConnector && externalOrderPlacement === "false") return false;
5004
+ if (env === "PARITY" && !testConnector) return false;
5005
+ return makeOrdersRequested || simulationEnabled;
5006
+ };
4994
5007
  var canUseSharedReplayState = ({
4995
5008
  env,
4996
5009
  sharedReplayKey
@@ -5943,8 +5956,11 @@ var createStrategyRuntime = ({
5943
5956
  );
5944
5957
  return decision.code;
5945
5958
  }
5946
- const rawMakeOrdersEnabled = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
5947
- const makeOrdersEnabled = rawMakeOrdersEnabled && (env !== "PARITY" || isTestConnector(connector));
5959
+ const makeOrdersEnabled = isRuntimeOrderExecutionEnabled({
5960
+ config,
5961
+ env,
5962
+ connector
5963
+ });
5948
5964
  if (decision.kind === "exit") {
5949
5965
  if (!makeOrdersEnabled) {
5950
5966
  return decision.code;
@@ -7292,12 +7308,13 @@ var createTestConnector = (connector, context) => {
7292
7308
  if (!currentPosition) {
7293
7309
  return;
7294
7310
  }
7311
+ let finalizedCycleResults = [];
7295
7312
  if (context?.mlEnabled || context?.aiEnabled) {
7296
- const attributedResults = currentEntryLegResults.filter(({ signalId }) => signalId).map((tradeResult) => finalizeTradeResult(tradeResult, timestamp)).filter(
7313
+ finalizedCycleResults = currentEntryLegResults.filter(({ signalId }) => signalId).map((tradeResult) => finalizeTradeResult(tradeResult, timestamp)).filter(
7297
7314
  (tradeResult) => Boolean(tradeResult)
7298
7315
  );
7299
- if (attributedResults.length) {
7300
- for (const tradeResult of attributedResults) {
7316
+ if (finalizedCycleResults.length) {
7317
+ for (const tradeResult of finalizedCycleResults) {
7301
7318
  closedSignalResults.push({
7302
7319
  signalId: tradeResult.signalId,
7303
7320
  profit: (0, import_math.round)(tradeResult.netProfit),
@@ -7306,6 +7323,7 @@ var createTestConnector = (connector, context) => {
7306
7323
  }
7307
7324
  } else if (currentSignalId) {
7308
7325
  const tradeResult = currentTradeResult ? finalizeTradeResult(currentTradeResult, timestamp) : void 0;
7326
+ if (tradeResult) finalizedCycleResults = [tradeResult];
7309
7327
  closedSignalResults.push({
7310
7328
  signalId: currentSignalId,
7311
7329
  profit: (0, import_math.round)(currentPositionProfit),
@@ -7322,7 +7340,13 @@ var createTestConnector = (connector, context) => {
7322
7340
  close: {
7323
7341
  timestamp,
7324
7342
  amount: (0, import_math.round)(amount)
7325
- }
7343
+ },
7344
+ netProfit: finalizedCycleResults.length ? (0, import_math.round)(
7345
+ finalizedCycleResults.reduce(
7346
+ (total, tradeResult) => total + tradeResult.netProfit,
7347
+ 0
7348
+ )
7349
+ ) : (0, import_math.round)(currentPositionProfit)
7326
7350
  });
7327
7351
  currentPosition = null;
7328
7352
  currentSignalId = null;
package/dist/backtest.mjs CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  buildMlPayload,
7
7
  enrichSignalWithMarketContextStages
8
- } from "./chunk-6PIVDS4M.mjs";
8
+ } from "./chunk-6DGLTGLW.mjs";
9
9
  import {
10
10
  buildAiPayload,
11
11
  getStrategyCreator
@@ -577,12 +577,13 @@ var createTestConnector = (connector, context) => {
577
577
  if (!currentPosition) {
578
578
  return;
579
579
  }
580
+ let finalizedCycleResults = [];
580
581
  if (context?.mlEnabled || context?.aiEnabled) {
581
- const attributedResults = currentEntryLegResults.filter(({ signalId }) => signalId).map((tradeResult) => finalizeTradeResult(tradeResult, timestamp)).filter(
582
+ finalizedCycleResults = currentEntryLegResults.filter(({ signalId }) => signalId).map((tradeResult) => finalizeTradeResult(tradeResult, timestamp)).filter(
582
583
  (tradeResult) => Boolean(tradeResult)
583
584
  );
584
- if (attributedResults.length) {
585
- for (const tradeResult of attributedResults) {
585
+ if (finalizedCycleResults.length) {
586
+ for (const tradeResult of finalizedCycleResults) {
586
587
  closedSignalResults.push({
587
588
  signalId: tradeResult.signalId,
588
589
  profit: round(tradeResult.netProfit),
@@ -591,6 +592,7 @@ var createTestConnector = (connector, context) => {
591
592
  }
592
593
  } else if (currentSignalId) {
593
594
  const tradeResult = currentTradeResult ? finalizeTradeResult(currentTradeResult, timestamp) : void 0;
595
+ if (tradeResult) finalizedCycleResults = [tradeResult];
594
596
  closedSignalResults.push({
595
597
  signalId: currentSignalId,
596
598
  profit: round(currentPositionProfit),
@@ -607,7 +609,13 @@ var createTestConnector = (connector, context) => {
607
609
  close: {
608
610
  timestamp,
609
611
  amount: round(amount)
610
- }
612
+ },
613
+ netProfit: finalizedCycleResults.length ? round(
614
+ finalizedCycleResults.reduce(
615
+ (total, tradeResult) => total + tradeResult.netProfit,
616
+ 0
617
+ )
618
+ ) : round(currentPositionProfit)
611
619
  });
612
620
  currentPosition = null;
613
621
  currentSignalId = null;
@@ -3336,6 +3336,19 @@ var shouldRecordRuntimeJournal = ({
3336
3336
  var isTestConnector = (connector) => Boolean(
3337
3337
  connector.__tradejsTestConnector
3338
3338
  );
3339
+ var isRuntimeOrderExecutionEnabled = ({
3340
+ config,
3341
+ env,
3342
+ connector,
3343
+ externalOrderPlacement = process.env.TRADEJS_EXTERNAL_ORDER_PLACEMENT
3344
+ }) => {
3345
+ const testConnector = isTestConnector(connector);
3346
+ const simulationEnabled = env === "PARITY" && config.SIMULATE_ORDERS === true && testConnector;
3347
+ const makeOrdersRequested = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
3348
+ if (!testConnector && externalOrderPlacement === "false") return false;
3349
+ if (env === "PARITY" && !testConnector) return false;
3350
+ return makeOrdersRequested || simulationEnabled;
3351
+ };
3339
3352
  var canUseSharedReplayState = ({
3340
3353
  env,
3341
3354
  sharedReplayKey
@@ -4290,8 +4303,11 @@ var createStrategyRuntime = ({
4290
4303
  );
4291
4304
  return decision.code;
4292
4305
  }
4293
- const rawMakeOrdersEnabled = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
4294
- const makeOrdersEnabled = rawMakeOrdersEnabled && (env !== "PARITY" || isTestConnector(connector));
4306
+ const makeOrdersEnabled = isRuntimeOrderExecutionEnabled({
4307
+ config,
4308
+ env,
4309
+ connector
4310
+ });
4295
4311
  if (decision.kind === "exit") {
4296
4312
  if (!makeOrdersEnabled) {
4297
4313
  return decision.code;
package/dist/registry.js CHANGED
@@ -5029,6 +5029,19 @@ var shouldRecordRuntimeJournal = ({
5029
5029
  var isTestConnector = (connector) => Boolean(
5030
5030
  connector.__tradejsTestConnector
5031
5031
  );
5032
+ var isRuntimeOrderExecutionEnabled = ({
5033
+ config,
5034
+ env,
5035
+ connector,
5036
+ externalOrderPlacement = process.env.TRADEJS_EXTERNAL_ORDER_PLACEMENT
5037
+ }) => {
5038
+ const testConnector = isTestConnector(connector);
5039
+ const simulationEnabled = env === "PARITY" && config.SIMULATE_ORDERS === true && testConnector;
5040
+ const makeOrdersRequested = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
5041
+ if (!testConnector && externalOrderPlacement === "false") return false;
5042
+ if (env === "PARITY" && !testConnector) return false;
5043
+ return makeOrdersRequested || simulationEnabled;
5044
+ };
5032
5045
  var canUseSharedReplayState = ({
5033
5046
  env,
5034
5047
  sharedReplayKey
@@ -5981,8 +5994,11 @@ var createStrategyRuntime = ({
5981
5994
  );
5982
5995
  return decision.code;
5983
5996
  }
5984
- const rawMakeOrdersEnabled = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
5985
- const makeOrdersEnabled = rawMakeOrdersEnabled && (env !== "PARITY" || isTestConnector(connector));
5997
+ const makeOrdersEnabled = isRuntimeOrderExecutionEnabled({
5998
+ config,
5999
+ env,
6000
+ connector
6001
+ });
5986
6002
  if (decision.kind === "exit") {
5987
6003
  if (!makeOrdersEnabled) {
5988
6004
  return decision.code;
package/dist/registry.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import "./chunk-6PIVDS4M.mjs";
1
+ import "./chunk-6DGLTGLW.mjs";
2
2
  import {
3
3
  ensureIndicatorPluginsLoaded,
4
4
  ensureStrategyPluginsLoaded,
@@ -5998,6 +5998,19 @@ var shouldRecordRuntimeJournal = ({
5998
5998
  var isTestConnector = (connector) => Boolean(
5999
5999
  connector.__tradejsTestConnector
6000
6000
  );
6001
+ var isRuntimeOrderExecutionEnabled = ({
6002
+ config,
6003
+ env,
6004
+ connector,
6005
+ externalOrderPlacement = process.env.TRADEJS_EXTERNAL_ORDER_PLACEMENT
6006
+ }) => {
6007
+ const testConnector = isTestConnector(connector);
6008
+ const simulationEnabled = env === "PARITY" && config.SIMULATE_ORDERS === true && testConnector;
6009
+ const makeOrdersRequested = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
6010
+ if (!testConnector && externalOrderPlacement === "false") return false;
6011
+ if (env === "PARITY" && !testConnector) return false;
6012
+ return makeOrdersRequested || simulationEnabled;
6013
+ };
6001
6014
  var canUseSharedReplayState = ({
6002
6015
  env,
6003
6016
  sharedReplayKey
@@ -6950,8 +6963,11 @@ var createStrategyRuntime = ({
6950
6963
  );
6951
6964
  return decision.code;
6952
6965
  }
6953
- const rawMakeOrdersEnabled = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
6954
- const makeOrdersEnabled = rawMakeOrdersEnabled && (env !== "PARITY" || isTestConnector(connector));
6966
+ const makeOrdersEnabled = isRuntimeOrderExecutionEnabled({
6967
+ config,
6968
+ env,
6969
+ connector
6970
+ });
6955
6971
  if (decision.kind === "exit") {
6956
6972
  if (!makeOrdersEnabled) {
6957
6973
  return decision.code;
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  getConnectorCreatorByProvider
11
11
  } from "./chunk-QVKUROR2.mjs";
12
- import "./chunk-6PIVDS4M.mjs";
12
+ import "./chunk-6DGLTGLW.mjs";
13
13
  import "./chunk-IKRSNRP6.mjs";
14
14
  import "./chunk-LZDXRXIU.mjs";
15
15
  import "./chunk-Y6FXYEAI.mjs";
@@ -4999,6 +4999,19 @@ var shouldRecordRuntimeJournal = ({
4999
4999
  var isTestConnector = (connector) => Boolean(
5000
5000
  connector.__tradejsTestConnector
5001
5001
  );
5002
+ var isRuntimeOrderExecutionEnabled = ({
5003
+ config,
5004
+ env,
5005
+ connector,
5006
+ externalOrderPlacement = process.env.TRADEJS_EXTERNAL_ORDER_PLACEMENT
5007
+ }) => {
5008
+ const testConnector = isTestConnector(connector);
5009
+ const simulationEnabled = env === "PARITY" && config.SIMULATE_ORDERS === true && testConnector;
5010
+ const makeOrdersRequested = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
5011
+ if (!testConnector && externalOrderPlacement === "false") return false;
5012
+ if (env === "PARITY" && !testConnector) return false;
5013
+ return makeOrdersRequested || simulationEnabled;
5014
+ };
5002
5015
  var canUseSharedReplayState = ({
5003
5016
  env,
5004
5017
  sharedReplayKey
@@ -5951,8 +5964,11 @@ var createStrategyRuntime = ({
5951
5964
  );
5952
5965
  return decision.code;
5953
5966
  }
5954
- const rawMakeOrdersEnabled = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
5955
- const makeOrdersEnabled = rawMakeOrdersEnabled && (env !== "PARITY" || isTestConnector(connector));
5967
+ const makeOrdersEnabled = isRuntimeOrderExecutionEnabled({
5968
+ config,
5969
+ env,
5970
+ connector
5971
+ });
5956
5972
  if (decision.kind === "exit") {
5957
5973
  if (!makeOrdersEnabled) {
5958
5974
  return decision.code;
@@ -9,7 +9,7 @@ import {
9
9
  resolveRuntimeComposition,
10
10
  verifyRuntimeDeclaration
11
11
  } from "./chunk-NQO2MFP6.mjs";
12
- import "./chunk-6PIVDS4M.mjs";
12
+ import "./chunk-6DGLTGLW.mjs";
13
13
  import "./chunk-IKRSNRP6.mjs";
14
14
  import "./chunk-LZDXRXIU.mjs";
15
15
  import "./chunk-Y6FXYEAI.mjs";
@@ -5115,6 +5115,19 @@ var shouldRecordRuntimeJournal = ({
5115
5115
  var isTestConnector = (connector) => Boolean(
5116
5116
  connector.__tradejsTestConnector
5117
5117
  );
5118
+ var isRuntimeOrderExecutionEnabled = ({
5119
+ config,
5120
+ env,
5121
+ connector,
5122
+ externalOrderPlacement = process.env.TRADEJS_EXTERNAL_ORDER_PLACEMENT
5123
+ }) => {
5124
+ const testConnector = isTestConnector(connector);
5125
+ const simulationEnabled = env === "PARITY" && config.SIMULATE_ORDERS === true && testConnector;
5126
+ const makeOrdersRequested = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
5127
+ if (!testConnector && externalOrderPlacement === "false") return false;
5128
+ if (env === "PARITY" && !testConnector) return false;
5129
+ return makeOrdersRequested || simulationEnabled;
5130
+ };
5118
5131
  var canUseSharedReplayState = ({
5119
5132
  env,
5120
5133
  sharedReplayKey
@@ -6067,8 +6080,11 @@ var createStrategyRuntime = ({
6067
6080
  );
6068
6081
  return decision.code;
6069
6082
  }
6070
- const rawMakeOrdersEnabled = typeof config.MAKE_ORDERS === "boolean" ? config.MAKE_ORDERS : true;
6071
- const makeOrdersEnabled = rawMakeOrdersEnabled && (env !== "PARITY" || isTestConnector(connector));
6083
+ const makeOrdersEnabled = isRuntimeOrderExecutionEnabled({
6084
+ config,
6085
+ env,
6086
+ connector
6087
+ });
6072
6088
  if (decision.kind === "exit") {
6073
6089
  if (!makeOrdersEnabled) {
6074
6090
  return decision.code;
@@ -22,7 +22,7 @@ import {
22
22
  resolveHyperliquidPerpFromSignalSymbol,
23
23
  resolveStrategyConfig,
24
24
  validateEntryProtectionAtArrival
25
- } from "./chunk-6PIVDS4M.mjs";
25
+ } from "./chunk-6DGLTGLW.mjs";
26
26
  import {
27
27
  DEFAULT_AI_MODEL,
28
28
  MAX_AI_SERIES_POINTS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradejs/node",
3
- "version": "3.1.21",
3
+ "version": "3.1.22-beta.238",
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",
@@ -89,9 +89,9 @@
89
89
  "dependencies": {
90
90
  "@langchain/core": "^1.2.3",
91
91
  "@langchain/openai": "^1.5.5",
92
- "@tradejs/core": "^3.1.21",
93
- "@tradejs/infra": "^3.1.21",
94
- "@tradejs/types": "^3.1.21",
92
+ "@tradejs/core": "^3.1.22-beta.238",
93
+ "@tradejs/infra": "^3.1.22-beta.238",
94
+ "@tradejs/types": "^3.1.22-beta.238",
95
95
  "@types/node": "^24",
96
96
  "chalk": "4.1.2",
97
97
  "ioredis": "5.11.1",
@@ -104,7 +104,7 @@
104
104
  "typescript": "^5.9"
105
105
  },
106
106
  "devDependencies": {
107
- "@tradejs/indicators": "^3.1.21",
107
+ "@tradejs/indicators": "^3.1.22-beta.238",
108
108
  "@tradejs/strategy-adaptive-momentum-ribbon": "3.0.2",
109
109
  "@tradejs/strategy-hyperliquid-consensus": "3.0.2",
110
110
  "@tradejs/strategy-kit": "3.0.3",