hedgequantx 2.6.140 → 2.6.142

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hedgequantx",
3
- "version": "2.6.140",
3
+ "version": "2.6.142",
4
4
  "description": "HedgeQuantX - Prop Futures Trading CLI",
5
5
  "main": "src/app.js",
6
6
  "bin": {
@@ -1623,8 +1623,17 @@ const launchMultiSymbolRithmic = async (service, account, contracts, config) =>
1623
1623
 
1624
1624
  // Disable symbol after loss (SL hit) - other symbols continue
1625
1625
  disabledSymbols.add(symbolName);
1626
- ui.addLog('warning', `[${symbolName}] DISABLED - SL hit, other symbols continue`);
1627
1626
  stats.activeSymbols = contracts.length - disabledSymbols.size;
1627
+
1628
+ // Check if ALL symbols are now disabled → stop algo
1629
+ if (disabledSymbols.size >= contracts.length) {
1630
+ ui.addLog('warning', `[${symbolName}] DISABLED - All symbols stopped`);
1631
+ ui.addLog('info', '████ ALL SYMBOLS DISABLED - Session complete ████');
1632
+ stopReason = 'all_disabled';
1633
+ running = false;
1634
+ } else {
1635
+ ui.addLog('warning', `[${symbolName}] DISABLED - SL hit, ${stats.activeSymbols} symbols remaining`);
1636
+ }
1628
1637
  }
1629
1638
  }
1630
1639
  stats.symbolStats[symbolName].position = 0;
@@ -374,7 +374,7 @@ class AlgoUI {
374
374
  _drawLogs() {
375
375
  const { W, logs, maxLogs } = this;
376
376
 
377
- // Activity header - HF style (NO SPINNER/TIME - causes flicker on VPS/SSH)
377
+ // Activity header with animated spinner
378
378
  // Date is cached on first draw to prevent changes
379
379
  if (!this.cachedDate) {
380
380
  const nowDate = new Date();
@@ -382,9 +382,11 @@ class AlgoUI {
382
382
  }
383
383
  const dateStr = this.cachedDate;
384
384
 
385
- // Static indicator instead of spinner
386
- const indicator = '●';
387
- const leftText = ` EXECUTION LOG ${indicator}`;
385
+ // Animated spinner - advances on each render
386
+ const spinner = SPINNER[this.spinnerFrame % SPINNER.length];
387
+ this.spinnerFrame++;
388
+
389
+ const leftText = ` EXECUTION LOG ${spinner}`;
388
390
  const rightText = `[X] STOP `;
389
391
 
390
392
  const totalFixed = leftText.length + rightText.length;
@@ -392,7 +394,7 @@ class AlgoUI {
392
394
  const centerPadLeft = Math.floor((centerSpace - dateStr.length) / 2);
393
395
  const centerPadRight = centerSpace - dateStr.length - centerPadLeft;
394
396
 
395
- const left = ` ${chalk.bold('EXECUTION LOG')} ${chalk.green(indicator)}`;
397
+ const left = ` ${chalk.bold('EXECUTION LOG')} ${chalk.green(spinner)}`;
396
398
  const center = ' '.repeat(Math.max(0, centerPadLeft)) + chalk.white.bold(dateStr) + ' '.repeat(Math.max(0, centerPadRight));
397
399
  const right = chalk.yellow.bold('[X] STOP') + ' ';
398
400