@tradejs/cli 2.0.8 → 2.0.10

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.
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/aiPocketSearchCli.ts
21
+ var aiPocketSearchCli_exports = {};
22
+ __export(aiPocketSearchCli_exports, {
23
+ AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS: () => AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS,
24
+ readAiPocketSearchCliOption: () => readAiPocketSearchCliOption
25
+ });
26
+ module.exports = __toCommonJS(aiPocketSearchCli_exports);
27
+ var AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS = {
28
+ minProfitFactor: "1.2",
29
+ minWinRate: "0",
30
+ minTotalProfit: "0",
31
+ validationSplit: "0.25"
32
+ };
33
+ var readAiPocketSearchCliOption = ({
34
+ argv,
35
+ longName,
36
+ shortName
37
+ }) => {
38
+ const longPrefix = `--${longName}=`;
39
+ for (let index = 0; index < argv.length; index += 1) {
40
+ const arg = argv[index];
41
+ if (arg.startsWith(longPrefix)) {
42
+ return arg.slice(longPrefix.length);
43
+ }
44
+ if (arg === `--${longName}` || shortName != null && arg === `-${shortName}`) {
45
+ return argv[index + 1];
46
+ }
47
+ }
48
+ return void 0;
49
+ };
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS,
53
+ readAiPocketSearchCliOption
54
+ });
@@ -4551,7 +4551,7 @@ var buildCoinMarketCapBackfillParams = (params) => ({
4551
4551
  userName: params.userName,
4552
4552
  startMs: params.startMs,
4553
4553
  endMs: params.endMs,
4554
- preloadStartMs: params.preloadStartMs
4554
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
4555
4555
  });
