@tradejs/node 3.1.21 → 3.1.22
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 +30 -6
- package/dist/backtest.mjs +13 -5
- package/dist/{chunk-6PIVDS4M.mjs → chunk-6DGLTGLW.mjs} +18 -2
- package/dist/registry.js +18 -2
- package/dist/registry.mjs +1 -1
- package/dist/runtimeDashboard.js +18 -2
- package/dist/runtimeDashboard.mjs +1 -1
- package/dist/runtimeStrategies.js +18 -2
- package/dist/runtimeStrategies.mjs +1 -1
- package/dist/strategies.js +18 -2
- package/dist/strategies.mjs +1 -1
- package/package.json +5 -5
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
|
|
5947
|
-
|
|
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
|
-
|
|
7313
|
+
finalizedCycleResults = currentEntryLegResults.filter(({ signalId }) => signalId).map((tradeResult) => finalizeTradeResult(tradeResult, timestamp)).filter(
|
|
7297
7314
|
(tradeResult) => Boolean(tradeResult)
|
|
7298
7315
|
);
|
|
7299
|
-
if (
|
|
7300
|
-
for (const tradeResult of
|
|
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-
|
|
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
|
-
|
|
582
|
+
finalizedCycleResults = currentEntryLegResults.filter(({ signalId }) => signalId).map((tradeResult) => finalizeTradeResult(tradeResult, timestamp)).filter(
|
|
582
583
|
(tradeResult) => Boolean(tradeResult)
|
|
583
584
|
);
|
|
584
|
-
if (
|
|
585
|
-
for (const tradeResult of
|
|
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
|
|
4294
|
-
|
|
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
|
|
5985
|
-
|
|
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
package/dist/runtimeDashboard.js
CHANGED
|
@@ -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
|
|
6954
|
-
|
|
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;
|
|
@@ -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
|
|
5955
|
-
|
|
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-
|
|
12
|
+
import "./chunk-6DGLTGLW.mjs";
|
|
13
13
|
import "./chunk-IKRSNRP6.mjs";
|
|
14
14
|
import "./chunk-LZDXRXIU.mjs";
|
|
15
15
|
import "./chunk-Y6FXYEAI.mjs";
|
package/dist/strategies.js
CHANGED
|
@@ -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
|
|
6071
|
-
|
|
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;
|
package/dist/strategies.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tradejs/node",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.22",
|
|
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.
|
|
93
|
-
"@tradejs/infra": "^3.1.
|
|
94
|
-
"@tradejs/types": "^3.1.
|
|
92
|
+
"@tradejs/core": "^3.1.22",
|
|
93
|
+
"@tradejs/infra": "^3.1.22",
|
|
94
|
+
"@tradejs/types": "^3.1.22",
|
|
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.
|
|
107
|
+
"@tradejs/indicators": "^3.1.22",
|
|
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",
|