hedgequantx 1.2.66 → 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.
- package/package.json +1 -1
- package/src/pages/algo.js +31 -33
package/package.json
CHANGED
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
|
-
//
|
|
385
|
-
const
|
|
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
|
-
|
|
389
|
+
const serverStatus = hqxConnected ? chalk.green('ON') : chalk.red('OFF');
|
|
407
390
|
|
|
408
|
-
//
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
console.log(chalk.cyan('
|
|
412
|
-
console.log(chalk.cyan('
|
|
413
|
-
console.log(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
|
|
409
|
+
// Logs
|
|
417
410
|
if (logs.length === 0) {
|
|
418
|
-
console.log(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 >
|
|
425
|
-
console.log(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
|
|
@@ -465,6 +458,11 @@ const launchAlgo = async (service, account, contract, numContracts, dailyTarget,
|
|
|
465
458
|
}
|
|
466
459
|
|
|
467
460
|
// Setup event handlers - logs scroll down naturally
|
|
461
|
+
hqxServer.on('latency', (data) => {
|
|
462
|
+
latency = data.latency || 0;
|
|
463
|
+
displayUI(); // Refresh UI with new latency
|
|
464
|
+
});
|
|
465
|
+
|
|
468
466
|
hqxServer.on('log', (data) => {
|
|
469
467
|
printLog(data.type || 'info', data.message);
|
|
470
468
|
});
|