4556
4556
  var buildBinanceMarketBackfillParams = (params) => ({
4557
4557
  userName: params.userName,
@@ -4560,7 +4560,7 @@ var buildBinanceMarketBackfillParams = (params) => ({
4560
4560
  interval: params.interval,
4561
4561
  startMs: params.startMs,
4562
4562
  endMs: params.endMs,
4563
- preloadStartMs: params.preloadStartMs
4563
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
4564
4564
  });
4565
4565
  var buildDerivativesBackfillParams = (params) => ({
4566
4566
  userName: params.userName,
@@ -382,7 +382,8 @@ var buildRuntimeDebugReportPayload = async ({
382
382
  );
383
383
  const activeTradeKey = import_redis3.redisKeys.runtimeActiveTrade(
384
384
  userName,
385
- trade.symbol
385
+ trade.symbol,
386
+ trade.deploymentId ?? trade.accountId
386
387
  );
387
388
  const signalKey = trade.signalId != null ? import_redis3.redisKeys.storeSignal(trade.symbol, trade.signalId) : null;
388
389
  const evaluationBucketKey = import_redis3.redisKeys.runtimeSignalEvaluationBucket(
@@ -23,6 +23,7 @@ __export(runtimeRedis_exports, {
23
23
  getRuntimeStrategyConfigKeys: () => getRuntimeStrategyConfigKeys,
24
24
  isRuntimeStrategyEnabled: () => isRuntimeStrategyEnabled,
25
25
  isRuntimeTradeRecord: () => isRuntimeTradeRecord,
26
+ loadRuntimeActiveTradeOrderIds: () => loadRuntimeActiveTradeOrderIds,
26
27
  loadRuntimeStrategyConfigs: () => loadRuntimeStrategyConfigs,
27
28
  loadRuntimeStrategyNames: () => loadRuntimeStrategyNames,
28
29
  loadRuntimeTrades: () => loadRuntimeTrades,
@@ -131,6 +132,15 @@ var loadRuntimeTrades = async (userName, {
131
132
  const trades = await Promise.all(keys.map((key) => (0, import_redis.getData)(key, null)));
132
133
  return trades.filter(isRuntimeTradeRecord).filter(filterByWindow).sort((left, right) => left.entryTimestamp - right.entryTimestamp);
133
134
  };
135
+ var loadRuntimeActiveTradeOrderIds = async (userName) => {
136
+ const keys = await (0, import_redis.getKeys)(import_redis.redisKeys.runtimeActiveTrades(userName));
137
+ const refs = await Promise.all(keys.map((key) => (0, import_redis.getData)(key, null)));
138
+ return new Set(
139
+ refs.map(
140
+ (ref) => ref && typeof ref === "object" && "orderId" in ref && typeof ref.orderId === "string" && ref.orderId.trim() ? ref.orderId.trim() : null
141
+ ).filter((orderId) => orderId != null)
142
+ );
143
+ };
134
144
  var loadStrategyResultSymbols = async ({
135
145
  userName,
136
146
  strategy
@@ -148,6 +158,7 @@ var loadStrategyResultSymbols = async ({
148
158
  getRuntimeStrategyConfigKeys,
149
159
  isRuntimeStrategyEnabled,
150
160
  isRuntimeTradeRecord,
161
+ loadRuntimeActiveTradeOrderIds,
151
162
  loadRuntimeStrategyConfigs,
152
163
  loadRuntimeStrategyNames,
153
164
  loadRuntimeTrades,
@@ -3314,6 +3314,31 @@ var buildAiPocketMarkdownReport = ({
3314
3314
  `;
3315
3315
  };
3316
3316
 
3317
+ // src/lib/aiPocketSearchCli.ts
3318
+ var AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS = {
3319
+ minProfitFactor: "1.2",
3320
+ minWinRate: "0",
3321
+ minTotalProfit: "0",
3322
+ validationSplit: "0.25"
3323
+ };
3324
+ var readAiPocketSearchCliOption = ({
3325
+ argv,
3326
+ longName,
3327
+ shortName
3328
+ }) => {
3329
+ const longPrefix = `--${longName}=`;
3330
+ for (let index = 0; index < argv.length; index += 1) {
3331
+ const arg = argv[index];
3332
+ if (arg.startsWith(longPrefix)) {
3333
+ return arg.slice(longPrefix.length);
3334
+ }
3335
+ if (arg === `--${longName}` || shortName != null && arg === `-${shortName}`) {
3336
+ return argv[index + 1];
3337
+ }
3338
+ }
3339
+ return void 0;
3340
+ };
3341
+
3317
3342
  // src/scripts/aiPocketSearch.ts
3318
3343
  var ListIt = require_list_it();
3319
3344
  import_args.default.example(
@@ -3368,17 +3393,17 @@ import_args.default.option(["m", "minSupport"], "Minimum rows required for a poc
3368
3393
  import_args.default.option(
3369
3394
  ["F", "minProfitFactor"],
3370
3395
  "Minimum profit factor required for positive pockets",
3371
- 1.2
3396
+ AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS.minProfitFactor
3372
3397
  );
3373
3398
  import_args.default.option(
3374
3399
  ["W", "minWinRate"],
3375
3400
  "Minimum win rate required for positive pockets",
3376
- 0
3401
+ AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS.minWinRate
3377
3402
  );
3378
3403
  import_args.default.option(
3379
3404
  ["R", "minTotalProfit"],
3380
3405
  "Minimum total PnL required for positive pockets",
3381
- 0
3406
+ AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS.minTotalProfit
3382
3407
  );
3383
3408
  import_args.default.option(
3384
3409
  ["a", "maxAtomicPredicates"],
@@ -3393,7 +3418,7 @@ import_args.default.option(
3393
3418
  import_args.default.option(
3394
3419
  ["V", "validationSplit"],
3395
3420
  "Trailing time-ordered scope share reserved for validation (0 disables)",
3396
- 0.25
3421
+ AI_POCKET_SEARCH_CLI_DECIMAL_DEFAULTS.validationSplit
3397
3422
  );
3398
3423
  import_args.default.option(
3399
3424
  ["N", "minValidationSupport"],
@@ -3810,17 +3835,40 @@ var main = async () => {
3810
3835
  const maxDepth = normalizePositiveInt(flags.maxDepth, 2);
3811
3836
  const minSupport = normalizePositiveInt(flags.minSupport, 20);
3812
3837
  const minProfitFactor = normalizeNonNegativeNumber(
3813
- flags.minProfitFactor,
3838
+ readAiPocketSearchCliOption({
3839
+ argv: process.argv,
3840
+ longName: "minProfitFactor",
3841
+ shortName: "F"
3842
+ }) ?? flags.minProfitFactor,
3814
3843
  1.2
3815
3844
  );
3816
- const minWinRate = normalizeNonNegativeNumber(flags.minWinRate, 0);
3817
- const minTotalProfit = Number.isFinite(Number(flags.minTotalProfit)) ? Number(flags.minTotalProfit) : 0;
3845
+ const minWinRate = normalizeNonNegativeNumber(
3846
+ readAiPocketSearchCliOption({
3847
+ argv: process.argv,
3848
+ longName: "minWinRate",
3849
+ shortName: "W"
3850
+ }) ?? flags.minWinRate,
3851
+ 0
3852
+ );
3853
+ const minTotalProfitValue = readAiPocketSearchCliOption({
3854
+ argv: process.argv,
3855
+ longName: "minTotalProfit",
3856
+ shortName: "R"
3857
+ }) ?? flags.minTotalProfit;
3858
+ const minTotalProfit = Number.isFinite(Number(minTotalProfitValue)) ? Number(minTotalProfitValue) : 0;
3818
3859
  const maxAtomicPredicates = normalizePositiveInt(
3819
3860
  flags.maxAtomicPredicates,
3820
3861
  180
3821
3862
  );
3822
3863
  const maxCombinations = normalizePositiveInt(flags.maxCombinations, 6e4);
3823
- const validationSplit = hasCliOption2("validationSplit", "V") ? normalizeRatio(flags.validationSplit, 0.25) : 0.25;
3864
+ const validationSplit = hasCliOption2("validationSplit", "V") ? normalizeRatio(
3865
+ readAiPocketSearchCliOption({
3866
+ argv: process.argv,
3867
+ longName: "validationSplit",
3868
+ shortName: "V"
3869
+ }) ?? flags.validationSplit,
3870
+ 0.25
3871
+ ) : 0.25;
3824
3872
  const explicitMinValidationSupport = normalizeInt(
3825
3873
  flags.minValidationSupport,
3826
3874
  0
@@ -4594,7 +4594,7 @@ var buildCoinMarketCapBackfillParams = (params) => ({
4594
4594
  userName: params.userName,
4595
4595
  startMs: params.startMs,
4596
4596
  endMs: params.endMs,
4597
- preloadStartMs: params.preloadStartMs
4597
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
4598
4598
  });
4599
4599
  var buildBinanceMarketBackfillParams = (params) => ({
4600
4600
  userName: params.userName,
@@ -4603,7 +4603,7 @@ var buildBinanceMarketBackfillParams = (params) => ({
4603
4603
  interval: params.interval,
4604
4604
  startMs: params.startMs,
4605
4605
  endMs: params.endMs,
4606
- preloadStartMs: params.preloadStartMs
4606
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
4607
4607
  });
4608
4608
  var buildDerivativesBackfillParams = (params) => ({
4609
4609
  userName: params.userName,
@@ -5235,7 +5235,7 @@ var buildCoinMarketCapBackfillParams = (params) => ({
5235
5235
  userName: params.userName,
5236
5236
  startMs: params.startMs,
5237
5237
  endMs: params.endMs,
5238
- preloadStartMs: params.preloadStartMs
5238
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
5239
5239
  });
5240
5240
  var buildBinanceMarketBackfillParams = (params) => ({
5241
5241
  userName: params.userName,
@@ -5244,7 +5244,7 @@ var buildBinanceMarketBackfillParams = (params) => ({
5244
5244
  interval: params.interval,
5245
5245
  startMs: params.startMs,
5246
5246
  endMs: params.endMs,
5247
- preloadStartMs: params.preloadStartMs
5247
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
5248
5248
  });
5249
5249
  var buildDerivativesBackfillParams = (params) => ({
5250
5250
  userName: params.userName,
@@ -5238,7 +5238,7 @@ var buildCoinMarketCapBackfillParams = (params) => ({
5238
5238
  userName: params.userName,
5239
5239
  startMs: params.startMs,
5240
5240
  endMs: params.endMs,
5241
- preloadStartMs: params.preloadStartMs
5241
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
5242
5242
  });
5243
5243
  var buildBinanceMarketBackfillParams = (params) => ({
5244
5244
  userName: params.userName,
@@ -5247,7 +5247,7 @@ var buildBinanceMarketBackfillParams = (params) => ({
5247
5247
  interval: params.interval,
5248
5248
  startMs: params.startMs,
5249
5249
  endMs: params.endMs,
5250
- preloadStartMs: params.preloadStartMs
5250
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
5251
5251
  });
5252
5252
  var buildDerivativesBackfillParams = (params) => ({
5253
5253
  userName: params.userName,
@@ -382,7 +382,8 @@ var buildRuntimeDebugReportPayload = async ({
382
382
  );
383
383
  const activeTradeKey = import_redis3.redisKeys.runtimeActiveTrade(
384
384
  userName,
385
- trade.symbol
385
+ trade.symbol,
386
+ trade.deploymentId ?? trade.accountId
386
387
  );
387
388
  const signalKey = trade.signalId != null ? import_redis3.redisKeys.storeSignal(trade.symbol, trade.signalId) : null;
388
389
  const evaluationBucketKey = import_redis3.redisKeys.runtimeSignalEvaluationBucket(
@@ -381,7 +381,8 @@ var buildRuntimeDebugReportPayload = async ({
381
381
  );
382
382
  const activeTradeKey = import_redis3.redisKeys.runtimeActiveTrade(
383
383
  userName,
384
- trade.symbol
384
+ trade.symbol,
385
+ trade.deploymentId ?? trade.accountId
385
386
  );
386
387
  const signalKey = trade.signalId != null ? import_redis3.redisKeys.storeSignal(trade.symbol, trade.signalId) : null;
387
388
  const evaluationBucketKey = import_redis3.redisKeys.runtimeSignalEvaluationBucket(
@@ -5240,7 +5240,7 @@ var buildCoinMarketCapBackfillParams = (params) => ({
5240
5240
  userName: params.userName,
5241
5241
  startMs: params.startMs,
5242
5242
  endMs: params.endMs,
5243
- preloadStartMs: params.preloadStartMs
5243
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
5244
5244
  });
5245
5245
  var buildBinanceMarketBackfillParams = (params) => ({
5246
5246
  userName: params.userName,
@@ -5249,7 +5249,7 @@ var buildBinanceMarketBackfillParams = (params) => ({
5249
5249
  interval: params.interval,
5250
5250
  startMs: params.startMs,
5251
5251
  endMs: params.endMs,
5252
- preloadStartMs: params.preloadStartMs
5252
+ preloadStartMs: params.mode === "signals" ? void 0 : params.preloadStartMs
5253
5253
  });
5254
5254
  var buildDerivativesBackfillParams = (params) => ({
5255
5255
  userName: params.userName,