hedgequantx 1.2.67 → 1.2.68

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/pages/algo.js +26 -33
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hedgequantx",
3
- "version": "1.2.67",
3
+ "version": "1.2.68",
4
4
  "description": "Prop Futures Algo Trading CLI - Connect to Topstep, Alpha Futures, and other prop firms",
5
5
  "main": "src/app.js",
6
6
  "bin": {
package/src/pages/algo.js CHANGED
@@ -381,52 +381,45 @@ const launchAlgo = async (service, account, contract, numContracts, dailyTarget,
381
381
  console.clear();
382
382
  const marketStatus = checkMarketStatus();
383
383
 
384
- // Logo
385
- const logo = [
386
- '██╗ ██╗ ██████╗ ██╗ ██╗',
387
- '██║ ██║██╔═══██╗╚██╗██╔╝',
388
- '███████║██║ ██║ ╚███╔╝ ',
389
- '██╔══██║██║▄▄ ██║ ██╔██╗ ',
390
- '██║ ██║╚██████╔╝██╔╝ ██╗',
391
- '╚═╝ ╚═╝ ╚══▀▀═╝ ╚═╝ ╚═╝'
392
- ];
393
-
394
- console.log();
395
- logo.forEach(line => {
396
- console.log(chalk.cyan(' ' + line));
397
- });
398
- console.log(chalk.gray(' Ultra-Scalping Algorithm'));
399
- console.log();
400
-
401
- // Info Box
402
- console.log(chalk.cyan(' ╔════════════════════════════════════════════════════════════════════╗'));
403
- console.log(chalk.cyan(' ║') + chalk.white(` Account: ${chalk.cyan(accountName.padEnd(25))} Symbol: ${chalk.yellow(symbolName.padEnd(10))} Qty: ${chalk.cyan(numContracts.toString().padEnd(3))}`) + chalk.cyan('║'));
384
+ // Stats
385
+ const pnlColor = stats.pnl >= 0 ? chalk.green : chalk.red;
386
+ const pnlStr = (stats.pnl >= 0 ? '+$' : '-$') + Math.abs(stats.pnl).toFixed(2);
404
387
  const latencyStr = hqxConnected ? (latency > 0 ? `${latency}ms` : '---') : '---';
405
388
  const latencyColor = latency < 100 ? chalk.green : (latency < 300 ? chalk.yellow : chalk.red);
406
- console.log(chalk.cyan(' ║') + chalk.white(` Target: ${chalk.green(('$' + dailyTarget.toFixed(2)).padEnd(12))} Risk: ${chalk.red(('$' + maxRisk.toFixed(2)).padEnd(12))} Server: ${hqxConnected ? chalk.green('ON') : chalk.red('OFF')} ${latencyColor(latencyStr.padEnd(6))}`) + chalk.cyan('║'));
389
+ const serverStatus = hqxConnected ? chalk.green('ON') : chalk.red('OFF');
407
390
 
408
- // Stats line
409
- const pnlColor = stats.pnl >= 0 ? chalk.green : chalk.red;
410
- const pnlStr = (stats.pnl >= 0 ? '+$' : '-$') + Math.abs(stats.pnl).toFixed(2);
411
- console.log(chalk.cyan(' ║') + chalk.white(` P&L: ${pnlColor(pnlStr.padEnd(12))} Trades: ${chalk.cyan(stats.trades.toString().padEnd(4))} W: ${chalk.green(stats.wins.toString().padEnd(3))} L: ${chalk.red(stats.losses.toString().padEnd(3))} `) + chalk.cyan('║'));
412
- console.log(chalk.cyan(' ╠════════════════════════════════════════════════════════════════════╣'));
413
- console.log(chalk.cyan(' ║') + chalk.white(' Activity Log ') + chalk.yellow('Press X to stop') + chalk.cyan(' ║'));
414
- console.log(chalk.cyan(' ╠════════════════════════════════════════════════════════════════════╣'));
391
+ // Full header with logo inside box
392
+ console.log();
393
+ console.log(chalk.cyan('╔════════════════════════════════════════════════════════════════════════════════════════════════╗'));
394
+ console.log(chalk.cyan('║') + chalk.cyan(' ██╗ ██╗███████╗██████╗ ██████╗ ███████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗████████╗██╗ ██╗ ') + chalk.cyan('║'));
395
+ console.log(chalk.cyan('║') + chalk.cyan(' ██║ ██║██╔════╝██╔══██╗██╔════╝ ██╔════╝██╔═══██╗██║ ██║██╔══██╗████╗ ██║╚══██╔══╝╚██╗██╔╝ ') + chalk.cyan('║'));
396
+ console.log(chalk.cyan('║') + chalk.cyan(' ███████║█████╗ ██║ ██║██║ ███╗█████╗ ██║ ██║██║ ██║███████║██╔██╗ ██║ ██║ ╚███╔╝ ') + chalk.cyan('║'));
397
+ console.log(chalk.cyan('║') + chalk.cyan(' ██╔══██║██╔══╝ ██║ ██║██║ ██║██╔══╝ ██║▄▄ ██║██║ ██║██╔══██║██║╚██╗██║ ██║ ██╔██╗ ') + chalk.cyan('║'));
398
+ console.log(chalk.cyan('║') + chalk.cyan(' ██║ ██║███████╗██████╔╝╚██████╔╝███████╗╚██████╔╝╚██████╔╝██║ ██║██║ ╚████║ ██║ ██╔╝ ██╗ ') + chalk.cyan('║'));
399
+ console.log(chalk.cyan('║') + chalk.cyan(' ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚══════╝ ╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝ ') + chalk.cyan('║'));
400
+ console.log(chalk.cyan('╠════════════════════════════════════════════════════════════════════════════════════════════════╣'));
401
+ console.log(chalk.cyan('║') + chalk.white(' HQX Ultra-Scalping Algorithm ') + chalk.cyan('║'));
402
+ console.log(chalk.cyan('╠════════════════════════════════════════════════════════════════════════════════════════════════╣'));
403
+ console.log(chalk.cyan('║') + chalk.white(` Account: ${chalk.cyan(accountName.padEnd(28))} Symbol: ${chalk.yellow(symbolName.padEnd(12))} Qty: ${chalk.cyan(numContracts.toString().padEnd(4))} Server: ${serverStatus} ${latencyColor(latencyStr.padEnd(7))}`) + chalk.cyan('║'));
404
+ console.log(chalk.cyan('║') + chalk.white(` Target: ${chalk.green(('$' + dailyTarget.toFixed(2)).padEnd(12))} Risk: ${chalk.red(('$' + maxRisk.toFixed(2)).padEnd(12))} P&L: ${pnlColor(pnlStr.padEnd(12))} Trades: ${chalk.cyan(stats.trades.toString())} W:${chalk.green(stats.wins.toString())} L:${chalk.red(stats.losses.toString())} `) + chalk.cyan('║'));
405
+ console.log(chalk.cyan('╠════════════════════════════════════════════════════════════════════════════════════════════════╣'));
406
+ console.log(chalk.cyan('║') + chalk.white(' Activity Log ') + chalk.yellow('Press X to stop') + chalk.cyan(' ║'));
407
+ console.log(chalk.cyan('╠════════════════════════════════════════════════════════════════════════════════════════════════╣'));
415
408
 
416
- // Logs (newest first - already in correct order)
409
+ // Logs
417
410
  if (logs.length === 0) {
418
- console.log(chalk.cyan(' ║') + chalk.gray(' Waiting for activity...'.padEnd(68)) + chalk.cyan('║'));
411
+ console.log(chalk.cyan('║') + chalk.gray(' Waiting for activity...'.padEnd(96)) + chalk.cyan('║'));
419
412
  } else {
420
413
  logs.forEach(log => {
421
414
  const color = typeColors[log.type] || chalk.white;
422
415
  const icon = getIcon(log.type);
423
416
  const logLine = `[${log.timestamp}] ${icon} ${log.message}`;
424
- const truncated = logLine.length > 66 ? logLine.substring(0, 63) + '...' : logLine;
425
- console.log(chalk.cyan(' ║') + ' ' + color(truncated.padEnd(67)) + chalk.cyan('║'));
417
+ const truncated = logLine.length > 94 ? logLine.substring(0, 91) + '...' : logLine;
418
+ console.log(chalk.cyan('║') + ' ' + color(truncated.padEnd(95)) + chalk.cyan('║'));
426
419
  });
427
420
  }
428
421
 
429
- console.log(chalk.cyan(' ╚════════════════════════════════════════════════════════════════════╝'));
422
+ console.log(chalk.cyan('╚════════════════════════════════════════════════════════════════════════════════════════════════╝'));
430
423
  };
431
424
 
432
425
  // Connect to HQX Server