@tradejs/cli 2.0.5 → 2.0.7

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.
@@ -205,6 +205,18 @@ var consumeClosedPnlMatch = (buckets, trade) => {
205
205
  const [row] = rows.splice(matchIndex, 1);
206
206
  return row ?? null;
207
207
  };
208
+ var isRuntimeTradeInConnectorScope = (trade, connector) => {
209
+ if (trade.deploymentId && trade.deploymentId !== connector.deploymentId) {
210
+ return false;
211
+ }
212
+ if (trade.accountId && trade.accountId !== connector.accountId) {
213
+ return false;
214
+ }
215
+ if (trade.universe && connector.universe && trade.universe !== connector.universe) {
216
+ return false;
217
+ }
218
+ return true;
219
+ };
208
220
  var syncRuntimeTrades = async ({
209
221
  userName,
210
222
  connector,
@@ -228,16 +240,23 @@ var syncRuntimeTrades = async ({
228
240
  const openPositionsBySymbol = new Map(
229
241
  openPositions.map((position) => [position.symbol, position])
230
242
  );
231
- const activeOrderIdBySymbol = /* @__PURE__ */ new Map();
232
- const symbols = [...new Set(trades.map((trade) => trade.symbol))];
243
+ const activeOrderIdByKey = /* @__PURE__ */ new Map();
244
+ const activeTradeKeys = [
245
+ ...new Set(
246
+ trades.filter((trade) => isRuntimeTradeInConnectorScope(trade, connector)).map(
247
+ (trade) => import_redis2.redisKeys.runtimeActiveTrade(
248
+ userName,
249
+ trade.symbol,
250
+ trade.deploymentId ?? trade.accountId
251
+ )
252
+ )
253
+ )
254
+ ];
233
255
  await Promise.all(
234
- symbols.map(async (symbol) => {
235
- const activeRef = await (0, import_redis2.getData)(
236
- import_redis2.redisKeys.runtimeActiveTrade(userName, symbol),
237
- null
238
- );
239
- activeOrderIdBySymbol.set(
240
- symbol,
256
+ activeTradeKeys.map(async (key) => {
257
+ const activeRef = await (0, import_redis2.getData)(key, null);
258
+ activeOrderIdByKey.set(
259
+ key,
241
260
  typeof activeRef?.orderId === "string" ? activeRef.orderId : null
242
261
  );
243
262
  })
@@ -256,12 +275,21 @@ var syncRuntimeTrades = async ({
256
275
  }
257
276
  const syncedTrades = [];
258
277
  for (const trade of trades) {
278
+ if (!isRuntimeTradeInConnectorScope(trade, connector)) {
279
+ syncedTrades.push(trade);
280
+ continue;
281
+ }
259
282
  if (trade.status !== "active" && !isRuntimeTradeSyncFallbackClose(trade)) {
260
283
  syncedTrades.push(trade);
261
284
  continue;
262
285
  }
286
+ const activeTradeKey = import_redis2.redisKeys.runtimeActiveTrade(
287
+ userName,
288
+ trade.symbol,
289
+ trade.deploymentId ?? trade.accountId
290
+ );
263
291
  const openPosition = openPositionsBySymbol.get(trade.symbol);
264
- const activeOrderId = activeOrderIdBySymbol.get(trade.symbol);
292
+ const activeOrderId = activeOrderIdByKey.get(activeTradeKey);
265
293
  const isCurrentActiveTrade = activeOrderId === trade.orderId;
266
294
  if (trade.status === "active" && !openPositionsReliable) {
267
295
  syncedTrades.push({
@@ -300,6 +328,7 @@ var syncRuntimeTrades = async ({
300
328
  }
301
329
  const matchedClosedPnl = consumeClosedPnlMatch(closedPnlBuckets, trade);
302
330
  if (!matchedClosedPnl) {
331
+ syncedTrades.push(trade);
303
332
  continue;
304
333
  }
305
334
  const nextTrade = {
@@ -332,7 +361,7 @@ var syncRuntimeTrades = async ({
332
361
  nextTrade,
333
362
  { expire: import_constants.TTL_1M }
334
363
  ),
335
- ...isCurrentActiveTrade ? [(0, import_redis2.delKey)(import_redis2.redisKeys.runtimeActiveTrade(userName, trade.symbol))] : []
364
+ ...isCurrentActiveTrade ? [(0, import_redis2.delKey)(activeTradeKey)] : []
336
365
  ]);
337
366
  syncedTrades.push(nextTrade);
338
367
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradejs/cli",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "description": "Official CLI for the TradeJS TypeScript framework: infra setup, backtests, signals, bots, and ML workflows.",
5
5
  "keywords": [
6
6
  "tradejs",
@@ -29,23 +29,23 @@
29
29
  "tradejs": "dist/cli.js"
30
30
  },
31
31
  "dependencies": {
32
- "@tradejs/base": "^2.0.5",
33
- "@tradejs/connectors": "^2.0.5",
34
- "@tradejs/core": "^2.0.5",
35
- "@tradejs/indicators": "^2.0.5",
36
- "@tradejs/infra": "^2.0.5",
37
- "@tradejs/node": "^2.0.5",
38
- "@tradejs/strategies": "^2.0.5",
39
- "@tradejs/types": "^2.0.5",
32
+ "@tradejs/base": "^2.0.7",
33
+ "@tradejs/connectors": "^2.0.7",
34
+ "@tradejs/core": "^2.0.7",
35
+ "@tradejs/indicators": "^2.0.7",
36
+ "@tradejs/infra": "^2.0.7",
37
+ "@tradejs/node": "^2.0.7",
38
+ "@tradejs/strategies": "^2.0.7",
39
+ "@tradejs/types": "^2.0.7",
40
40
  "args": "^5.0.3",
41
41
  "bcryptjs": "^2.4.3",
42
42
  "chalk": "4.1.2",
43
- "date-fns": "^3.3.1",
44
- "dotenv": "^16.4.1",
45
- "ioredis": "5.8.0",
43
+ "date-fns": "^3.6.0",
44
+ "dotenv": "^16.6.1",
45
+ "ioredis": "5.11.1",
46
46
  "lodash": "^4.18.1",
47
47
  "progress": "^2.0.3",
48
- "ws": "^8.18.0"
48
+ "ws": "^8.21.1"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/node": "^24",
@@ -54,7 +54,7 @@
54
54
  "ts-node": "^10.9.2",
55
55
  "tsconfig-paths": "^4.2.0",
56
56
  "tsup": "^8.5.1",
57
- "typescript": "^5.1"
57
+ "typescript": "^5.9"
58
58
  },
59
59
  "scripts": {
60
60
  "agent-run": "yarn run run:dist agent-run",
@@ -70,6 +70,7 @@
70
70
  "ai-pocket-search": "yarn run run:dist ai-pocket-search",
71
71
  "ai-train": "yarn run run:dist ai-train",
72
72
  "backtest": "yarn run run:dist backtest",
73
+ "breadth:universes:update": "yarn run run:dist binance:breadth-universes:update",
73
74
  "bot": "yarn run run:dist bot",
74
75
  "candles:migrate-provider": "yarn run run:dist candles:migrate-provider",
75
76
  "signals": "yarn run run:dist signals",