hedgequantx 1.2.120 → 1.2.122
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 +54 -3
package/package.json
CHANGED
package/src/pages/algo.js
CHANGED
|
@@ -221,8 +221,54 @@ const selectSymbolMenu = async (service, account) => {
|
|
|
221
221
|
});
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
// Sort by
|
|
224
|
+
// Sort by category: E-mini indices first, then Micro E-mini, then others
|
|
225
|
+
const getSymbolPriority = (contract) => {
|
|
226
|
+
const name = (contract.name || contract.symbol || '').toUpperCase();
|
|
227
|
+
const desc = (contract.description || '').toLowerCase();
|
|
228
|
+
|
|
229
|
+
// E-mini indices (NQ, ES, YM, RTY) - highest priority
|
|
230
|
+
if (name.match(/^(NQ|ES|YM|RTY)[A-Z]\d/) && !name.startsWith('M')) {
|
|
231
|
+
if (name.startsWith('NQ')) return 10;
|
|
232
|
+
if (name.startsWith('ES')) return 11;
|
|
233
|
+
if (name.startsWith('YM')) return 12;
|
|
234
|
+
if (name.startsWith('RTY')) return 13;
|
|
235
|
+
return 15;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Micro E-mini indices (MNQ, MES, MYM, M2K)
|
|
239
|
+
if (name.match(/^(MNQ|MES|MYM|M2K)/)) {
|
|
240
|
+
if (name.startsWith('MNQ')) return 20;
|
|
241
|
+
if (name.startsWith('MES')) return 21;
|
|
242
|
+
if (name.startsWith('MYM')) return 22;
|
|
243
|
+
if (name.startsWith('M2K')) return 23;
|
|
244
|
+
return 25;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Energy (CL, MCL, NG)
|
|
248
|
+
if (name.match(/^(CL|MCL|NG|QG)/)) return 30;
|
|
249
|
+
|
|
250
|
+
// Metals (GC, MGC, SI)
|
|
251
|
+
if (name.match(/^(GC|MGC|SI|HG|PL)/)) return 40;
|
|
252
|
+
|
|
253
|
+
// Currencies (6E, 6B, etc)
|
|
254
|
+
if (name.match(/^(6E|6B|6J|6A|6C|M6E)/)) return 50;
|
|
255
|
+
|
|
256
|
+
// Treasuries (ZB, ZN, ZF, ZT)
|
|
257
|
+
if (name.match(/^(ZB|ZN|ZF|ZT)/)) return 60;
|
|
258
|
+
|
|
259
|
+
// Everything else
|
|
260
|
+
return 100;
|
|
261
|
+
};
|
|
262
|
+
|
|
225
263
|
symbolChoices.sort((a, b) => {
|
|
264
|
+
const priorityA = getSymbolPriority(a.value);
|
|
265
|
+
const priorityB = getSymbolPriority(b.value);
|
|
266
|
+
|
|
267
|
+
if (priorityA !== priorityB) {
|
|
268
|
+
return priorityA - priorityB;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Same priority - sort alphabetically
|
|
226
272
|
const aCode = a.value.name || a.value.symbol || '';
|
|
227
273
|
const bCode = b.value.name || b.value.symbol || '';
|
|
228
274
|
return aCode.localeCompare(bCode);
|
|
@@ -792,6 +838,11 @@ const launchAlgo = async (service, account, contract, numContracts, dailyTarget,
|
|
|
792
838
|
if (hqxConnected) {
|
|
793
839
|
printLog('info', 'Starting HQX Ultra-Scalping...');
|
|
794
840
|
printLog('info', `Target: $${dailyTarget.toFixed(2)} | Risk: $${maxRisk.toFixed(2)}`);
|
|
841
|
+
|
|
842
|
+
// Get propfirm token for real market data
|
|
843
|
+
const propfirmToken = service.getToken ? service.getToken() : null;
|
|
844
|
+
const propfirmId = service.getPropfirm ? service.getPropfirm() : (account.propfirm || 'topstep');
|
|
845
|
+
|
|
795
846
|
hqxServer.startAlgo({
|
|
796
847
|
accountId: account.accountId,
|
|
797
848
|
contractId: contract.id || contract.contractId,
|
|
@@ -799,8 +850,8 @@ const launchAlgo = async (service, account, contract, numContracts, dailyTarget,
|
|
|
799
850
|
contracts: numContracts,
|
|
800
851
|
dailyTarget: dailyTarget,
|
|
801
852
|
maxRisk: maxRisk,
|
|
802
|
-
propfirm:
|
|
803
|
-
propfirmToken:
|
|
853
|
+
propfirm: propfirmId,
|
|
854
|
+
propfirmToken: propfirmToken
|
|
804
855
|
});
|
|
805
856
|
algoRunning = true;
|
|
806
857
|
} else {
|