hedgequantx 2.9.129 → 2.9.131
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/dist/lib/m/hqx-2b.js +1 -1
- package/dist/lib/m/ultra-scalping.js +1 -1
- package/package.json +1 -1
- package/src/lib/data.js +1 -0
package/dist/lib/m/hqx-2b.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x3c2c79=_0x3286;(function(_0x29ac90,_0x4d799b){const _0x37e0b4=_0x3286,_0x2b55b4=_0x29ac90();while(!![]){try{const _0xc35e54=-parseInt(_0x37e0b4(0x170))/0x1+parseInt(_0x37e0b4(0x137))/0x2*(-parseInt(_0x37e0b4(0x12a))/0x3)+parseInt(_0x37e0b4(0x1a6))/0x4+-parseInt(_0x37e0b4(0x166))/0x5*(-parseInt(_0x37e0b4(0x16b))/0x6)+-parseInt(_0x37e0b4(0x14f))/0x7*(-parseInt(_0x37e0b4(0x163))/0x8)+-parseInt(_0x37e0b4(0x1a7))/0x9+parseInt(_0x37e0b4(0x1a5))/0xa*(-parseInt(_0x37e0b4(0x174))/0xb);if(_0xc35e54===_0x4d799b)break;else _0x2b55b4['push'](_0x2b55b4['shift']());}catch(_0x5e77b5){_0x2b55b4['push'](_0x2b55b4['shift']());}}}(_0x2306,0x6eb2b));const EventEmitter=require(_0x3c2c79(0x14b)),{v4:uuidv4}=require(_0x3c2c79(0x11d)),OrderSide={'BID':0x0,'ASK':0x1},SignalStrength={'WEAK':0x1,'MODERATE':0x2,'STRONG':0x3,'VERY_STRONG':0x4},SweepType={'HIGH_SWEEP':_0x3c2c79(0x176),'LOW_SWEEP':'low'},ZoneType={'RESISTANCE':_0x3c2c79(0x118),'SUPPORT':'support'},DEFAULT_CONFIG={'tickSize':0.25,'tickValue':0x5,'swing':{'lookbackBars':0x3,'minStrength':0x2,'confirmationBars':0x1},'zone':{'clusterToleranceTicks':0x4,'minTouches':0x2,'maxZoneAgeBars':0xc8,'maxZoneDistanceTicks':0x28,'cooldownBars':0xa},'sweep':{'minPenetrationTicks':0.5,'maxPenetrationTicks':0x8,'maxDurationBars':0x5,'minQualityScore':0.25,'minVolumeRatio':0.5,'minBodyRatio':0.1},'execution':{'stopTicks':0xa,'targetTicks':0x28,'breakevenTicks':0x4,'trailTriggerTicks':0x8,'trailDistanceTicks':0x4,'cooldownMs':0x3a98,'minHoldTimeMs':0x2710,'slippageTicks':0x1,'commissionPerSide':0x2},'session':{'enabled':![],'startHour':0x9,'startMinute':0x1e,'endHour':0x10,'endMinute':0x0,'timezone':'America/New_York'}};class SwingPoint{constructor(_0x4c7556,_0x2b0437,_0x4a33de,_0x5510cd,_0x3ea663=0x1){const _0x531e4e=_0x3c2c79;this['type']=_0x4c7556,this[_0x531e4e(0x13e)]=_0x2b0437,this['barIndex']=_0x4a33de,this['timestamp']=_0x5510cd,this['strength']=_0x3ea663;}}function _0x2306(){const _0x1d6ecf=['tickSize','getStats','stopTicks','swingPoints','getAnalysisState','session','min','s\x20<\x20','_detectSwings','timestamp','sweepType','getBarHistory','info','delete','processTick','strategy','getHealthStatus','penetrationTicks','map','execution','minVolumeRatio','sort','low','toFixed','stats','volumeRatio','barIndex','SUPPORT','length','x\x20|\x20Q:','now','cooldownBars','[HQX-2B]\x20Preload\x20complete:\x20','reset','\x20|\x20Total:\x20','clusterToleranceTicks','set','[2B]\x20SWEEP\x20','isValid','emit','breakevenTicks','priceHigh','20LUhKRy','2891544dWvjDd','516339jAtdHk','long','wins','qualityScore','size','close','log','has','split','targetTicks','maxPenetrationTicks','barHistory','resistance','WIN','_detectSweep','priceLow','filter','uuid','floor','HIGH_SWEEP','push','signal','_getVolumeRatio','open','/5\x20bars','isWithinSession','max','\x20|\x20','config','[2B]\x20Calling\x20_generateSignal\x20for\x20','2026110EvaPsr','maxZoneAgeBars','splice','maxDurationBars','RESISTANCE','startTime','\x20|\x20Pen:','exitBarIndex','preloadBars','processBar','tickCount','shift','containsPrice','2CMiweW','\x20historical\x20signals\x20detected\x20(ignored)','getLevel','trailTriggerTicks','liquidityZones','durationBars','BID','price','currentBar','extremeBarIndex','\x20historical\x20bars...','isDST','onTrade','onTick','type','WEAK','t,\x20BE=','swing','minQualityScore','generateSignal','events','_generateSignal','get','find','21RsODKP','lastSignalTime','buy','distance','barIntervalMs','STRONG','touches','HQX-2B\x20Liquidity\x20Sweep\x20(Optimized)','_mergeConfig','activeSweeps','cooldownMs','toUpperCase','recentTrades','HQX_2B_LIQUIDITY_SWEEP','exports','createdAt','tickValue','sweptAt','trailDistanceTicks','LOSS','2374576aztBTa','_updateZones','volume','550asBGBf','abs','MODERATE','short',',\x20value=','46668ElOrNT','Collecting\x20data...\x20','minPenetrationTicks','initialize','zone','542336KtDGBb','swept','\x20@\x20','recordTradeResult','4072398pKWXOf','lastUsedBarIndex','high','debug','[2B]\x20_generateSignal\x20returned\x20null\x20(likely\x20cooldown)','getFullYear','[2B]\x20NEW\x20ZONE\x20'];_0x2306=function(){return _0x1d6ecf;};return _0x2306();}class LiquidityZone{constructor(_0x47dd02,_0x91f01b,_0x2fc927,_0x60a931,_0x970786){const _0x5b63e4=_0x3c2c79;this['id']=uuidv4(),this['type']=_0x47dd02,this['priceHigh']=_0x91f01b,this['priceLow']=_0x2fc927,this[_0x5b63e4(0x15e)]=_0x60a931,this[_0x5b63e4(0x195)]=_0x970786,this['touches']=0x1,this['swept']=![],this['sweptAt']=null,this['lastUsedBarIndex']=-0x3e7,this['qualityScore']=0.5;}[_0x3c2c79(0x136)](_0x1021bb,_0x259fdd,_0x4d601d){const _0x3c5670=_0x3c2c79,_0x56b511=_0x259fdd*_0x4d601d;return _0x1021bb>=this[_0x3c5670(0x11b)]-_0x56b511&&_0x1021bb<=this[_0x3c5670(0x1a4)]+_0x56b511;}[_0x3c2c79(0x139)](){const _0x505bc5=_0x3c2c79;return(this[_0x505bc5(0x1a4)]+this[_0x505bc5(0x11b)])/0x2;}}class SweepEvent{constructor(_0x1dd70a,_0x3f2142,_0x5da72a,_0x5d7747,_0x388d23){const _0x378def=_0x3c2c79;this[_0x378def(0x185)]=_0x1dd70a,this['zone']=_0x3f2142,this['entryBarIndex']=_0x5da72a,this[_0x378def(0x140)]=_0x5d7747,this['extremePrice']=_0x388d23,this[_0x378def(0x131)]=null,this[_0x378def(0x1a1)]=![],this['qualityScore']=0x0,this[_0x378def(0x18c)]=0x0,this[_0x378def(0x13c)]=0x0,this[_0x378def(0x194)]=0x1;}}class HQX2BLiquiditySweep extends EventEmitter{constructor(_0x73ec9d={}){const _0x10b74a=_0x3c2c79;super(),this['config']=this[_0x10b74a(0x157)](DEFAULT_CONFIG,_0x73ec9d),this[_0x10b74a(0x17b)]=this[_0x10b74a(0x128)]['tickSize'],this['tickValue']=this['config'][_0x10b74a(0x15f)],this['barHistory']=new Map(),this['swingPoints']=new Map(),this['liquidityZones']=new Map(),this['activeSweeps']=new Map(),this[_0x10b74a(0x13f)]=new Map(),this[_0x10b74a(0x153)]=0xea60,this[_0x10b74a(0x150)]=0x0,this['startTime']=Date['now'](),this[_0x10b74a(0x193)]={'signals':0x0,'trades':0x0,'wins':0x0,'losses':0x0,'pnl':0x0},this[_0x10b74a(0x15b)]=[];}[_0x3c2c79(0x157)](_0x2ed7e0,_0x35aaed){const _0xffafaf={..._0x2ed7e0};for(const _0x39396d in _0x35aaed){typeof _0x35aaed[_0x39396d]==='object'&&!Array['isArray'](_0x35aaed[_0x39396d])?_0xffafaf[_0x39396d]={..._0x2ed7e0[_0x39396d],..._0x35aaed[_0x39396d]}:_0xffafaf[_0x39396d]=_0x35aaed[_0x39396d];}return _0xffafaf;}['isWithinSession'](_0x51bb43){const _0x47c243=_0x3c2c79;if(!this[_0x47c243(0x128)][_0x47c243(0x180)]['enabled'])return!![];const _0x3aaefc=new Date(_0x51bb43),_0x1bfb98=this[_0x47c243(0x142)](_0x3aaefc)?-0x4:-0x5,_0x3bc5c9=_0x3aaefc['getUTCHours'](),_0x426554=_0x3aaefc['getUTCMinutes'](),_0xd6e43d=(_0x3bc5c9+_0x1bfb98+0x18)%0x18,{startHour:_0x5ec534,startMinute:_0xcdb89c,endHour:_0x5f856b,endMinute:_0x3f11a3}=this[_0x47c243(0x128)][_0x47c243(0x180)],_0x426f54=_0xd6e43d*0x3c+_0x426554,_0x1895fd=_0x5ec534*0x3c+_0xcdb89c,_0x5d165b=_0x5f856b*0x3c+_0x3f11a3;return _0x426f54>=_0x1895fd&&_0x426f54<_0x5d165b;}['isDST'](_0x1f9d17){const _0x273de5=_0x3c2c79,_0xb94322=new Date(_0x1f9d17[_0x273de5(0x179)](),0x0,0x1),_0x227bf7=new Date(_0x1f9d17[_0x273de5(0x179)](),0x6,0x1),_0x5dc005=Math[_0x273de5(0x126)](_0xb94322['getTimezoneOffset'](),_0x227bf7['getTimezoneOffset']());return _0x1f9d17['getTimezoneOffset']()<_0x5dc005;}['initialize'](_0x188519,_0x4ddbbf=0.25,_0x5d88e0=0x5){const _0x43c69f=_0x3c2c79;this[_0x43c69f(0x17b)]=_0x4ddbbf,this['tickValue']=_0x5d88e0,this[_0x43c69f(0x128)]['tickSize']=_0x4ddbbf,this[_0x43c69f(0x128)][_0x43c69f(0x15f)]=_0x5d88e0,this[_0x43c69f(0x117)][_0x43c69f(0x19f)](_0x188519,[]),this['swingPoints']['set'](_0x188519,[]),this[_0x43c69f(0x13b)]['set'](_0x188519,[]),this['activeSweeps']['set'](_0x188519,[]),this['currentBar'][_0x43c69f(0x188)](_0x188519),this[_0x43c69f(0x1a2)]('log',{'type':_0x43c69f(0x187),'message':'[HQX-2B]\x20Initialized\x20for\x20'+_0x188519+':\x20tick='+_0x4ddbbf+_0x43c69f(0x16a)+_0x5d88e0+',\x20TF=1min'}),this['emit'](_0x43c69f(0x1ad),{'type':_0x43c69f(0x187),'message':'[HQX-2B]\x20Params:\x20Stop='+this[_0x43c69f(0x128)]['execution']['stopTicks']+'t,\x20Target='+this[_0x43c69f(0x128)]['execution'][_0x43c69f(0x115)]+_0x43c69f(0x147)+this['config']['execution']['breakevenTicks']+'t,\x20Trail='+this[_0x43c69f(0x128)][_0x43c69f(0x18e)]['trailTriggerTicks']+'/'+this['config']['execution'][_0x43c69f(0x161)]});}[_0x3c2c79(0x189)](_0x2afd93){const _0x1b6503=_0x3c2c79,{contractId:_0x3f6535,price:_0x1b0c2c,volume:_0x21311b,timestamp:_0x539db5}=_0x2afd93,_0x222ac5=_0x539db5||Date[_0x1b6503(0x199)](),_0x15d4ff=_0x21311b||0x1;if(!this[_0x1b6503(0x125)](_0x222ac5))return null;let _0x143ce8=this[_0x1b6503(0x13f)][_0x1b6503(0x14d)](_0x3f6535);const _0x57cd92=Math[_0x1b6503(0x11e)](_0x222ac5/this[_0x1b6503(0x153)])*this[_0x1b6503(0x153)];if(!_0x143ce8||_0x143ce8[_0x1b6503(0x12f)]!==_0x57cd92){if(_0x143ce8){const _0x914633={'timestamp':_0x143ce8['startTime'],'open':_0x143ce8['open'],'high':_0x143ce8['high'],'low':_0x143ce8['low'],'close':_0x143ce8[_0x1b6503(0x1ac)],'volume':_0x143ce8['volume']},_0x1a4ebb=this[_0x1b6503(0x133)](_0x3f6535,_0x914633);return this['currentBar']['set'](_0x3f6535,{'startTime':_0x57cd92,'open':_0x1b0c2c,'high':_0x1b0c2c,'low':_0x1b0c2c,'close':_0x1b0c2c,'volume':_0x15d4ff}),_0x1a4ebb;}else return this[_0x1b6503(0x13f)][_0x1b6503(0x19f)](_0x3f6535,{'startTime':_0x57cd92,'open':_0x1b0c2c,'high':_0x1b0c2c,'low':_0x1b0c2c,'close':_0x1b0c2c,'volume':_0x15d4ff}),null;}else return _0x143ce8[_0x1b6503(0x176)]=Math[_0x1b6503(0x126)](_0x143ce8[_0x1b6503(0x176)],_0x1b0c2c),_0x143ce8[_0x1b6503(0x191)]=Math[_0x1b6503(0x181)](_0x143ce8[_0x1b6503(0x191)],_0x1b0c2c),_0x143ce8[_0x1b6503(0x1ac)]=_0x1b0c2c,_0x143ce8[_0x1b6503(0x165)]+=_0x15d4ff,null;}['onTick'](_0x1c4e6b){const _0xee5035=_0x3c2c79;return this[_0xee5035(0x189)](_0x1c4e6b);}['onTrade'](_0x3cacf6){const _0x49c4c0=_0x3c2c79;return this['processTick']({'contractId':_0x3cacf6['contractId']||_0x3cacf6['symbol'],'price':_0x3cacf6[_0x49c4c0(0x13e)],'volume':_0x3cacf6[_0x49c4c0(0x1ab)]||_0x3cacf6[_0x49c4c0(0x165)]||0x1,'timestamp':_0x3cacf6[_0x49c4c0(0x184)]||Date[_0x49c4c0(0x199)]()});}[_0x3c2c79(0x133)](_0x35e484,_0x28439a){const _0x128f24=_0x3c2c79;let _0x3f7c59=this[_0x128f24(0x117)]['get'](_0x35e484);!_0x3f7c59&&(this[_0x128f24(0x16e)](_0x35e484),_0x3f7c59=this[_0x128f24(0x117)][_0x128f24(0x14d)](_0x35e484));_0x3f7c59['push'](_0x28439a);if(_0x3f7c59[_0x128f24(0x197)]>0x1f4)_0x3f7c59['shift']();const _0x328a5c=_0x3f7c59[_0x128f24(0x197)]-0x1;if(_0x3f7c59['length']<this['config'][_0x128f24(0x148)]['lookbackBars']*0x3)return null;const _0x5b9c9b=this[_0x128f24(0x17e)]['get'](_0x35e484)['length'];this['_detectSwings'](_0x35e484,_0x3f7c59,_0x328a5c);const _0x517b49=this['swingPoints'][_0x128f24(0x14d)](_0x35e484);if(_0x517b49[_0x128f24(0x197)]>_0x5b9c9b){const _0x3cbed6=_0x517b49[_0x517b49['length']-0x1];this['emit'](_0x128f24(0x1ad),{'type':_0x128f24(0x177),'message':'[2B]\x20NEW\x20SWING\x20'+_0x3cbed6['type'][_0x128f24(0x15a)]()+'\x20@\x20'+_0x3cbed6[_0x128f24(0x13e)]['toFixed'](0x2)+_0x128f24(0x19d)+_0x517b49['length']});}const _0x1f5273=this[_0x128f24(0x11a)](_0x35e484,_0x3f7c59,_0x328a5c);_0x1f5273&&this['emit'](_0x128f24(0x1ad),{'type':_0x128f24(0x177),'message':_0x128f24(0x1a0)+_0x1f5273['sweepType']+'\x20|\x20Valid:\x20'+_0x1f5273[_0x128f24(0x1a1)]+'\x20|\x20Pen:\x20'+_0x1f5273['penetrationTicks'][_0x128f24(0x192)](0x1)+'t\x20|\x20Q:\x20'+(_0x1f5273[_0x128f24(0x1aa)]*0x64)[_0x128f24(0x192)](0x0)+'%'});const _0x547e4f=this['liquidityZones']['get'](_0x35e484)[_0x128f24(0x197)];this[_0x128f24(0x164)](_0x35e484,_0x328a5c);const _0x6a3c62=this['liquidityZones'][_0x128f24(0x14d)](_0x35e484);if(_0x6a3c62[_0x128f24(0x197)]>_0x547e4f){const _0x173ed7=_0x6a3c62[_0x6a3c62[_0x128f24(0x197)]-0x1];this['emit']('log',{'type':'debug','message':_0x128f24(0x17a)+_0x173ed7['type'][_0x128f24(0x15a)]()+_0x128f24(0x172)+_0x173ed7[_0x128f24(0x139)]()['toFixed'](0x2)+'\x20|\x20Total:\x20'+_0x6a3c62['length']});}if(_0x1f5273&&_0x1f5273[_0x128f24(0x1a1)]){this[_0x128f24(0x1a2)]('log',{'type':_0x128f24(0x177),'message':_0x128f24(0x129)+_0x1f5273[_0x128f24(0x185)]+'\x20sweep...'});const _0x170907=this[_0x128f24(0x14c)](_0x35e484,_0x28439a,_0x328a5c,_0x1f5273);return!_0x170907&&this['emit'](_0x128f24(0x1ad),{'type':'debug','message':_0x128f24(0x178)}),_0x170907;}return null;}[_0x3c2c79(0x183)](_0x53b086,_0xd2b83e,_0x2e4c6e){const _0x3d9adb=_0x3c2c79,_0x1d03d9=this[_0x3d9adb(0x128)][_0x3d9adb(0x148)]['lookbackBars'],_0x5aade9=this['config'][_0x3d9adb(0x148)]['minStrength'];if(_0x2e4c6e<_0x1d03d9*0x2)return;const _0x401dcd=this['swingPoints']['get'](_0x53b086),_0x2eb524=_0x2e4c6e-_0x1d03d9,_0x3876de=_0xd2b83e[_0x2eb524];let _0x8112a=!![],_0x33497c=0x0;for(let _0x2b97ec=_0x2eb524-_0x1d03d9;_0x2b97ec<=_0x2eb524+_0x1d03d9;_0x2b97ec++){if(_0x2b97ec===_0x2eb524||_0x2b97ec<0x0||_0x2b97ec>=_0xd2b83e['length'])continue;if(_0xd2b83e[_0x2b97ec][_0x3d9adb(0x176)]>=_0x3876de[_0x3d9adb(0x176)]){_0x8112a=![];break;}_0x33497c++;}if(_0x8112a&&_0x33497c>=_0x5aade9){const _0x896569=_0x401dcd[_0x3d9adb(0x14e)](_0x246a61=>_0x246a61[_0x3d9adb(0x195)]===_0x2eb524&&_0x246a61[_0x3d9adb(0x145)]===_0x3d9adb(0x176));!_0x896569&&_0x401dcd['push'](new SwingPoint(_0x3d9adb(0x176),_0x3876de[_0x3d9adb(0x176)],_0x2eb524,_0x3876de[_0x3d9adb(0x184)],_0x33497c));}let _0x1478c8=!![],_0x24cb3d=0x0;for(let _0x1cd509=_0x2eb524-_0x1d03d9;_0x1cd509<=_0x2eb524+_0x1d03d9;_0x1cd509++){if(_0x1cd509===_0x2eb524||_0x1cd509<0x0||_0x1cd509>=_0xd2b83e[_0x3d9adb(0x197)])continue;if(_0xd2b83e[_0x1cd509]['low']<=_0x3876de['low']){_0x1478c8=![];break;}_0x24cb3d++;}if(_0x1478c8&&_0x24cb3d>=_0x5aade9){const _0x5b749b=_0x401dcd[_0x3d9adb(0x14e)](_0x5685f3=>_0x5685f3[_0x3d9adb(0x195)]===_0x2eb524&&_0x5685f3['type']==='low');!_0x5b749b&&_0x401dcd[_0x3d9adb(0x120)](new SwingPoint(_0x3d9adb(0x191),_0x3876de['low'],_0x2eb524,_0x3876de[_0x3d9adb(0x184)],_0x24cb3d));}const _0x1eb0b7=this[_0x3d9adb(0x128)]['zone'][_0x3d9adb(0x12b)];while(_0x401dcd[_0x3d9adb(0x197)]>0x0&&_0x401dcd[0x0][_0x3d9adb(0x195)]<_0x2e4c6e-_0x1eb0b7){_0x401dcd[_0x3d9adb(0x135)]();}}[_0x3c2c79(0x164)](_0x2a7d5e,_0x4d04f6){const _0x35951b=_0x3c2c79,_0x465fe9=this[_0x35951b(0x17e)]['get'](_0x2a7d5e),_0x43d9b2=this['liquidityZones'][_0x35951b(0x14d)](_0x2a7d5e),_0x16aa39=this['config']['zone'][_0x35951b(0x19e)]*this[_0x35951b(0x17b)],_0x387e8b=this[_0x35951b(0x128)][_0x35951b(0x16f)][_0x35951b(0x12b)];for(let _0x1af409=_0x43d9b2['length']-0x1;_0x1af409>=0x0;_0x1af409--){_0x4d04f6-_0x43d9b2[_0x1af409][_0x35951b(0x195)]>_0x387e8b&&_0x43d9b2[_0x35951b(0x12c)](_0x1af409,0x1);}for(const _0x2a73ac of _0x465fe9){let _0x2a8b30=null;for(const _0x5500dc of _0x43d9b2){if(_0x5500dc['containsPrice'](_0x2a73ac[_0x35951b(0x13e)],this['config'][_0x35951b(0x16f)][_0x35951b(0x19e)],this[_0x35951b(0x17b)])){_0x2a8b30=_0x5500dc;break;}}if(_0x2a8b30){_0x2a8b30['touches']++;if(_0x2a73ac[_0x35951b(0x13e)]>_0x2a8b30['priceHigh'])_0x2a8b30['priceHigh']=_0x2a73ac['price'];if(_0x2a73ac['price']<_0x2a8b30['priceLow'])_0x2a8b30[_0x35951b(0x11b)]=_0x2a73ac[_0x35951b(0x13e)];_0x2a8b30['qualityScore']=Math['min'](0x1,0.3+_0x2a8b30['touches']*0.15);}else{const _0x299f07=_0x2a73ac['type']===_0x35951b(0x176)?ZoneType['RESISTANCE']:ZoneType['SUPPORT'],_0x343645=new LiquidityZone(_0x299f07,_0x2a73ac[_0x35951b(0x13e)]+_0x16aa39/0x2,_0x2a73ac[_0x35951b(0x13e)]-_0x16aa39/0x2,_0x2a73ac['timestamp'],_0x2a73ac[_0x35951b(0x195)]);_0x343645[_0x35951b(0x1aa)]=0.3+_0x2a73ac['strength']*0.1,_0x43d9b2[_0x35951b(0x120)](_0x343645);}}}['_detectSweep'](_0x25ee86,_0x146c82,_0x5af283){const _0x10aa22=_0x3c2c79,_0x1efb0b=this[_0x10aa22(0x13b)]['get'](_0x25ee86),_0x439ded=_0x146c82[_0x5af283],_0x2753b3=_0x439ded[_0x10aa22(0x1ac)],_0x1a7494=this['config']['sweep'],_0x3b34dc=this['config'][_0x10aa22(0x16f)];for(const _0x2c9257 of _0x1efb0b){if(_0x2c9257['lastUsedBarIndex']>=0x0&&_0x5af283-_0x2c9257[_0x10aa22(0x175)]<_0x3b34dc[_0x10aa22(0x19a)])continue;const _0x448ff6=_0x2c9257[_0x10aa22(0x139)](),_0x505f83=Math['abs'](_0x2753b3-_0x448ff6)/this[_0x10aa22(0x17b)];if(_0x505f83>_0x3b34dc['maxZoneDistanceTicks'])continue;const _0x130a81=Math[_0x10aa22(0x126)](0x0,_0x5af283-_0x1a7494[_0x10aa22(0x12d)]*0x2);for(let _0x1fe75e=_0x130a81;_0x1fe75e<_0x5af283;_0x1fe75e++){const _0x21823b=_0x146c82[_0x1fe75e];if(_0x2c9257['type']===ZoneType[_0x10aa22(0x12e)]){const _0x13df06=(_0x21823b['high']-_0x2c9257['priceHigh'])/this['tickSize'];if(_0x13df06>=_0x1a7494[_0x10aa22(0x16d)]&&_0x13df06<=_0x1a7494[_0x10aa22(0x116)]){const _0x307fae=Math[_0x10aa22(0x181)](_0x2c9257['priceHigh'],_0x2c9257[_0x10aa22(0x1a4)]+_0x13df06*this['tickSize']);if(_0x2753b3<_0x307fae+this[_0x10aa22(0x17b)]*0x2){const _0x128da3=_0x21823b[_0x10aa22(0x176)]-_0x21823b['low'],_0x14d4bf=Math['abs'](_0x21823b['close']-_0x21823b['open']),_0x5eefa3=_0x128da3>0x0?_0x14d4bf/_0x128da3:0x0;if(_0x5eefa3>=_0x1a7494['minBodyRatio']){const _0x4d188b=this[_0x10aa22(0x122)](_0x146c82,_0x1fe75e,0x14);if(_0x4d188b>=_0x1a7494[_0x10aa22(0x18f)]){const _0x759152=new SweepEvent(SweepType[_0x10aa22(0x11f)],_0x2c9257,_0x1fe75e,_0x1fe75e,_0x21823b[_0x10aa22(0x176)]);_0x759152[_0x10aa22(0x131)]=_0x5af283,_0x759152['penetrationTicks']=_0x13df06,_0x759152[_0x10aa22(0x13c)]=_0x5af283-_0x1fe75e,_0x759152['volumeRatio']=_0x4d188b,_0x759152['qualityScore']=this['_scoreSweep'](_0x759152,_0x5eefa3),_0x759152['isValid']=_0x759152[_0x10aa22(0x1aa)]>=_0x1a7494[_0x10aa22(0x149)];if(_0x759152['isValid'])return _0x759152;}}}}}if(_0x2c9257['type']===ZoneType[_0x10aa22(0x196)]){const _0x45ac67=(_0x2c9257['priceLow']-_0x21823b['low'])/this[_0x10aa22(0x17b)];if(_0x45ac67>=_0x1a7494[_0x10aa22(0x16d)]&&_0x45ac67<=_0x1a7494[_0x10aa22(0x116)]){const _0x19ee56=Math['max'](_0x2c9257[_0x10aa22(0x11b)],_0x2c9257['priceLow']-_0x45ac67*this[_0x10aa22(0x17b)]);if(_0x2753b3>_0x19ee56-this[_0x10aa22(0x17b)]*0x2){const _0x281d8b=_0x21823b['high']-_0x21823b['low'],_0xc92c37=Math[_0x10aa22(0x167)](_0x21823b['close']-_0x21823b[_0x10aa22(0x123)]),_0xbc603c=_0x281d8b>0x0?_0xc92c37/_0x281d8b:0x0;if(_0xbc603c>=_0x1a7494['minBodyRatio']){const _0x367213=this['_getVolumeRatio'](_0x146c82,_0x1fe75e,0x14);if(_0x367213>=_0x1a7494['minVolumeRatio']){const _0x3a2885=new SweepEvent(SweepType['LOW_SWEEP'],_0x2c9257,_0x1fe75e,_0x1fe75e,_0x21823b[_0x10aa22(0x191)]);_0x3a2885['exitBarIndex']=_0x5af283,_0x3a2885['penetrationTicks']=_0x45ac67,_0x3a2885['durationBars']=_0x5af283-_0x1fe75e,_0x3a2885['volumeRatio']=_0x367213,_0x3a2885['qualityScore']=this['_scoreSweep'](_0x3a2885,_0xbc603c),_0x3a2885['isValid']=_0x3a2885[_0x10aa22(0x1aa)]>=_0x1a7494[_0x10aa22(0x149)];if(_0x3a2885['isValid'])return _0x3a2885;}}}}}}}return null;}[_0x3c2c79(0x122)](_0x6fb17f,_0x1ceb64,_0x4fb291){const _0x3707b1=_0x3c2c79,_0x264191=Math[_0x3707b1(0x126)](0x0,_0x1ceb64-_0x4fb291),_0x202d8f=_0x6fb17f['slice'](_0x264191,_0x1ceb64);if(_0x202d8f['length']===0x0)return 0x1;const _0x33ba18=_0x202d8f['map'](_0x35f097=>_0x35f097[_0x3707b1(0x165)])['sort']((_0x5e80e2,_0x4ba738)=>_0x5e80e2-_0x4ba738),_0x522d9a=Math[_0x3707b1(0x11e)](_0x33ba18[_0x3707b1(0x197)]/0x2),_0x214fb5=_0x33ba18[_0x522d9a]||0x1;return _0x6fb17f[_0x1ceb64]['volume']/_0x214fb5;}['_scoreSweep'](_0x4669c0,_0x439bcc){const _0x57063=_0x3c2c79;let _0x18b656=0x0;const _0x426427=0x4,_0x12f3fa=Math[_0x57063(0x167)](_0x4669c0['penetrationTicks']-_0x426427);return _0x18b656+=Math['max'](0x0,0.3-_0x12f3fa*0.03),_0x18b656+=Math[_0x57063(0x126)](0x0,0.25-_0x4669c0[_0x57063(0x13c)]*0.05),_0x18b656+=Math['min'](0.25,_0x4669c0['volumeRatio']*0.1),_0x18b656+=Math['min'](0.2,_0x439bcc*0.4),Math[_0x57063(0x181)](0x1,_0x18b656);}['_generateSignal'](_0x46a390,_0x8b7857,_0x5e7564,_0x10cf4b){const _0x12e294=_0x3c2c79,_0xb0e6cf=Date[_0x12e294(0x199)]()-this['lastSignalTime'];if(_0xb0e6cf<this[_0x12e294(0x128)]['execution'][_0x12e294(0x159)])return this['emit'](_0x12e294(0x1ad),{'type':'debug','message':'[2B]\x20Signal\x20blocked\x20by\x20cooldown\x20('+(_0xb0e6cf/0x3e8)['toFixed'](0x1)+_0x12e294(0x182)+this['config'][_0x12e294(0x18e)][_0x12e294(0x159)]/0x3e8+'s)'}),null;const _0x3a38ce=this[_0x12e294(0x128)]['execution'],_0x1487ea=_0x8b7857['close'],_0x3d7861=_0x10cf4b['sweepType']===SweepType['HIGH_SWEEP']?_0x12e294(0x169):'long';let _0x38c2c8,_0x331476,_0x159785,_0x3ae0d9;_0x3d7861==='long'?(_0x38c2c8=_0x1487ea-_0x3a38ce['stopTicks']*this[_0x12e294(0x17b)],_0x331476=_0x1487ea+_0x3a38ce[_0x12e294(0x115)]*this[_0x12e294(0x17b)],_0x159785=_0x1487ea+_0x3a38ce['breakevenTicks']*this['tickSize'],_0x3ae0d9=_0x1487ea+_0x3a38ce['trailTriggerTicks']*this['tickSize']):(_0x38c2c8=_0x1487ea+_0x3a38ce[_0x12e294(0x17d)]*this[_0x12e294(0x17b)],_0x331476=_0x1487ea-_0x3a38ce['targetTicks']*this['tickSize'],_0x159785=_0x1487ea-_0x3a38ce['breakevenTicks']*this['tickSize'],_0x3ae0d9=_0x1487ea-_0x3a38ce['trailTriggerTicks']*this['tickSize']);const _0x5ca101=_0x3a38ce['targetTicks']/_0x3a38ce[_0x12e294(0x17d)],_0x280928=Math[_0x12e294(0x181)](0x1,_0x10cf4b[_0x12e294(0x1aa)]*0.5+_0x10cf4b[_0x12e294(0x16f)][_0x12e294(0x1aa)]*0.3+(_0x10cf4b[_0x12e294(0x194)]>1.5?0.2:_0x10cf4b['volumeRatio']*0.1));let _0x511247=SignalStrength[_0x12e294(0x168)];if(_0x280928>=0.8)_0x511247=SignalStrength['VERY_STRONG'];else{if(_0x280928>=0.65)_0x511247=SignalStrength[_0x12e294(0x154)];else{if(_0x280928<0.5)_0x511247=SignalStrength[_0x12e294(0x146)];}}const _0x444401=0.5+(_0x280928-0.5)*0.4,_0x486bba=_0x444401*Math[_0x12e294(0x167)](_0x331476-_0x1487ea)-(0x1-_0x444401)*Math[_0x12e294(0x167)](_0x1487ea-_0x38c2c8);_0x10cf4b[_0x12e294(0x16f)]['lastUsedBarIndex']=_0x5e7564,_0x10cf4b[_0x12e294(0x16f)][_0x12e294(0x171)]=!![],_0x10cf4b['zone'][_0x12e294(0x160)]=new Date(_0x8b7857[_0x12e294(0x184)]),this['lastSignalTime']=Date['now'](),this[_0x12e294(0x193)]['signals']++;const _0xff5c2b={'id':uuidv4(),'timestamp':Date[_0x12e294(0x199)](),'symbol':_0x46a390[_0x12e294(0x114)]('.')[0x0]||_0x46a390,'contractId':_0x46a390,'side':_0x3d7861==='long'?OrderSide[_0x12e294(0x13d)]:OrderSide['ASK'],'direction':_0x3d7861,'strategy':_0x12e294(0x15c),'strength':_0x511247,'edge':_0x486bba,'confidence':_0x280928,'entry':_0x1487ea,'entryPrice':_0x1487ea,'stopLoss':_0x38c2c8,'takeProfit':_0x331476,'riskReward':_0x5ca101,'stopTicks':_0x3a38ce[_0x12e294(0x17d)],'targetTicks':_0x3a38ce['targetTicks'],'breakevenTicks':_0x3a38ce[_0x12e294(0x1a3)],'trailTriggerTicks':_0x3a38ce[_0x12e294(0x13a)],'trailDistanceTicks':_0x3a38ce[_0x12e294(0x161)],'beLevel':_0x159785,'trailTrigger':_0x3ae0d9,'sweepType':_0x10cf4b[_0x12e294(0x185)],'penetrationTicks':_0x10cf4b[_0x12e294(0x18c)],'sweepDurationBars':_0x10cf4b['durationBars'],'sweepQuality':_0x10cf4b['qualityScore'],'volumeRatio':_0x10cf4b[_0x12e294(0x194)],'zoneType':_0x10cf4b['zone']['type'],'zoneLevel':_0x10cf4b['zone'][_0x12e294(0x139)](),'zoneTouches':_0x10cf4b[_0x12e294(0x16f)][_0x12e294(0x155)],'zoneQuality':_0x10cf4b['zone'][_0x12e294(0x1aa)],'expires':Date['now']()+0xea60};return this['emit'](_0x12e294(0x121),{'side':_0x3d7861===_0x12e294(0x1a8)?_0x12e294(0x151):'sell','action':_0x12e294(0x123),'reason':'2B\x20'+_0x10cf4b['sweepType']+_0x12e294(0x130)+_0x10cf4b['penetrationTicks']['toFixed'](0x1)+'t\x20|\x20Vol:'+_0x10cf4b['volumeRatio']['toFixed'](0x1)+_0x12e294(0x198)+(_0x10cf4b['qualityScore']*0x64)[_0x12e294(0x192)](0x0)+'%',..._0xff5c2b}),this['emit'](_0x12e294(0x1ad),{'type':_0x12e294(0x187),'message':'[HQX-2B]\x20SIGNAL:\x20'+_0x3d7861[_0x12e294(0x15a)]()+_0x12e294(0x172)+_0x1487ea['toFixed'](0x2)+_0x12e294(0x127)+_0x10cf4b['sweepType']+_0x12e294(0x130)+_0x10cf4b['penetrationTicks'][_0x12e294(0x192)](0x1)+'t\x20Vol:'+_0x10cf4b[_0x12e294(0x194)]['toFixed'](0x1)+'x\x20|\x20Conf:'+(_0x280928*0x64)['toFixed'](0x0)+'%'}),_0xff5c2b;}[_0x3c2c79(0x17f)](_0x148f90,_0x38363f){const _0x5cdd8f=_0x3c2c79,_0x44cbcc=this[_0x5cdd8f(0x117)][_0x5cdd8f(0x14d)](_0x148f90)||[],_0x7c10e7=this[_0x5cdd8f(0x13b)]['get'](_0x148f90)||[],_0x25dd0c=this[_0x5cdd8f(0x17e)][_0x5cdd8f(0x14d)](_0x148f90)||[];if(_0x44cbcc[_0x5cdd8f(0x197)]<0x5)return{'ready':![],'message':_0x5cdd8f(0x16c)+_0x44cbcc[_0x5cdd8f(0x197)]+_0x5cdd8f(0x124)};const _0x2ff932=_0x7c10e7[_0x5cdd8f(0x18d)](_0x4d7d2a=>({'zone':_0x4d7d2a,'distance':Math['abs'](_0x38363f-_0x4d7d2a[_0x5cdd8f(0x139)]())}))[_0x5cdd8f(0x190)]((_0x19f3d4,_0x2b6c91)=>_0x19f3d4['distance']-_0x2b6c91[_0x5cdd8f(0x152)]),_0xacfc44=_0x2ff932[_0x5cdd8f(0x14e)](_0x17a28d=>_0x17a28d[_0x5cdd8f(0x16f)][_0x5cdd8f(0x145)]===ZoneType['RESISTANCE']),_0x34cc80=_0x2ff932[_0x5cdd8f(0x14e)](_0x203c43=>_0x203c43['zone'][_0x5cdd8f(0x145)]===ZoneType['SUPPORT']);return{'ready':!![],'barsProcessed':_0x44cbcc[_0x5cdd8f(0x197)],'swingsDetected':_0x25dd0c[_0x5cdd8f(0x197)],'activeZones':_0x7c10e7['length'],'nearestResistance':_0xacfc44?_0xacfc44[_0x5cdd8f(0x16f)]['getLevel']():null,'nearestSupport':_0x34cc80?_0x34cc80['zone']['getLevel']():null,'stopTicks':this[_0x5cdd8f(0x128)][_0x5cdd8f(0x18e)][_0x5cdd8f(0x17d)],'targetTicks':this[_0x5cdd8f(0x128)]['execution'][_0x5cdd8f(0x115)],'strategy':_0x5cdd8f(0x156)};}[_0x3c2c79(0x173)](_0x41d059){const _0xc6178f=_0x3c2c79;this[_0xc6178f(0x15b)][_0xc6178f(0x120)]({'netPnl':_0x41d059,'timestamp':Date['now']()});if(this['recentTrades']['length']>0x64)this['recentTrades'][_0xc6178f(0x135)]();_0x41d059>0x0?this['stats'][_0xc6178f(0x1a9)]++:this[_0xc6178f(0x193)]['losses']++,this['stats']['trades']++,this[_0xc6178f(0x193)]['pnl']+=_0x41d059,this['emit']('log',{'type':_0xc6178f(0x177),'message':'[HQX-2B]\x20Trade\x20result:\x20'+(_0x41d059>0x0?_0xc6178f(0x119):_0xc6178f(0x162))+'\x20$'+_0x41d059['toFixed'](0x2)});}['getBarHistory'](_0x24aeff){return this['barHistory']['get'](_0x24aeff)||[];}[_0x3c2c79(0x17c)](){return this['stats'];}[_0x3c2c79(0x18b)](_0x2af4f3){const _0x20a135=_0x3c2c79,_0xf3be6e=this[_0x20a135(0x117)]['get'](_0x2af4f3)||[],_0x20f361=this[_0x20a135(0x13b)][_0x20a135(0x14d)](_0x2af4f3)||[],_0x4a2ef7=this['swingPoints']['get'](_0x2af4f3)||[],_0x53eda4=this['currentBar'][_0x20a135(0x14d)](_0x2af4f3),_0x1bf284=_0xf3be6e[_0xf3be6e['length']-0x1],_0x2d0b8d=_0x1bf284?Date['now']()-_0x1bf284['timestamp']:null,_0x1c22ed=_0x20f361[_0x20a135(0x11c)](_0x138bfa=>_0x138bfa['type']===ZoneType['RESISTANCE'])['length'],_0x2a363f=_0x20f361['filter'](_0x5d761c=>_0x5d761c['type']===ZoneType['SUPPORT'])['length'];return{'healthy':_0xf3be6e[_0x20a135(0x197)]>=0x5,'barsTotal':_0xf3be6e['length'],'barsLast5Min':_0xf3be6e[_0x20a135(0x11c)](_0x5aca2d=>Date['now']()-_0x5aca2d['timestamp']<0x5*0x3c*0x3e8)['length'],'swingsTotal':_0x4a2ef7[_0x20a135(0x197)],'zonesResistance':_0x1c22ed,'zonesSupport':_0x2a363f,'zonesTotal':_0x20f361['length'],'currentBarTicks':_0x53eda4?_0x53eda4[_0x20a135(0x134)]:0x0,'isAggregating':_0x53eda4&&_0x53eda4[_0x20a135(0x134)]>0x0,'timeSinceLastBarMs':_0x2d0b8d,'lastSignalTime':this[_0x20a135(0x150)],'signalCooldownMs':this[_0x20a135(0x128)][_0x20a135(0x18e)]['cooldownMs'],'uptime':Date['now']()-(this['startTime']||Date['now']())};}['reset'](_0x204b27){const _0x2fe758=_0x3c2c79;this[_0x2fe758(0x117)][_0x2fe758(0x19f)](_0x204b27,[]),this[_0x2fe758(0x17e)]['set'](_0x204b27,[]),this[_0x2fe758(0x13b)]['set'](_0x204b27,[]),this[_0x2fe758(0x158)]['set'](_0x204b27,[]),this[_0x2fe758(0x13f)][_0x2fe758(0x188)](_0x204b27),this[_0x2fe758(0x1a2)](_0x2fe758(0x1ad),{'type':'info','message':'[HQX-2B]\x20Reset\x20state\x20for\x20'+_0x204b27});}['preloadBars'](_0x51174e,_0x50d3c4){const _0x1702ad=_0x3c2c79;if(!_0x50d3c4||_0x50d3c4['length']===0x0){this[_0x1702ad(0x1a2)](_0x1702ad(0x1ad),{'type':'debug','message':'[HQX-2B]\x20No\x20historical\x20bars\x20to\x20preload'});return;}!this[_0x1702ad(0x117)][_0x1702ad(0x1ae)](_0x51174e)&&this['initialize'](_0x51174e);const _0x26b1bc=[..._0x50d3c4]['sort']((_0x49cef0,_0x440a6f)=>_0x49cef0[_0x1702ad(0x184)]-_0x440a6f['timestamp']);this['emit']('log',{'type':'info','message':'[HQX-2B]\x20Preloading\x20'+_0x26b1bc[_0x1702ad(0x197)]+_0x1702ad(0x141)});let _0x46099c=0x0;for(const _0x6a6972 of _0x26b1bc){const _0x2d6015=this[_0x1702ad(0x133)](_0x51174e,_0x6a6972);if(_0x2d6015)_0x46099c++;}const _0x3bdbdc=this['barHistory'][_0x1702ad(0x14d)](_0x51174e)||[],_0x6235e9=this[_0x1702ad(0x17e)]['get'](_0x51174e)||[],_0x3c280b=this[_0x1702ad(0x13b)][_0x1702ad(0x14d)](_0x51174e)||[];this[_0x1702ad(0x1a2)]('log',{'type':'info','message':_0x1702ad(0x19b)+_0x3bdbdc[_0x1702ad(0x197)]+'\x20bars,\x20'+_0x6235e9[_0x1702ad(0x197)]+'\x20swings,\x20'+_0x3c280b[_0x1702ad(0x197)]+'\x20zones'}),_0x46099c>0x0&&this['emit']('log',{'type':'debug','message':'[HQX-2B]\x20'+_0x46099c+_0x1702ad(0x138)}),this[_0x1702ad(0x150)]=0x0;}}function _0x3286(_0x3044e3,_0x56310f){_0x3044e3=_0x3044e3-0x114;const _0x230694=_0x2306();let _0x32866b=_0x230694[_0x3044e3];return _0x32866b;}class HQX2BStrategy extends EventEmitter{constructor(_0x300ae8={}){const _0x5c848d=_0x3c2c79;super(),this[_0x5c848d(0x128)]=_0x300ae8,this[_0x5c848d(0x18a)]=new HQX2BLiquiditySweep(_0x300ae8),this['strategy']['on'](_0x5c848d(0x121),_0x570bcb=>this[_0x5c848d(0x1a2)]('signal',_0x570bcb)),this['strategy']['on'](_0x5c848d(0x1ad),_0x71898a=>this['emit']('log',_0x71898a));}['processTick'](_0x174544){const _0x302f2b=_0x3c2c79;return this[_0x302f2b(0x18a)][_0x302f2b(0x189)](_0x174544);}[_0x3c2c79(0x144)](_0x5c7d9c){const _0x4274bc=_0x3c2c79;return this[_0x4274bc(0x18a)]['onTick'](_0x5c7d9c);}[_0x3c2c79(0x143)](_0x163ba0){const _0x4f4246=_0x3c2c79;return this['strategy'][_0x4f4246(0x143)](_0x163ba0);}['processBar'](_0x1f5bd9,_0x2629d3){return this['strategy']['processBar'](_0x1f5bd9,_0x2629d3);}['initialize'](_0x3d64ff,_0x47305d,_0x604d79){return this['strategy']['initialize'](_0x3d64ff,_0x47305d,_0x604d79);}['getAnalysisState'](_0x5d93d8,_0x5dfcfb){const _0x2ba36d=_0x3c2c79;return this[_0x2ba36d(0x18a)]['getAnalysisState'](_0x5d93d8,_0x5dfcfb);}['recordTradeResult'](_0x3c2dc1){const _0x2cdbd6=_0x3c2c79;return this[_0x2cdbd6(0x18a)]['recordTradeResult'](_0x3c2dc1);}[_0x3c2c79(0x19c)](_0x411477){return this['strategy']['reset'](_0x411477);}['getStats'](){const _0x121bfc=_0x3c2c79;return this[_0x121bfc(0x18a)][_0x121bfc(0x17c)]();}[_0x3c2c79(0x186)](_0x3a9ae0){const _0x683ede=_0x3c2c79;return this[_0x683ede(0x18a)]['getBarHistory'](_0x3a9ae0);}[_0x3c2c79(0x132)](_0x477061,_0x5a6c68){return this['strategy']['preloadBars'](_0x477061,_0x5a6c68);}[_0x3c2c79(0x18b)](_0x450f8e){const _0x2af21b=_0x3c2c79;return this[_0x2af21b(0x18a)]['getHealthStatus'](_0x450f8e);}[_0x3c2c79(0x14a)](_0x4b30fc){return null;}}module[_0x3c2c79(0x15d)]={'HQX2BLiquiditySweep':HQX2BLiquiditySweep,'HQX2BStrategy':HQX2BStrategy,'M2':HQX2BStrategy,'S2':HQX2BLiquiditySweep,'OrderSide':OrderSide,'SignalStrength':SignalStrength,'SweepType':SweepType,'ZoneType':ZoneType,'DEFAULT_CONFIG':DEFAULT_CONFIG};
|
|
1
|
+
function _0x3c3f(){const _0x46117a=['lastSignalTime','getFullYear','\x20historical\x20bars...','tickValue','_updateZones','maxZoneAgeBars','tickSize','isValid','signals','SUPPORT','length','enabled','t,\x20Trail=','getStats','recentTrades','symbol','_getVolumeRatio','x\x20|\x20Conf:','close','exitBarIndex','low',':\x20tick=','_tickCount','barHistory','entryBarIndex','priceLow','priceHigh','processBar','minBodyRatio','onTick','activeSweeps','\x20@\x20','long','emit','liquidityZones','\x20closed\x20@\x20','clusterToleranceTicks','HQX-2B\x20Liquidity\x20Sweep\x20(Optimized)','America/New_York','s\x20<\x20','trailDistanceTicks','\x20H:','isArray','uuid','cooldownBars','open','signal','get','barIndex','stats','contractId','getLevel','resistance','durationBars','filter','config','preloadBars','\x20|\x20O:','x\x20|\x20Q:','t,\x20Target=','[2B]\x20NEW\x20SWING\x20','minPenetrationTicks','\x20|\x20Bar\x20','maxDurationBars','price','type','BID','toUpperCase','_detectSwings','shift','short','3402636llhlyn','\x20|\x20Valid:\x20','min','penetrationTicks','now','wins','swept','HIGH_SWEEP','\x20zones','stopTicks','timestamp','sweepType','size','breakevenTicks','qualityScore','2B\x20','[SWING]\x20NEW\x20HIGH\x20@\x20','_mergeConfig','\x20|\x20Total:\x20','t,\x20BE=','extremePrice','set','find','10737041vgMdXj','high','[2B]\x20SWEEP\x20','\x20|\x20Pen:','floor','support','\x20swings,\x20','lookbackBars','info','reset','MODERATE','log','[SWING]\x20NEW\x20LOW\x20@\x20','[HQX-2B]\x20Initialized\x20for\x20','session','minStrength','26162992hJuefX','54HXgmBP','volume','[HQX-2B]\x20Reset\x20state\x20for\x20','sort','abs','[HQX-2B]\x20Trade\x20result:\x20','execution','68438ysmZZa','\x20L:','getBarHistory','push','lastUsedBarIndex','323357hZOlZD','trailTriggerTicks','targetTicks','_scoreSweep','swing','swingPoints','7839295fiKrBO','[BAR]\x20#','startTime','volumeRatio','LOW_SWEEP','touches','[2B]\x20_generateSignal\x20returned\x20null\x20(likely\x20cooldown)','toFixed','debug','getTimezoneOffset','currentBar','minVolumeRatio','_detectSweep','\x20historical\x20signals\x20detected\x20(ignored)','barIntervalMs','WIN','Collecting\x20data...\x20','53204MyKQeC','distance','zone','strategy','processTick','getHealthStatus','max','strength','RESISTANCE','[2B]\x20NEW\x20ZONE\x20'];_0x3c3f=function(){return _0x46117a;};return _0x3c3f();}function _0x21a1(_0x212681,_0xebdd1f){_0x212681=_0x212681-0x134;const _0x3c3f23=_0x3c3f();let _0x21a1d7=_0x3c3f23[_0x212681];return _0x21a1d7;}const _0x2b7f26=_0x21a1;(function(_0x34201e,_0x46ebca){const _0x3608db=_0x21a1,_0x2b8f76=_0x34201e();while(!![]){try{const _0x52ce90=parseInt(_0x3608db(0x160))/0x1+parseInt(_0x3608db(0x15b))/0x2+-parseInt(_0x3608db(0x154))/0x3*(-parseInt(_0x3608db(0x177))/0x4)+parseInt(_0x3608db(0x166))/0x5+parseInt(_0x3608db(0x1c8))/0x6+parseInt(_0x3608db(0x143))/0x7+-parseInt(_0x3608db(0x153))/0x8;if(_0x52ce90===_0x46ebca)break;else _0x2b8f76['push'](_0x2b8f76['shift']());}catch(_0x4935c9){_0x2b8f76['push'](_0x2b8f76['shift']());}}}(_0x3c3f,0xf3078));const EventEmitter=require('events'),{v4:uuidv4}=require(_0x2b7f26(0x1ac)),OrderSide={'BID':0x0,'ASK':0x1},SignalStrength={'WEAK':0x1,'MODERATE':0x2,'STRONG':0x3,'VERY_STRONG':0x4},SweepType={'HIGH_SWEEP':'high','LOW_SWEEP':_0x2b7f26(0x195)},ZoneType={'RESISTANCE':_0x2b7f26(0x1b5),'SUPPORT':_0x2b7f26(0x148)},DEFAULT_CONFIG={'tickSize':0.25,'tickValue':0x5,'swing':{'lookbackBars':0x3,'minStrength':0x2,'confirmationBars':0x1},'zone':{'clusterToleranceTicks':0x4,'minTouches':0x2,'maxZoneAgeBars':0xc8,'maxZoneDistanceTicks':0x28,'cooldownBars':0xa},'sweep':{'minPenetrationTicks':0.5,'maxPenetrationTicks':0x8,'maxDurationBars':0x5,'minQualityScore':0.25,'minVolumeRatio':0.5,'minBodyRatio':0.1},'execution':{'stopTicks':0xa,'targetTicks':0x28,'breakevenTicks':0x4,'trailTriggerTicks':0x8,'trailDistanceTicks':0x4,'cooldownMs':0x3a98,'minHoldTimeMs':0x2710,'slippageTicks':0x1,'commissionPerSide':0x2},'session':{'enabled':![],'startHour':0x9,'startMinute':0x1e,'endHour':0x10,'endMinute':0x0,'timezone':_0x2b7f26(0x1a7)}};class SwingPoint{constructor(_0xf0e236,_0x4f7e3a,_0x35704e,_0x179ee7,_0x3b2e8a=0x1){const _0x43a524=_0x2b7f26;this[_0x43a524(0x1c2)]=_0xf0e236,this['price']=_0x4f7e3a,this[_0x43a524(0x1b1)]=_0x35704e,this[_0x43a524(0x136)]=_0x179ee7,this['strength']=_0x3b2e8a;}}class LiquidityZone{constructor(_0x49e7e9,_0x1262c8,_0x1e3e37,_0x466614,_0xbae350){const _0x31182c=_0x2b7f26;this['id']=uuidv4(),this[_0x31182c(0x1c2)]=_0x49e7e9,this['priceHigh']=_0x1262c8,this['priceLow']=_0x1e3e37,this['createdAt']=_0x466614,this[_0x31182c(0x1b1)]=_0xbae350,this['touches']=0x1,this['swept']=![],this['sweptAt']=null,this['lastUsedBarIndex']=-0x3e7,this['qualityScore']=0.5;}['containsPrice'](_0x23d7f5,_0x1b2ec0,_0x2c2dd0){const _0xba3b4e=_0x2b7f26,_0x135abd=_0x1b2ec0*_0x2c2dd0;return _0x23d7f5>=this['priceLow']-_0x135abd&&_0x23d7f5<=this[_0xba3b4e(0x19b)]+_0x135abd;}['getLevel'](){const _0x3a5acc=_0x2b7f26;return(this[_0x3a5acc(0x19b)]+this[_0x3a5acc(0x19a)])/0x2;}}class SweepEvent{constructor(_0x53015d,_0x1812a1,_0x4cb18e,_0x9d3d34,_0x22a75d){const _0x3d52cb=_0x2b7f26;this[_0x3d52cb(0x137)]=_0x53015d,this[_0x3d52cb(0x179)]=_0x1812a1,this[_0x3d52cb(0x199)]=_0x4cb18e,this['extremeBarIndex']=_0x9d3d34,this[_0x3d52cb(0x140)]=_0x22a75d,this[_0x3d52cb(0x194)]=null,this[_0x3d52cb(0x188)]=![],this['qualityScore']=0x0,this['penetrationTicks']=0x0,this['durationBars']=0x0,this[_0x3d52cb(0x169)]=0x1;}}class HQX2BLiquiditySweep extends EventEmitter{constructor(_0x4e94a6={}){const _0x4414f4=_0x2b7f26;super(),this[_0x4414f4(0x1b8)]=this[_0x4414f4(0x13d)](DEFAULT_CONFIG,_0x4e94a6),this[_0x4414f4(0x187)]=this['config']['tickSize'],this['tickValue']=this[_0x4414f4(0x1b8)][_0x4414f4(0x184)],this['barHistory']=new Map(),this[_0x4414f4(0x165)]=new Map(),this[_0x4414f4(0x1a3)]=new Map(),this['activeSweeps']=new Map(),this['currentBar']=new Map(),this[_0x4414f4(0x174)]=0xea60,this['lastSignalTime']=0x0,this[_0x4414f4(0x168)]=Date['now'](),this[_0x4414f4(0x1b2)]={'signals':0x0,'trades':0x0,'wins':0x0,'losses':0x0,'pnl':0x0},this[_0x4414f4(0x18f)]=[];}['_mergeConfig'](_0x533215,_0x2b1aa7){const _0x35336f=_0x2b7f26,_0x3a939b={..._0x533215};for(const _0x4442a7 in _0x2b1aa7){typeof _0x2b1aa7[_0x4442a7]==='object'&&!Array[_0x35336f(0x1ab)](_0x2b1aa7[_0x4442a7])?_0x3a939b[_0x4442a7]={..._0x533215[_0x4442a7],..._0x2b1aa7[_0x4442a7]}:_0x3a939b[_0x4442a7]=_0x2b1aa7[_0x4442a7];}return _0x3a939b;}['isWithinSession'](_0x67c104){const _0x20325a=_0x2b7f26;if(!this['config'][_0x20325a(0x151)][_0x20325a(0x18c)])return!![];const _0x5d4431=new Date(_0x67c104),_0x5024f3=this['isDST'](_0x5d4431)?-0x4:-0x5,_0x49dd08=_0x5d4431['getUTCHours'](),_0x1e0bf6=_0x5d4431['getUTCMinutes'](),_0x4e6dd3=(_0x49dd08+_0x5024f3+0x18)%0x18,{startHour:_0x1d30ba,startMinute:_0x371c1c,endHour:_0x35ddc2,endMinute:_0x667736}=this[_0x20325a(0x1b8)][_0x20325a(0x151)],_0x1f1875=_0x4e6dd3*0x3c+_0x1e0bf6,_0x3ab779=_0x1d30ba*0x3c+_0x371c1c,_0x37a76b=_0x35ddc2*0x3c+_0x667736;return _0x1f1875>=_0x3ab779&&_0x1f1875<_0x37a76b;}['isDST'](_0x3849b9){const _0x986235=_0x2b7f26,_0x386a1a=new Date(_0x3849b9[_0x986235(0x182)](),0x0,0x1),_0x2ab044=new Date(_0x3849b9[_0x986235(0x182)](),0x6,0x1),_0x5f132d=Math['max'](_0x386a1a[_0x986235(0x16f)](),_0x2ab044[_0x986235(0x16f)]());return _0x3849b9['getTimezoneOffset']()<_0x5f132d;}['initialize'](_0x5b49f2,_0x1e887d=0.25,_0x1a1603=0x5){const _0x584914=_0x2b7f26;this['tickSize']=_0x1e887d,this['tickValue']=_0x1a1603,this[_0x584914(0x1b8)]['tickSize']=_0x1e887d,this['config'][_0x584914(0x184)]=_0x1a1603,this[_0x584914(0x198)][_0x584914(0x141)](_0x5b49f2,[]),this['swingPoints']['set'](_0x5b49f2,[]),this['liquidityZones']['set'](_0x5b49f2,[]),this[_0x584914(0x19f)]['set'](_0x5b49f2,[]),this[_0x584914(0x170)]['delete'](_0x5b49f2),this['emit']('log',{'type':'info','message':_0x584914(0x150)+_0x5b49f2+_0x584914(0x196)+_0x1e887d+',\x20value='+_0x1a1603+',\x20TF=1min'}),this[_0x584914(0x1a2)](_0x584914(0x14e),{'type':_0x584914(0x14b),'message':'[HQX-2B]\x20Params:\x20Stop='+this['config']['execution']['stopTicks']+_0x584914(0x1bc)+this['config'][_0x584914(0x15a)][_0x584914(0x162)]+_0x584914(0x13f)+this['config'][_0x584914(0x15a)][_0x584914(0x139)]+_0x584914(0x18d)+this['config'][_0x584914(0x15a)][_0x584914(0x161)]+'/'+this['config'][_0x584914(0x15a)][_0x584914(0x1a9)]});}[_0x2b7f26(0x17b)](_0x15adae){const _0x492a22=_0x2b7f26,{contractId:_0xd91c87,price:_0x470291,volume:_0x56b393,timestamp:_0xf8c6c5}=_0x15adae,_0x41511c=_0xf8c6c5||Date[_0x492a22(0x1cc)](),_0x1bf693=_0x56b393||0x1;if(!this['isWithinSession'](_0x41511c))return null;if(!this[_0x492a22(0x197)])this['_tickCount']=0x0;this[_0x492a22(0x197)]++;let _0x353b5c=this['currentBar']['get'](_0xd91c87);const _0x4fa15c=Math[_0x492a22(0x147)](_0x41511c/this['barIntervalMs'])*this[_0x492a22(0x174)];if(!_0x353b5c||_0x353b5c['startTime']!==_0x4fa15c){if(_0x353b5c){const _0x2a41bc={'timestamp':_0x353b5c['startTime'],'open':_0x353b5c['open'],'high':_0x353b5c[_0x492a22(0x144)],'low':_0x353b5c[_0x492a22(0x195)],'close':_0x353b5c[_0x492a22(0x193)],'volume':_0x353b5c[_0x492a22(0x155)]},_0x560d4e=this['barHistory']['get'](_0xd91c87)||[];this[_0x492a22(0x1a2)]('log',{'type':'debug','message':_0x492a22(0x167)+(_0x560d4e['length']+0x1)+_0x492a22(0x1a4)+_0x2a41bc[_0x492a22(0x193)]['toFixed'](0x2)+_0x492a22(0x1ba)+_0x2a41bc['open']['toFixed'](0x2)+_0x492a22(0x1aa)+_0x2a41bc[_0x492a22(0x144)]['toFixed'](0x2)+_0x492a22(0x15c)+_0x2a41bc['low'][_0x492a22(0x16d)](0x2)+'\x20Vol:'+_0x2a41bc[_0x492a22(0x155)]});const _0x2894bd=this[_0x492a22(0x19c)](_0xd91c87,_0x2a41bc);return this['currentBar'][_0x492a22(0x141)](_0xd91c87,{'startTime':_0x4fa15c,'open':_0x470291,'high':_0x470291,'low':_0x470291,'close':_0x470291,'volume':_0x1bf693}),_0x2894bd;}else return this[_0x492a22(0x170)]['set'](_0xd91c87,{'startTime':_0x4fa15c,'open':_0x470291,'high':_0x470291,'low':_0x470291,'close':_0x470291,'volume':_0x1bf693}),null;}else return _0x353b5c[_0x492a22(0x144)]=Math['max'](_0x353b5c['high'],_0x470291),_0x353b5c[_0x492a22(0x195)]=Math[_0x492a22(0x1ca)](_0x353b5c[_0x492a22(0x195)],_0x470291),_0x353b5c['close']=_0x470291,_0x353b5c['volume']+=_0x1bf693,null;}['onTick'](_0x321c3a){const _0x1d8ba3=_0x2b7f26;return this[_0x1d8ba3(0x17b)](_0x321c3a);}['onTrade'](_0x1b7389){const _0x993456=_0x2b7f26;return this['processTick']({'contractId':_0x1b7389[_0x993456(0x1b3)]||_0x1b7389[_0x993456(0x190)],'price':_0x1b7389['price'],'volume':_0x1b7389[_0x993456(0x138)]||_0x1b7389['volume']||0x1,'timestamp':_0x1b7389[_0x993456(0x136)]||Date['now']()});}['processBar'](_0x1a7a65,_0x164133){const _0x22bd32=_0x2b7f26;let _0x418086=this['barHistory'][_0x22bd32(0x1b0)](_0x1a7a65);!_0x418086&&(this['initialize'](_0x1a7a65),_0x418086=this['barHistory']['get'](_0x1a7a65));_0x418086['push'](_0x164133);if(_0x418086['length']>0x1f4)_0x418086[_0x22bd32(0x1c6)]();const _0x242f18=_0x418086[_0x22bd32(0x18b)]-0x1;if(_0x418086['length']<this[_0x22bd32(0x1b8)][_0x22bd32(0x164)][_0x22bd32(0x14a)]*0x3)return null;const _0x789f49=this[_0x22bd32(0x165)][_0x22bd32(0x1b0)](_0x1a7a65)['length'];this[_0x22bd32(0x1c5)](_0x1a7a65,_0x418086,_0x242f18);const _0x395caf=this['swingPoints']['get'](_0x1a7a65);if(_0x395caf[_0x22bd32(0x18b)]>_0x789f49){const _0x108e48=_0x395caf[_0x395caf['length']-0x1];this[_0x22bd32(0x1a2)]('log',{'type':_0x22bd32(0x16e),'message':_0x22bd32(0x1bd)+_0x108e48['type']['toUpperCase']()+'\x20@\x20'+_0x108e48[_0x22bd32(0x1c1)][_0x22bd32(0x16d)](0x2)+'\x20|\x20Total:\x20'+_0x395caf[_0x22bd32(0x18b)]});}const _0x175b47=this[_0x22bd32(0x172)](_0x1a7a65,_0x418086,_0x242f18);_0x175b47&&this[_0x22bd32(0x1a2)](_0x22bd32(0x14e),{'type':_0x22bd32(0x16e),'message':_0x22bd32(0x145)+_0x175b47[_0x22bd32(0x137)]+_0x22bd32(0x1c9)+_0x175b47['isValid']+'\x20|\x20Pen:\x20'+_0x175b47[_0x22bd32(0x1cb)]['toFixed'](0x1)+'t\x20|\x20Q:\x20'+(_0x175b47[_0x22bd32(0x13a)]*0x64)[_0x22bd32(0x16d)](0x0)+'%'});const _0x6a1a3e=this['liquidityZones']['get'](_0x1a7a65)[_0x22bd32(0x18b)];this['_updateZones'](_0x1a7a65,_0x242f18);const _0x5cad77=this['liquidityZones'][_0x22bd32(0x1b0)](_0x1a7a65);if(_0x5cad77[_0x22bd32(0x18b)]>_0x6a1a3e){const _0xbf1da6=_0x5cad77[_0x5cad77['length']-0x1];this['emit'](_0x22bd32(0x14e),{'type':'debug','message':_0x22bd32(0x180)+_0xbf1da6['type'][_0x22bd32(0x1c4)]()+_0x22bd32(0x1a0)+_0xbf1da6[_0x22bd32(0x1b4)]()['toFixed'](0x2)+_0x22bd32(0x13e)+_0x5cad77[_0x22bd32(0x18b)]});}if(_0x175b47&&_0x175b47[_0x22bd32(0x188)]){this['emit'](_0x22bd32(0x14e),{'type':_0x22bd32(0x16e),'message':'[2B]\x20Calling\x20_generateSignal\x20for\x20'+_0x175b47['sweepType']+'\x20sweep...'});const _0x13a970=this['_generateSignal'](_0x1a7a65,_0x164133,_0x242f18,_0x175b47);return!_0x13a970&&this[_0x22bd32(0x1a2)]('log',{'type':'debug','message':_0x22bd32(0x16c)}),_0x13a970;}return null;}['_detectSwings'](_0x544fec,_0x16a019,_0x273844){const _0x1b2bde=_0x2b7f26,_0x3a9928=this['config'][_0x1b2bde(0x164)]['lookbackBars'],_0x4bbfb7=this[_0x1b2bde(0x1b8)]['swing'][_0x1b2bde(0x152)];if(_0x273844<_0x3a9928*0x2)return;const _0x4e701f=this['swingPoints']['get'](_0x544fec),_0x140017=_0x273844-_0x3a9928,_0x257771=_0x16a019[_0x140017];_0x273844%0x5===0x0&&this[_0x1b2bde(0x1a2)]('log',{'type':'debug','message':'[SWING]\x20Checking\x20pivot\x20at\x20bar\x20'+_0x140017+'\x20|\x20H:'+_0x257771['high']['toFixed'](0x2)+_0x1b2bde(0x15c)+_0x257771[_0x1b2bde(0x195)][_0x1b2bde(0x16d)](0x2)+'\x20|\x20Total\x20swings:\x20'+_0x4e701f[_0x1b2bde(0x18b)]});let _0x280935=!![],_0x521908=0x0;for(let _0x1a6853=_0x140017-_0x3a9928;_0x1a6853<=_0x140017+_0x3a9928;_0x1a6853++){if(_0x1a6853===_0x140017||_0x1a6853<0x0||_0x1a6853>=_0x16a019[_0x1b2bde(0x18b)])continue;if(_0x16a019[_0x1a6853][_0x1b2bde(0x144)]>=_0x257771[_0x1b2bde(0x144)]){_0x280935=![];break;}_0x521908++;}if(_0x280935&&_0x521908>=_0x4bbfb7){const _0x5bed70=_0x4e701f[_0x1b2bde(0x142)](_0x337342=>_0x337342[_0x1b2bde(0x1b1)]===_0x140017&&_0x337342['type']===_0x1b2bde(0x144));!_0x5bed70&&(_0x4e701f['push'](new SwingPoint('high',_0x257771['high'],_0x140017,_0x257771[_0x1b2bde(0x136)],_0x521908)),this[_0x1b2bde(0x1a2)]('log',{'type':_0x1b2bde(0x16e),'message':_0x1b2bde(0x13c)+_0x257771[_0x1b2bde(0x144)]['toFixed'](0x2)+'\x20|\x20Bar\x20'+_0x140017+'\x20|\x20Strength:\x20'+_0x521908}));}let _0x26d6ea=!![],_0x4b3dfc=0x0;for(let _0x4227e3=_0x140017-_0x3a9928;_0x4227e3<=_0x140017+_0x3a9928;_0x4227e3++){if(_0x4227e3===_0x140017||_0x4227e3<0x0||_0x4227e3>=_0x16a019[_0x1b2bde(0x18b)])continue;if(_0x16a019[_0x4227e3][_0x1b2bde(0x195)]<=_0x257771['low']){_0x26d6ea=![];break;}_0x4b3dfc++;}if(_0x26d6ea&&_0x4b3dfc>=_0x4bbfb7){const _0x25746a=_0x4e701f[_0x1b2bde(0x142)](_0xedd508=>_0xedd508[_0x1b2bde(0x1b1)]===_0x140017&&_0xedd508[_0x1b2bde(0x1c2)]==='low');!_0x25746a&&(_0x4e701f[_0x1b2bde(0x15e)](new SwingPoint('low',_0x257771[_0x1b2bde(0x195)],_0x140017,_0x257771['timestamp'],_0x4b3dfc)),this[_0x1b2bde(0x1a2)]('log',{'type':'debug','message':_0x1b2bde(0x14f)+_0x257771['low'][_0x1b2bde(0x16d)](0x2)+_0x1b2bde(0x1bf)+_0x140017+'\x20|\x20Strength:\x20'+_0x4b3dfc}));}const _0x4aec4c=this['config']['zone']['maxZoneAgeBars'];while(_0x4e701f[_0x1b2bde(0x18b)]>0x0&&_0x4e701f[0x0]['barIndex']<_0x273844-_0x4aec4c){_0x4e701f[_0x1b2bde(0x1c6)]();}}[_0x2b7f26(0x185)](_0x196629,_0x2bfee0){const _0x31d1b0=_0x2b7f26,_0x25fba2=this['swingPoints'][_0x31d1b0(0x1b0)](_0x196629),_0x119925=this['liquidityZones']['get'](_0x196629),_0x3adb61=this['config']['zone']['clusterToleranceTicks']*this['tickSize'],_0x5e7d4e=this['config'][_0x31d1b0(0x179)][_0x31d1b0(0x186)];for(let _0x553991=_0x119925[_0x31d1b0(0x18b)]-0x1;_0x553991>=0x0;_0x553991--){_0x2bfee0-_0x119925[_0x553991][_0x31d1b0(0x1b1)]>_0x5e7d4e&&_0x119925['splice'](_0x553991,0x1);}for(const _0x451aa4 of _0x25fba2){let _0x38f244=null;for(const _0x5c15cc of _0x119925){if(_0x5c15cc['containsPrice'](_0x451aa4['price'],this[_0x31d1b0(0x1b8)]['zone'][_0x31d1b0(0x1a5)],this[_0x31d1b0(0x187)])){_0x38f244=_0x5c15cc;break;}}if(_0x38f244){_0x38f244[_0x31d1b0(0x16b)]++;if(_0x451aa4['price']>_0x38f244[_0x31d1b0(0x19b)])_0x38f244['priceHigh']=_0x451aa4[_0x31d1b0(0x1c1)];if(_0x451aa4['price']<_0x38f244[_0x31d1b0(0x19a)])_0x38f244[_0x31d1b0(0x19a)]=_0x451aa4['price'];_0x38f244['qualityScore']=Math[_0x31d1b0(0x1ca)](0x1,0.3+_0x38f244['touches']*0.15);}else{const _0x8620a6=_0x451aa4[_0x31d1b0(0x1c2)]===_0x31d1b0(0x144)?ZoneType['RESISTANCE']:ZoneType['SUPPORT'],_0xff29f5=new LiquidityZone(_0x8620a6,_0x451aa4['price']+_0x3adb61/0x2,_0x451aa4[_0x31d1b0(0x1c1)]-_0x3adb61/0x2,_0x451aa4['timestamp'],_0x451aa4[_0x31d1b0(0x1b1)]);_0xff29f5['qualityScore']=0.3+_0x451aa4[_0x31d1b0(0x17e)]*0.1,_0x119925['push'](_0xff29f5);}}}[_0x2b7f26(0x172)](_0x253098,_0x476147,_0x3b7b82){const _0x4d84aa=_0x2b7f26,_0x1f77d3=this[_0x4d84aa(0x1a3)]['get'](_0x253098),_0x5ee966=_0x476147[_0x3b7b82],_0x207ef8=_0x5ee966['close'],_0x177358=this['config']['sweep'],_0x3a40d3=this[_0x4d84aa(0x1b8)][_0x4d84aa(0x179)];for(const _0x2b4579 of _0x1f77d3){if(_0x2b4579['lastUsedBarIndex']>=0x0&&_0x3b7b82-_0x2b4579[_0x4d84aa(0x15f)]<_0x3a40d3[_0x4d84aa(0x1ad)])continue;const _0x48383d=_0x2b4579['getLevel'](),_0x55cbb9=Math[_0x4d84aa(0x158)](_0x207ef8-_0x48383d)/this['tickSize'];if(_0x55cbb9>_0x3a40d3['maxZoneDistanceTicks'])continue;const _0x3d2830=Math[_0x4d84aa(0x17d)](0x0,_0x3b7b82-_0x177358[_0x4d84aa(0x1c0)]*0x2);for(let _0x4f10fa=_0x3d2830;_0x4f10fa<_0x3b7b82;_0x4f10fa++){const _0x3ca6b8=_0x476147[_0x4f10fa];if(_0x2b4579['type']===ZoneType[_0x4d84aa(0x17f)]){const _0x67dbd=(_0x3ca6b8[_0x4d84aa(0x144)]-_0x2b4579['priceHigh'])/this['tickSize'];if(_0x67dbd>=_0x177358[_0x4d84aa(0x1be)]&&_0x67dbd<=_0x177358['maxPenetrationTicks']){const _0x51bc6f=Math['min'](_0x2b4579[_0x4d84aa(0x19b)],_0x2b4579['priceHigh']+_0x67dbd*this[_0x4d84aa(0x187)]);if(_0x207ef8<_0x51bc6f+this[_0x4d84aa(0x187)]*0x2){const _0x27a18e=_0x3ca6b8[_0x4d84aa(0x144)]-_0x3ca6b8[_0x4d84aa(0x195)],_0x56b9d0=Math['abs'](_0x3ca6b8[_0x4d84aa(0x193)]-_0x3ca6b8[_0x4d84aa(0x1ae)]),_0x456d0c=_0x27a18e>0x0?_0x56b9d0/_0x27a18e:0x0;if(_0x456d0c>=_0x177358['minBodyRatio']){const _0x3dd38c=this['_getVolumeRatio'](_0x476147,_0x4f10fa,0x14);if(_0x3dd38c>=_0x177358[_0x4d84aa(0x171)]){const _0x46adbf=new SweepEvent(SweepType[_0x4d84aa(0x1cf)],_0x2b4579,_0x4f10fa,_0x4f10fa,_0x3ca6b8['high']);_0x46adbf[_0x4d84aa(0x194)]=_0x3b7b82,_0x46adbf[_0x4d84aa(0x1cb)]=_0x67dbd,_0x46adbf['durationBars']=_0x3b7b82-_0x4f10fa,_0x46adbf[_0x4d84aa(0x169)]=_0x3dd38c,_0x46adbf[_0x4d84aa(0x13a)]=this['_scoreSweep'](_0x46adbf,_0x456d0c),_0x46adbf['isValid']=_0x46adbf['qualityScore']>=_0x177358['minQualityScore'];if(_0x46adbf['isValid'])return _0x46adbf;}}}}}if(_0x2b4579['type']===ZoneType[_0x4d84aa(0x18a)]){const _0x24bc95=(_0x2b4579['priceLow']-_0x3ca6b8['low'])/this[_0x4d84aa(0x187)];if(_0x24bc95>=_0x177358['minPenetrationTicks']&&_0x24bc95<=_0x177358['maxPenetrationTicks']){const _0x521aa4=Math[_0x4d84aa(0x17d)](_0x2b4579[_0x4d84aa(0x19a)],_0x2b4579['priceLow']-_0x24bc95*this[_0x4d84aa(0x187)]);if(_0x207ef8>_0x521aa4-this['tickSize']*0x2){const _0x42dd6c=_0x3ca6b8['high']-_0x3ca6b8[_0x4d84aa(0x195)],_0x4ccfeb=Math['abs'](_0x3ca6b8['close']-_0x3ca6b8['open']),_0x40bdb1=_0x42dd6c>0x0?_0x4ccfeb/_0x42dd6c:0x0;if(_0x40bdb1>=_0x177358[_0x4d84aa(0x19d)]){const _0x4ab1f4=this[_0x4d84aa(0x191)](_0x476147,_0x4f10fa,0x14);if(_0x4ab1f4>=_0x177358[_0x4d84aa(0x171)]){const _0x2bd8cb=new SweepEvent(SweepType[_0x4d84aa(0x16a)],_0x2b4579,_0x4f10fa,_0x4f10fa,_0x3ca6b8[_0x4d84aa(0x195)]);_0x2bd8cb['exitBarIndex']=_0x3b7b82,_0x2bd8cb[_0x4d84aa(0x1cb)]=_0x24bc95,_0x2bd8cb[_0x4d84aa(0x1b6)]=_0x3b7b82-_0x4f10fa,_0x2bd8cb['volumeRatio']=_0x4ab1f4,_0x2bd8cb[_0x4d84aa(0x13a)]=this['_scoreSweep'](_0x2bd8cb,_0x40bdb1),_0x2bd8cb['isValid']=_0x2bd8cb[_0x4d84aa(0x13a)]>=_0x177358['minQualityScore'];if(_0x2bd8cb[_0x4d84aa(0x188)])return _0x2bd8cb;}}}}}}}return null;}[_0x2b7f26(0x191)](_0x4757d5,_0x561020,_0x2a0d77){const _0x4b9126=_0x2b7f26,_0x40ed60=Math['max'](0x0,_0x561020-_0x2a0d77),_0x5ae0b1=_0x4757d5['slice'](_0x40ed60,_0x561020);if(_0x5ae0b1[_0x4b9126(0x18b)]===0x0)return 0x1;const _0xb09338=_0x5ae0b1['map'](_0x33c439=>_0x33c439[_0x4b9126(0x155)])[_0x4b9126(0x157)]((_0x49cb58,_0x287067)=>_0x49cb58-_0x287067),_0x1a3351=Math['floor'](_0xb09338[_0x4b9126(0x18b)]/0x2),_0x21aa93=_0xb09338[_0x1a3351]||0x1;return _0x4757d5[_0x561020][_0x4b9126(0x155)]/_0x21aa93;}[_0x2b7f26(0x163)](_0x4bc7e6,_0xcaadd6){const _0x4cb679=_0x2b7f26;let _0x322112=0x0;const _0x4b611b=0x4,_0x5a7039=Math['abs'](_0x4bc7e6['penetrationTicks']-_0x4b611b);return _0x322112+=Math['max'](0x0,0.3-_0x5a7039*0.03),_0x322112+=Math[_0x4cb679(0x17d)](0x0,0.25-_0x4bc7e6[_0x4cb679(0x1b6)]*0.05),_0x322112+=Math['min'](0.25,_0x4bc7e6[_0x4cb679(0x169)]*0.1),_0x322112+=Math[_0x4cb679(0x1ca)](0.2,_0xcaadd6*0.4),Math[_0x4cb679(0x1ca)](0x1,_0x322112);}['_generateSignal'](_0x56e5a8,_0x554186,_0xde732f,_0x3aa309){const _0x4a1b55=_0x2b7f26,_0xaee65a=Date['now']()-this['lastSignalTime'];if(_0xaee65a<this['config'][_0x4a1b55(0x15a)]['cooldownMs'])return this['emit']('log',{'type':_0x4a1b55(0x16e),'message':'[2B]\x20Signal\x20blocked\x20by\x20cooldown\x20('+(_0xaee65a/0x3e8)[_0x4a1b55(0x16d)](0x1)+_0x4a1b55(0x1a8)+this[_0x4a1b55(0x1b8)]['execution']['cooldownMs']/0x3e8+'s)'}),null;const _0x12d293=this['config'][_0x4a1b55(0x15a)],_0x127e27=_0x554186[_0x4a1b55(0x193)],_0x24fdda=_0x3aa309[_0x4a1b55(0x137)]===SweepType[_0x4a1b55(0x1cf)]?_0x4a1b55(0x1c7):_0x4a1b55(0x1a1);let _0x36ad11,_0x426361,_0x53fc6c,_0x114aa9;_0x24fdda===_0x4a1b55(0x1a1)?(_0x36ad11=_0x127e27-_0x12d293[_0x4a1b55(0x135)]*this['tickSize'],_0x426361=_0x127e27+_0x12d293[_0x4a1b55(0x162)]*this['tickSize'],_0x53fc6c=_0x127e27+_0x12d293[_0x4a1b55(0x139)]*this[_0x4a1b55(0x187)],_0x114aa9=_0x127e27+_0x12d293[_0x4a1b55(0x161)]*this[_0x4a1b55(0x187)]):(_0x36ad11=_0x127e27+_0x12d293['stopTicks']*this['tickSize'],_0x426361=_0x127e27-_0x12d293[_0x4a1b55(0x162)]*this['tickSize'],_0x53fc6c=_0x127e27-_0x12d293['breakevenTicks']*this[_0x4a1b55(0x187)],_0x114aa9=_0x127e27-_0x12d293['trailTriggerTicks']*this['tickSize']);const _0x411a58=_0x12d293['targetTicks']/_0x12d293[_0x4a1b55(0x135)],_0x2ebe71=Math[_0x4a1b55(0x1ca)](0x1,_0x3aa309[_0x4a1b55(0x13a)]*0.5+_0x3aa309['zone'][_0x4a1b55(0x13a)]*0.3+(_0x3aa309[_0x4a1b55(0x169)]>1.5?0.2:_0x3aa309[_0x4a1b55(0x169)]*0.1));let _0x3bb9d5=SignalStrength[_0x4a1b55(0x14d)];if(_0x2ebe71>=0.8)_0x3bb9d5=SignalStrength['VERY_STRONG'];else{if(_0x2ebe71>=0.65)_0x3bb9d5=SignalStrength['STRONG'];else{if(_0x2ebe71<0.5)_0x3bb9d5=SignalStrength['WEAK'];}}const _0x33b12d=0.5+(_0x2ebe71-0.5)*0.4,_0x4b76ad=_0x33b12d*Math['abs'](_0x426361-_0x127e27)-(0x1-_0x33b12d)*Math['abs'](_0x127e27-_0x36ad11);_0x3aa309['zone'][_0x4a1b55(0x15f)]=_0xde732f,_0x3aa309[_0x4a1b55(0x179)][_0x4a1b55(0x1ce)]=!![],_0x3aa309['zone']['sweptAt']=new Date(_0x554186['timestamp']),this['lastSignalTime']=Date[_0x4a1b55(0x1cc)](),this['stats'][_0x4a1b55(0x189)]++;const _0x18b7f0={'id':uuidv4(),'timestamp':Date['now'](),'symbol':_0x56e5a8['split']('.')[0x0]||_0x56e5a8,'contractId':_0x56e5a8,'side':_0x24fdda==='long'?OrderSide[_0x4a1b55(0x1c3)]:OrderSide['ASK'],'direction':_0x24fdda,'strategy':'HQX_2B_LIQUIDITY_SWEEP','strength':_0x3bb9d5,'edge':_0x4b76ad,'confidence':_0x2ebe71,'entry':_0x127e27,'entryPrice':_0x127e27,'stopLoss':_0x36ad11,'takeProfit':_0x426361,'riskReward':_0x411a58,'stopTicks':_0x12d293['stopTicks'],'targetTicks':_0x12d293[_0x4a1b55(0x162)],'breakevenTicks':_0x12d293['breakevenTicks'],'trailTriggerTicks':_0x12d293[_0x4a1b55(0x161)],'trailDistanceTicks':_0x12d293['trailDistanceTicks'],'beLevel':_0x53fc6c,'trailTrigger':_0x114aa9,'sweepType':_0x3aa309[_0x4a1b55(0x137)],'penetrationTicks':_0x3aa309[_0x4a1b55(0x1cb)],'sweepDurationBars':_0x3aa309['durationBars'],'sweepQuality':_0x3aa309['qualityScore'],'volumeRatio':_0x3aa309[_0x4a1b55(0x169)],'zoneType':_0x3aa309[_0x4a1b55(0x179)][_0x4a1b55(0x1c2)],'zoneLevel':_0x3aa309[_0x4a1b55(0x179)][_0x4a1b55(0x1b4)](),'zoneTouches':_0x3aa309[_0x4a1b55(0x179)]['touches'],'zoneQuality':_0x3aa309['zone'][_0x4a1b55(0x13a)],'expires':Date['now']()+0xea60};return this[_0x4a1b55(0x1a2)](_0x4a1b55(0x1af),{'side':_0x24fdda===_0x4a1b55(0x1a1)?'buy':'sell','action':_0x4a1b55(0x1ae),'reason':_0x4a1b55(0x13b)+_0x3aa309['sweepType']+_0x4a1b55(0x146)+_0x3aa309[_0x4a1b55(0x1cb)][_0x4a1b55(0x16d)](0x1)+'t\x20|\x20Vol:'+_0x3aa309[_0x4a1b55(0x169)]['toFixed'](0x1)+_0x4a1b55(0x1bb)+(_0x3aa309[_0x4a1b55(0x13a)]*0x64)['toFixed'](0x0)+'%',..._0x18b7f0}),this['emit']('log',{'type':_0x4a1b55(0x14b),'message':'[HQX-2B]\x20SIGNAL:\x20'+_0x24fdda['toUpperCase']()+_0x4a1b55(0x1a0)+_0x127e27['toFixed'](0x2)+'\x20|\x20'+_0x3aa309['sweepType']+'\x20|\x20Pen:'+_0x3aa309[_0x4a1b55(0x1cb)]['toFixed'](0x1)+'t\x20Vol:'+_0x3aa309[_0x4a1b55(0x169)][_0x4a1b55(0x16d)](0x1)+_0x4a1b55(0x192)+(_0x2ebe71*0x64)[_0x4a1b55(0x16d)](0x0)+'%'}),_0x18b7f0;}['getAnalysisState'](_0xb2426f,_0x298d64){const _0x23c7ed=_0x2b7f26,_0x31042d=this[_0x23c7ed(0x198)][_0x23c7ed(0x1b0)](_0xb2426f)||[],_0x3dd533=this[_0x23c7ed(0x1a3)][_0x23c7ed(0x1b0)](_0xb2426f)||[],_0x109922=this[_0x23c7ed(0x165)][_0x23c7ed(0x1b0)](_0xb2426f)||[];if(_0x31042d['length']<0x5)return{'ready':![],'message':_0x23c7ed(0x176)+_0x31042d[_0x23c7ed(0x18b)]+'/5\x20bars'};const _0x49cdc3=_0x3dd533['map'](_0x56409e=>({'zone':_0x56409e,'distance':Math['abs'](_0x298d64-_0x56409e['getLevel']())}))[_0x23c7ed(0x157)]((_0x39b439,_0x9f00c2)=>_0x39b439[_0x23c7ed(0x178)]-_0x9f00c2['distance']),_0x23e6cd=_0x49cdc3['find'](_0x399241=>_0x399241[_0x23c7ed(0x179)][_0x23c7ed(0x1c2)]===ZoneType[_0x23c7ed(0x17f)]),_0x58dc5e=_0x49cdc3['find'](_0x27617b=>_0x27617b[_0x23c7ed(0x179)]['type']===ZoneType[_0x23c7ed(0x18a)]);return{'ready':!![],'barsProcessed':_0x31042d[_0x23c7ed(0x18b)],'swingsDetected':_0x109922[_0x23c7ed(0x18b)],'activeZones':_0x3dd533[_0x23c7ed(0x18b)],'nearestResistance':_0x23e6cd?_0x23e6cd[_0x23c7ed(0x179)][_0x23c7ed(0x1b4)]():null,'nearestSupport':_0x58dc5e?_0x58dc5e[_0x23c7ed(0x179)]['getLevel']():null,'stopTicks':this[_0x23c7ed(0x1b8)]['execution'][_0x23c7ed(0x135)],'targetTicks':this[_0x23c7ed(0x1b8)][_0x23c7ed(0x15a)][_0x23c7ed(0x162)],'strategy':_0x23c7ed(0x1a6)};}['recordTradeResult'](_0x2d3fde){const _0x150ef0=_0x2b7f26;this['recentTrades']['push']({'netPnl':_0x2d3fde,'timestamp':Date['now']()});if(this['recentTrades']['length']>0x64)this['recentTrades'][_0x150ef0(0x1c6)]();_0x2d3fde>0x0?this['stats'][_0x150ef0(0x1cd)]++:this[_0x150ef0(0x1b2)]['losses']++,this['stats']['trades']++,this[_0x150ef0(0x1b2)]['pnl']+=_0x2d3fde,this[_0x150ef0(0x1a2)](_0x150ef0(0x14e),{'type':'debug','message':_0x150ef0(0x159)+(_0x2d3fde>0x0?_0x150ef0(0x175):'LOSS')+'\x20$'+_0x2d3fde[_0x150ef0(0x16d)](0x2)});}['getBarHistory'](_0x1ee8c3){const _0x2b034b=_0x2b7f26;return this[_0x2b034b(0x198)][_0x2b034b(0x1b0)](_0x1ee8c3)||[];}[_0x2b7f26(0x18e)](){return this['stats'];}[_0x2b7f26(0x17c)](_0x3bb748){const _0x22a336=_0x2b7f26,_0x6894c7=this['barHistory']['get'](_0x3bb748)||[],_0x3b3daf=this['liquidityZones']['get'](_0x3bb748)||[],_0x59f5cf=this[_0x22a336(0x165)][_0x22a336(0x1b0)](_0x3bb748)||[],_0x5b4451=this[_0x22a336(0x170)]['get'](_0x3bb748),_0xfe68f1=_0x6894c7[_0x6894c7['length']-0x1],_0x4a3504=_0xfe68f1?Date[_0x22a336(0x1cc)]()-_0xfe68f1[_0x22a336(0x136)]:null,_0x565141=_0x3b3daf[_0x22a336(0x1b7)](_0x42e970=>_0x42e970[_0x22a336(0x1c2)]===ZoneType[_0x22a336(0x17f)])[_0x22a336(0x18b)],_0x14f03a=_0x3b3daf[_0x22a336(0x1b7)](_0x2ce0ca=>_0x2ce0ca['type']===ZoneType['SUPPORT'])[_0x22a336(0x18b)];return{'healthy':_0x6894c7[_0x22a336(0x18b)]>=0x5,'barsTotal':_0x6894c7['length'],'barsLast5Min':_0x6894c7[_0x22a336(0x1b7)](_0x1846d9=>Date[_0x22a336(0x1cc)]()-_0x1846d9['timestamp']<0x5*0x3c*0x3e8)['length'],'swingsTotal':_0x59f5cf[_0x22a336(0x18b)],'zonesResistance':_0x565141,'zonesSupport':_0x14f03a,'zonesTotal':_0x3b3daf[_0x22a336(0x18b)],'currentBarTicks':_0x5b4451?_0x5b4451['tickCount']:0x0,'isAggregating':_0x5b4451&&_0x5b4451['tickCount']>0x0,'timeSinceLastBarMs':_0x4a3504,'lastSignalTime':this['lastSignalTime'],'signalCooldownMs':this['config']['execution']['cooldownMs'],'uptime':Date['now']()-(this[_0x22a336(0x168)]||Date[_0x22a336(0x1cc)]())};}[_0x2b7f26(0x14c)](_0x5b62e2){const _0x126715=_0x2b7f26;this[_0x126715(0x198)]['set'](_0x5b62e2,[]),this[_0x126715(0x165)]['set'](_0x5b62e2,[]),this['liquidityZones']['set'](_0x5b62e2,[]),this[_0x126715(0x19f)][_0x126715(0x141)](_0x5b62e2,[]),this[_0x126715(0x170)]['delete'](_0x5b62e2),this[_0x126715(0x1a2)](_0x126715(0x14e),{'type':'info','message':_0x126715(0x156)+_0x5b62e2});}[_0x2b7f26(0x1b9)](_0x36cb98,_0x116ea5){const _0x313be6=_0x2b7f26;if(!_0x116ea5||_0x116ea5['length']===0x0){this[_0x313be6(0x1a2)](_0x313be6(0x14e),{'type':_0x313be6(0x16e),'message':'[HQX-2B]\x20No\x20historical\x20bars\x20to\x20preload'});return;}!this['barHistory']['has'](_0x36cb98)&&this['initialize'](_0x36cb98);const _0x2d7ec2=[..._0x116ea5]['sort']((_0x191a64,_0x53dbc1)=>_0x191a64[_0x313be6(0x136)]-_0x53dbc1[_0x313be6(0x136)]);this['emit'](_0x313be6(0x14e),{'type':'info','message':'[HQX-2B]\x20Preloading\x20'+_0x2d7ec2[_0x313be6(0x18b)]+_0x313be6(0x183)});let _0x4bc60d=0x0;for(const _0x3b14c0 of _0x2d7ec2){const _0x216325=this['processBar'](_0x36cb98,_0x3b14c0);if(_0x216325)_0x4bc60d++;}const _0x3874b2=this['barHistory']['get'](_0x36cb98)||[],_0x3cb9a2=this['swingPoints'][_0x313be6(0x1b0)](_0x36cb98)||[],_0x44de21=this[_0x313be6(0x1a3)]['get'](_0x36cb98)||[];this['emit']('log',{'type':'info','message':'[HQX-2B]\x20Preload\x20complete:\x20'+_0x3874b2[_0x313be6(0x18b)]+'\x20bars,\x20'+_0x3cb9a2['length']+_0x313be6(0x149)+_0x44de21['length']+_0x313be6(0x134)}),_0x4bc60d>0x0&&this[_0x313be6(0x1a2)](_0x313be6(0x14e),{'type':_0x313be6(0x16e),'message':'[HQX-2B]\x20'+_0x4bc60d+_0x313be6(0x173)}),this[_0x313be6(0x181)]=0x0;}}class HQX2BStrategy extends EventEmitter{constructor(_0x1795ae={}){const _0x1172ce=_0x2b7f26;super(),this[_0x1172ce(0x1b8)]=_0x1795ae,this['strategy']=new HQX2BLiquiditySweep(_0x1795ae),this[_0x1172ce(0x17a)]['on']('signal',_0x3b318a=>this['emit'](_0x1172ce(0x1af),_0x3b318a)),this['strategy']['on']('log',_0x215b6f=>this[_0x1172ce(0x1a2)](_0x1172ce(0x14e),_0x215b6f));}[_0x2b7f26(0x17b)](_0x3c7e01){return this['strategy']['processTick'](_0x3c7e01);}[_0x2b7f26(0x19e)](_0x330c1c){const _0x3e6a28=_0x2b7f26;return this['strategy'][_0x3e6a28(0x19e)](_0x330c1c);}['onTrade'](_0x2bcae9){return this['strategy']['onTrade'](_0x2bcae9);}['processBar'](_0x33780f,_0x4571de){const _0x2fc38=_0x2b7f26;return this[_0x2fc38(0x17a)]['processBar'](_0x33780f,_0x4571de);}['initialize'](_0x37548e,_0x1f0b9b,_0x5771c8){const _0xadbebc=_0x2b7f26;return this[_0xadbebc(0x17a)]['initialize'](_0x37548e,_0x1f0b9b,_0x5771c8);}['getAnalysisState'](_0x167eff,_0x2422d2){return this['strategy']['getAnalysisState'](_0x167eff,_0x2422d2);}['recordTradeResult'](_0x18dd00){return this['strategy']['recordTradeResult'](_0x18dd00);}[_0x2b7f26(0x14c)](_0x48b033){const _0x428681=_0x2b7f26;return this['strategy'][_0x428681(0x14c)](_0x48b033);}['getStats'](){const _0x514c13=_0x2b7f26;return this['strategy'][_0x514c13(0x18e)]();}[_0x2b7f26(0x15d)](_0x33d969){const _0x39227a=_0x2b7f26;return this[_0x39227a(0x17a)]['getBarHistory'](_0x33d969);}['preloadBars'](_0x176233,_0x5e588e){const _0x40bc9b=_0x2b7f26;return this['strategy'][_0x40bc9b(0x1b9)](_0x176233,_0x5e588e);}[_0x2b7f26(0x17c)](_0x2bffe7){const _0x26930e=_0x2b7f26;return this[_0x26930e(0x17a)][_0x26930e(0x17c)](_0x2bffe7);}['generateSignal'](_0x4cde76){return null;}}module['exports']={'HQX2BLiquiditySweep':HQX2BLiquiditySweep,'HQX2BStrategy':HQX2BStrategy,'M2':HQX2BStrategy,'S2':HQX2BLiquiditySweep,'OrderSide':OrderSide,'SignalStrength':SignalStrength,'SweepType':SweepType,'ZoneType':ZoneType,'DEFAULT_CONFIG':DEFAULT_CONFIG};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x2f642f=_0xc24e;(function(_0x534985,_0x43b609){const _0x144ed8=_0xc24e,_0x4f2c1b=_0x534985();while(!![]){try{const _0x14585b=parseInt(_0x144ed8(0x1c1))/0x1+parseInt(_0x144ed8(0x209))/0x2*(parseInt(_0x144ed8(0x1d3))/0x3)+parseInt(_0x144ed8(0x1cd))/0x4+-parseInt(_0x144ed8(0x222))/0x5*(-parseInt(_0x144ed8(0x1c5))/0x6)+parseInt(_0x144ed8(0x1f9))/0x7*(parseInt(_0x144ed8(0x1fe))/0x8)+parseInt(_0x144ed8(0x20a))/0x9+-parseInt(_0x144ed8(0x1eb))/0xa*(parseInt(_0x144ed8(0x221))/0xb);if(_0x14585b===_0x43b609)break;else _0x4f2c1b['push'](_0x4f2c1b['shift']());}catch(_0x4967e7){_0x4f2c1b['push'](_0x4f2c1b['shift']());}}}(_0x48c6,0x5f6c4));const EventEmitter=require('events'),{v4:uuidv4}=require(_0x2f642f(0x1de)),OrderSide={'BID':0x0,'ASK':0x1},SignalStrength={'WEAK':0x1,'MODERATE':0x2,'STRONG':0x3,'VERY_STRONG':0x4};function _0xc24e(_0x283884,_0x5434b3){_0x283884=_0x283884-0x1c1;const _0x48c67c=_0x48c6();let _0xc24e09=_0x48c67c[_0x283884];return _0xc24e09;}class HQXUltraScalping extends EventEmitter{constructor(_0x2414d4={}){const _0x3f1b40=_0x2f642f;super(),this['tickSize']=_0x2414d4[_0x3f1b40(0x225)]||0.25,this['tickValue']=_0x2414d4[_0x3f1b40(0x1ec)]||0x5,this[_0x3f1b40(0x1f8)]=1.5,this[_0x3f1b40(0x1f0)]=0.5,this[_0x3f1b40(0x22b)]=0x32,this['vpinToxicThreshold']=0.7,this['kalmanProcessNoise']=0.01,this[_0x3f1b40(0x1ca)]=0.1,this[_0x3f1b40(0x214)]=0x64,this['ofiLookback']=0x14,this[_0x3f1b40(0x204)]=0x8,this['baseTargetTicks']=0x10,this[_0x3f1b40(0x207)]=0x4,this[_0x3f1b40(0x21b)]=0.5,this[_0x3f1b40(0x1d7)]=0.55,this[_0x3f1b40(0x1cf)]={'zscore':0.3,'ofi':0.2,'vpin':0.15,'kalman':0.15,'kyleLambda':0.1,'volatility':0.1},this['barHistory']=new Map(),this['priceBuffer']=new Map(),this[_0x3f1b40(0x228)]=new Map(),this[_0x3f1b40(0x1f5)]=new Map(),this[_0x3f1b40(0x1da)]=new Map(),this[_0x3f1b40(0x22c)]=[],this['winStreak']=0x0,this[_0x3f1b40(0x1c7)]=0x0,this['lastSignalTime']=0x0,this[_0x3f1b40(0x1d2)]=0x7530,this['minHoldTimeMs']=0x2710,this[_0x3f1b40(0x218)]={'signals':0x0,'trades':0x0,'wins':0x0,'losses':0x0,'pnl':0x0};}['initialize'](_0x399a09,_0x345ef3=0.25,_0x2b342b=0x5){const _0x22c560=_0x2f642f;this['tickSize']=_0x345ef3,this[_0x22c560(0x1ec)]=_0x2b342b,this['barHistory'][_0x22c560(0x1e4)](_0x399a09,[]),this['priceBuffer'][_0x22c560(0x1e4)](_0x399a09,[]),this['volumeBuffer']['set'](_0x399a09,[]),this[_0x22c560(0x1da)][_0x22c560(0x1e4)](_0x399a09,[]),this['kalmanStates'][_0x22c560(0x1e4)](_0x399a09,{'estimate':0x0,'errorCovariance':0x1}),this[_0x22c560(0x1e3)](_0x22c560(0x21c),{'type':_0x22c560(0x1fb),'message':'[HQX-UltraScalping]\x20Initialized\x20for\x20'+_0x399a09+_0x22c560(0x22f)+_0x345ef3+_0x22c560(0x227)+_0x2b342b}),this['emit']('log',{'type':_0x22c560(0x1fb),'message':'[HQX-UltraScalping]\x206\x20Models:\x20Z-Score(30%),\x20OFI(20%),\x20VPIN(15%),\x20Kalman(15%),\x20Kyle(10%),\x20Vol(10%)'});}[_0x2f642f(0x1e7)](_0x75bef9){const _0x1da886=_0x2f642f,{contractId:_0x20709,price:_0x3c4554,volume:_0x59081c,side:_0x4553c2,timestamp:_0x329465}=_0x75bef9,_0x311f44={'timestamp':_0x329465||Date[_0x1da886(0x1d4)](),'open':_0x3c4554,'high':_0x3c4554,'low':_0x3c4554,'close':_0x3c4554,'volume':_0x59081c||0x1};return this[_0x1da886(0x1f7)](_0x20709,_0x311f44);}['onTick'](_0x2bb0ab){const _0x2f43a1=_0x2f642f;return this[_0x2f43a1(0x1e7)](_0x2bb0ab);}[_0x2f642f(0x1c3)](_0x409667){const _0x5b3a82=_0x2f642f;return this['processTick']({'contractId':_0x409667['contractId']||_0x409667['symbol'],'price':_0x409667['price'],'volume':_0x409667['size']||_0x409667[_0x5b3a82(0x20f)]||0x1,'side':_0x409667['side'],'timestamp':_0x409667['timestamp']||Date[_0x5b3a82(0x1d4)]()});}['processBar'](_0x26a6fa,_0x5b1f4c){const _0x4a78ef=_0x2f642f;let _0xf19f87=this[_0x4a78ef(0x1d6)]['get'](_0x26a6fa);!_0xf19f87&&(this['initialize'](_0x26a6fa),_0xf19f87=this[_0x4a78ef(0x1d6)][_0x4a78ef(0x21f)](_0x26a6fa));_0xf19f87[_0x4a78ef(0x202)](_0x5b1f4c);if(_0xf19f87['length']>0x1f4)_0xf19f87[_0x4a78ef(0x203)]();const _0x35caf7=this['priceBuffer'][_0x4a78ef(0x21f)](_0x26a6fa);_0x35caf7['push'](_0x5b1f4c[_0x4a78ef(0x1e0)]);if(_0x35caf7[_0x4a78ef(0x219)]>0xc8)_0x35caf7[_0x4a78ef(0x203)]();const _0x561b2f=this[_0x4a78ef(0x228)]['get'](_0x26a6fa),_0x572621=_0x5b1f4c[_0x4a78ef(0x210)]-_0x5b1f4c['low'];let _0x541019=_0x5b1f4c['volume']*0.5,_0x548299=_0x5b1f4c['volume']*0.5;if(_0x572621>0x0){const _0x34f7a3=(_0x5b1f4c['close']-_0x5b1f4c[_0x4a78ef(0x1cb)])/_0x572621;_0x541019=_0x5b1f4c[_0x4a78ef(0x20f)]*_0x34f7a3,_0x548299=_0x5b1f4c[_0x4a78ef(0x20f)]*(0x1-_0x34f7a3);}_0x561b2f['push']({'buy':_0x541019,'sell':_0x548299});if(_0x561b2f['length']>0x64)_0x561b2f['shift']();if(_0xf19f87[_0x4a78ef(0x219)]<0x32)return null;const _0x31da01=this['_computeZScore'](_0x35caf7),_0x56ba55=this[_0x4a78ef(0x1ce)](_0x561b2f),_0x2673a5=this['_computeKyleLambda'](_0xf19f87),_0x16f9fd=this['_applyKalmanFilter'](_0x26a6fa,_0x5b1f4c[_0x4a78ef(0x1e0)]),{regime:_0x412535,params:_0x116ada}=this['_detectVolatilityRegime'](_0x26a6fa,_0xf19f87),_0x4bf2f5=this[_0x4a78ef(0x1ee)](_0xf19f87);return this['_generateSignal'](_0x26a6fa,_0x5b1f4c[_0x4a78ef(0x1e0)],_0x31da01,_0x56ba55,_0x2673a5,_0x16f9fd,_0x412535,_0x116ada,_0x4bf2f5,_0xf19f87);}['_computeZScore'](_0x1161cd,_0x164df5=0x32){const _0x29e0cd=_0x2f642f;if(_0x1161cd[_0x29e0cd(0x219)]<_0x164df5)return 0x0;const _0xca41d6=_0x1161cd[_0x29e0cd(0x201)](-_0x164df5),_0x3d6b74=_0xca41d6[_0x29e0cd(0x21a)]((_0x438fb5,_0x5d2b28)=>_0x438fb5+_0x5d2b28,0x0)/_0x164df5,_0x3f2d03=_0xca41d6['reduce']((_0x31e357,_0xa39a04)=>_0x31e357+Math['pow'](_0xa39a04-_0x3d6b74,0x2),0x0)/_0x164df5,_0x56c7a2=Math['sqrt'](_0x3f2d03);if(_0x56c7a2<0.0001)return 0x0;const _0x101e32=_0x1161cd[_0x1161cd['length']-0x1];return(_0x101e32-_0x3d6b74)/_0x56c7a2;}[_0x2f642f(0x1ce)](_0x396c66){const _0x47d144=_0x2f642f;if(_0x396c66[_0x47d144(0x219)]<this['vpinWindow'])return 0.5;const _0x3437ba=_0x396c66['slice'](-this[_0x47d144(0x22b)]);let _0x2c7542=0x0,_0x5c01ab=0x0;for(const _0x448869 of _0x3437ba){_0x2c7542+=_0x448869['buy'],_0x5c01ab+=_0x448869[_0x47d144(0x200)];}const _0x430093=_0x2c7542+_0x5c01ab;if(_0x430093<0x1)return 0.5;return Math['abs'](_0x2c7542-_0x5c01ab)/_0x430093;}[_0x2f642f(0x20c)](_0x2ecd65){const _0x24d324=_0x2f642f;if(_0x2ecd65[_0x24d324(0x219)]<0x14)return 0x0;const _0x158b71=_0x2ecd65['slice'](-0x14),_0x25477e=[],_0xbe90ab=[];for(let _0x48142a=0x1;_0x48142a<_0x158b71['length'];_0x48142a++){_0x25477e[_0x24d324(0x202)](_0x158b71[_0x48142a][_0x24d324(0x1e0)]-_0x158b71[_0x48142a-0x1]['close']),_0xbe90ab[_0x24d324(0x202)](_0x158b71[_0x48142a]['volume']);}const _0x56e280=_0x25477e[_0x24d324(0x21a)]((_0x35b610,_0x11c18c)=>_0x35b610+_0x11c18c,0x0)/_0x25477e['length'],_0x294f35=_0xbe90ab['reduce']((_0x7fc270,_0x4ee76a)=>_0x7fc270+_0x4ee76a,0x0)/_0xbe90ab[_0x24d324(0x219)];let _0x5675fd=0x0,_0x302fd0=0x0;for(let _0x485f43=0x0;_0x485f43<_0x25477e[_0x24d324(0x219)];_0x485f43++){_0x5675fd+=(_0x25477e[_0x485f43]-_0x56e280)*(_0xbe90ab[_0x485f43]-_0x294f35),_0x302fd0+=Math['pow'](_0xbe90ab[_0x485f43]-_0x294f35,0x2);}_0x5675fd/=_0x25477e['length'],_0x302fd0/=_0x25477e[_0x24d324(0x219)];if(_0x302fd0<0.0001)return 0x0;return Math[_0x24d324(0x1e8)](_0x5675fd/_0x302fd0);}[_0x2f642f(0x1c4)](_0x30a1f0,_0x5665d3){const _0x1639e6=_0x2f642f;let _0x2ad690=this[_0x1639e6(0x1f5)]['get'](_0x30a1f0);if(!_0x2ad690)return _0x2ad690={'estimate':_0x5665d3,'errorCovariance':0x1},this[_0x1639e6(0x1f5)][_0x1639e6(0x1e4)](_0x30a1f0,_0x2ad690),_0x5665d3;const _0x1592b8=_0x2ad690[_0x1639e6(0x224)],_0x5d2221=_0x2ad690[_0x1639e6(0x1d9)]+this['kalmanProcessNoise'],_0x242476=_0x5d2221/(_0x5d2221+this['kalmanMeasurementNoise']),_0x206629=_0x1592b8+_0x242476*(_0x5665d3-_0x1592b8),_0x9d4e0d=(0x1-_0x242476)*_0x5d2221;return _0x2ad690['estimate']=_0x206629,_0x2ad690['errorCovariance']=_0x9d4e0d,_0x206629;}[_0x2f642f(0x1fc)](_0x114c0f,_0x36e0ae){const _0x42027e=_0x2f642f,_0x270f51=this['_calculateATR'](_0x36e0ae),_0x1bcad5=_0x270f51/this['tickSize'];let _0x327f56=this[_0x42027e(0x1da)][_0x42027e(0x21f)](_0x114c0f);!_0x327f56&&(_0x327f56=[],this['atrHistory']['set'](_0x114c0f,_0x327f56));_0x327f56['push'](_0x270f51);if(_0x327f56[_0x42027e(0x219)]>0x1f4)_0x327f56[_0x42027e(0x203)]();let _0x49426c=0.5;_0x327f56[_0x42027e(0x219)]>=0x14&&(_0x49426c=_0x327f56['filter'](_0x280a36=>_0x280a36<=_0x270f51)['length']/_0x327f56[_0x42027e(0x219)]);let _0x4f0473,_0x49115d;if(_0x49426c<0.25)_0x4f0473='low',_0x49115d={'stopMultiplier':0.8,'targetMultiplier':0.9,'zscoreThreshold':1.2,'confidenceBonus':0.05};else _0x49426c<0.75?(_0x4f0473=_0x42027e(0x1fd),_0x49115d={'stopMultiplier':0x1,'targetMultiplier':0x1,'zscoreThreshold':1.5,'confidenceBonus':0x0}):(_0x4f0473=_0x42027e(0x210),_0x49115d={'stopMultiplier':1.3,'targetMultiplier':1.2,'zscoreThreshold':0x2,'confidenceBonus':-0.05});return{'regime':_0x4f0473,'params':_0x49115d};}['_calculateATR'](_0x28314f,_0x3fc9b2=0xe){const _0x47e4f8=_0x2f642f;if(_0x28314f['length']<_0x3fc9b2+0x1)return 2.5;const _0x1252a8=[];for(let _0x1ec026=_0x28314f[_0x47e4f8(0x219)]-_0x3fc9b2;_0x1ec026<_0x28314f['length'];_0x1ec026++){const _0x2e3a81=_0x28314f[_0x1ec026],_0xc80a30=_0x28314f[_0x1ec026-0x1][_0x47e4f8(0x1e0)],_0x8e586d=Math['max'](_0x2e3a81['high']-_0x2e3a81['low'],Math[_0x47e4f8(0x1e8)](_0x2e3a81[_0x47e4f8(0x210)]-_0xc80a30),Math[_0x47e4f8(0x1e8)](_0x2e3a81['low']-_0xc80a30));_0x1252a8['push'](_0x8e586d);}return _0x1252a8['reduce']((_0x52e839,_0x2313d0)=>_0x52e839+_0x2313d0,0x0)/_0x1252a8['length'];}[_0x2f642f(0x1ee)](_0x52aaaa){const _0x12b781=_0x2f642f;if(_0x52aaaa['length']<this[_0x12b781(0x1fa)])return 0x0;const _0x58a42e=_0x52aaaa['slice'](-this['ofiLookback']);let _0x5e22c9=0x0,_0x3e4a54=0x0;for(const _0x3604d4 of _0x58a42e){const _0x564bb5=_0x3604d4['high']-_0x3604d4['low'];if(_0x564bb5>0x0){const _0x2252e8=(_0x3604d4[_0x12b781(0x1e0)]-_0x3604d4[_0x12b781(0x1cb)])/_0x564bb5;_0x5e22c9+=_0x2252e8*_0x3604d4['volume'],_0x3e4a54+=(0x1-_0x2252e8)*_0x3604d4['volume'];}}const _0x1a545c=_0x5e22c9+_0x3e4a54;if(_0x1a545c<0x1)return 0x0;return(_0x5e22c9-_0x3e4a54)/_0x1a545c;}[_0x2f642f(0x1e6)](_0x572768,_0x33d398,_0x5732c7,_0x285202,_0x1efeb9,_0x28e662,_0x37fb21,_0x3733a1,_0x58ba42,_0x240380){const _0x59ebe3=_0x2f642f,_0x95c4f8=Math[_0x59ebe3(0x1e8)](_0x5732c7);if(_0x95c4f8<_0x3733a1['zscoreThreshold'])return null;if(_0x285202>this['vpinToxicThreshold'])return null;let _0x270e0c;if(_0x5732c7<-_0x3733a1[_0x59ebe3(0x1d8)])_0x270e0c=_0x59ebe3(0x21d);else{if(_0x5732c7>_0x3733a1[_0x59ebe3(0x1d8)])_0x270e0c=_0x59ebe3(0x223);else return null;}const _0x1d3ef6=_0x270e0c==='long'&&_0x58ba42>0.1||_0x270e0c===_0x59ebe3(0x223)&&_0x58ba42<-0.1,_0x1fb89e=_0x33d398-_0x28e662,_0x3bf8d6=_0x270e0c===_0x59ebe3(0x21d)&&_0x1fb89e<0x0||_0x270e0c==='short'&&_0x1fb89e>0x0,_0x3c3886={'zscore':Math['min'](0x1,_0x95c4f8/0x4),'vpin':0x1-_0x285202,'kyleLambda':_0x1efeb9>0.001?0.5:0.8,'kalman':_0x3bf8d6?0.8:0.4,'volatility':_0x37fb21===_0x59ebe3(0x1fd)?0.8:_0x37fb21==='low'?0.7:0.6,'ofi':_0x1d3ef6?0.9:0.5,'composite':0x0};_0x3c3886[_0x59ebe3(0x1d0)]=_0x3c3886[_0x59ebe3(0x1cc)]*this[_0x59ebe3(0x1cf)]['zscore']+_0x3c3886['vpin']*this['weights']['vpin']+_0x3c3886[_0x59ebe3(0x20e)]*this['weights']['kyleLambda']+_0x3c3886['kalman']*this['weights']['kalman']+_0x3c3886[_0x59ebe3(0x1d1)]*this[_0x59ebe3(0x1cf)][_0x59ebe3(0x1d1)]+_0x3c3886['ofi']*this[_0x59ebe3(0x1cf)][_0x59ebe3(0x216)];const _0x3f8db7=Math['min'](0x1,_0x3c3886['composite']+_0x3733a1[_0x59ebe3(0x213)]);if(_0x3f8db7<this['minConfidence'])return null;if(Date['now']()-this['lastSignalTime']<this['cooldownMs'])return null;const _0x5bc68e=Math['round'](this['baseStopTicks']*_0x3733a1['stopMultiplier']),_0x768062=Math[_0x59ebe3(0x20b)](this[_0x59ebe3(0x22e)]*_0x3733a1['targetMultiplier']),_0x31307c=Math['max'](0x6,Math['min'](0xc,_0x5bc68e)),_0x206f74=Math['max'](_0x31307c*1.5,Math['min'](0x18,_0x768062));let _0x15c472,_0x11d4bb,_0x118339,_0x7e3ca2;_0x270e0c===_0x59ebe3(0x21d)?(_0x15c472=_0x33d398-_0x31307c*this['tickSize'],_0x11d4bb=_0x33d398+_0x206f74*this[_0x59ebe3(0x225)],_0x118339=_0x33d398+this['breakevenTicks']*this[_0x59ebe3(0x225)],_0x7e3ca2=_0x33d398+_0x206f74*this[_0x59ebe3(0x21b)]*this[_0x59ebe3(0x225)]):(_0x15c472=_0x33d398+_0x31307c*this['tickSize'],_0x11d4bb=_0x33d398-_0x206f74*this['tickSize'],_0x118339=_0x33d398-this['breakevenTicks']*this[_0x59ebe3(0x225)],_0x7e3ca2=_0x33d398-_0x206f74*this['profitLockPct']*this['tickSize']);const _0x52be1d=_0x206f74/_0x31307c,_0x72d77b=Math[_0x59ebe3(0x20b)](_0x206f74*0.5),_0x285a79=Math['round'](_0x31307c*0.4);let _0x28ac1c=SignalStrength[_0x59ebe3(0x208)];if(_0x3f8db7>=0.85)_0x28ac1c=SignalStrength['VERY_STRONG'];else{if(_0x3f8db7>=0.75)_0x28ac1c=SignalStrength['STRONG'];else{if(_0x3f8db7<0.6)_0x28ac1c=SignalStrength['WEAK'];}}const _0x2fd433=0.5+(_0x3f8db7-0.5)*0.4,_0x5483cb=_0x2fd433*Math['abs'](_0x11d4bb-_0x33d398)-(0x1-_0x2fd433)*Math[_0x59ebe3(0x1e8)](_0x33d398-_0x15c472);this[_0x59ebe3(0x1d5)]=Date[_0x59ebe3(0x1d4)](),this[_0x59ebe3(0x218)][_0x59ebe3(0x1f4)]++;const _0x4c8b68={'id':uuidv4(),'timestamp':Date[_0x59ebe3(0x1d4)](),'symbol':_0x572768['split']('.')[0x0]||_0x572768,'contractId':_0x572768,'side':_0x270e0c===_0x59ebe3(0x21d)?OrderSide[_0x59ebe3(0x1e2)]:OrderSide[_0x59ebe3(0x1c2)],'direction':_0x270e0c,'strategy':_0x59ebe3(0x1f2),'strength':_0x28ac1c,'edge':_0x5483cb,'confidence':_0x3f8db7,'entry':_0x33d398,'entryPrice':_0x33d398,'stopLoss':_0x15c472,'takeProfit':_0x11d4bb,'riskReward':_0x52be1d,'stopTicks':_0x31307c,'targetTicks':_0x206f74,'trailTriggerTicks':_0x72d77b,'trailDistanceTicks':_0x285a79,'beBreakeven':_0x118339,'profitLockLevel':_0x7e3ca2,'zScore':_0x5732c7,'zScoreExit':this['zscoreExitThreshold'],'vpinValue':_0x285202,'kyleLambda':_0x1efeb9,'kalmanEstimate':_0x28e662,'volatilityRegime':_0x37fb21,'ofiValue':_0x58ba42,'models':_0x3c3886,'orderFlowConfirmed':_0x1d3ef6,'kalmanConfirmed':_0x3bf8d6,'expires':Date['now']()+0xea60};return this[_0x59ebe3(0x1e3)](_0x59ebe3(0x229),{'side':_0x270e0c===_0x59ebe3(0x21d)?_0x59ebe3(0x217):'sell','action':_0x59ebe3(0x220),'reason':'Z='+_0x5732c7['toFixed'](0x2)+_0x59ebe3(0x1e5)+(_0x285202*0x64)['toFixed'](0x0)+'%,\x20OFI='+(_0x58ba42*0x64)[_0x59ebe3(0x1f6)](0x0)+_0x59ebe3(0x215)+(_0x3f8db7*0x64)['toFixed'](0x0)+'%',..._0x4c8b68}),this['emit']('log',{'type':_0x59ebe3(0x1fb),'message':'[HQX]\x20SIGNAL:\x20'+_0x270e0c['toUpperCase']()+'\x20@\x20'+_0x33d398[_0x59ebe3(0x1f6)](0x2)+'\x20|\x20Z:'+_0x5732c7['toFixed'](0x2)+'\x20VPIN:'+(_0x285202*0x64)[_0x59ebe3(0x1f6)](0x0)+_0x59ebe3(0x1ff)+(_0x58ba42*0x64)[_0x59ebe3(0x1f6)](0x0)+_0x59ebe3(0x21e)+_0x1efeb9['toFixed'](0x5)+'\x20Regime:'+_0x37fb21+_0x59ebe3(0x1df)+(_0x3f8db7*0x64)[_0x59ebe3(0x1f6)](0x0)+'%'}),_0x4c8b68;}['shouldExitByZScore'](_0x35553e){const _0x3100b2=_0x2f642f,_0x4d18f6=this[_0x3100b2(0x1dc)][_0x3100b2(0x21f)](_0x35553e);if(!_0x4d18f6||_0x4d18f6['length']<0x32)return![];const _0x25f249=this[_0x3100b2(0x22a)](_0x4d18f6);return Math['abs'](_0x25f249)<this[_0x3100b2(0x1f0)];}[_0x2f642f(0x226)](_0x20f79c){const _0x3967e1=_0x2f642f,_0x453533=this[_0x3967e1(0x1dc)]['get'](_0x20f79c),_0x43daf0=this['volumeBuffer']['get'](_0x20f79c),_0x1e60be=this[_0x3967e1(0x1d6)]['get'](_0x20f79c);if(!_0x453533||!_0x43daf0||!_0x1e60be||_0x1e60be['length']<0x32)return null;const _0x1a1dc9=this['_computeZScore'](_0x453533),_0x14c4da=this[_0x3967e1(0x1ce)](_0x43daf0),_0x39dceb=this[_0x3967e1(0x20c)](_0x1e60be),_0x4a2092=this['_computeOrderFlowImbalance'](_0x1e60be);return{'zscore':Math[_0x3967e1(0x1f3)](0x1,Math['abs'](_0x1a1dc9)/0x4),'vpin':0x1-_0x14c4da,'kyleLambda':_0x39dceb>0.001?0.5:0.8,'kalman':0.7,'volatility':0.7,'ofi':Math[_0x3967e1(0x1e8)](_0x4a2092)>0.1?0.8:0.5,'composite':0.7,'raw':{'zscore':_0x1a1dc9,'vpin':_0x14c4da,'kyleLambda':_0x39dceb,'ofi':_0x4a2092}};}[_0x2f642f(0x1ef)](_0x15937a,_0x56b1e5){const _0x4e2ee8=_0x2f642f,_0x139953=this['barHistory']['get'](_0x15937a)||[];if(_0x139953[_0x4e2ee8(0x219)]<0x32)return{'ready':![],'message':_0x4e2ee8(0x206)+_0x139953[_0x4e2ee8(0x219)]+'/50\x20bars'};const _0x119888=this['priceBuffer'][_0x4e2ee8(0x21f)](_0x15937a)||[],_0x57c1cf=this[_0x4e2ee8(0x228)]['get'](_0x15937a)||[],_0x19f0b4=this[_0x4e2ee8(0x22a)](_0x119888),_0x921872=this[_0x4e2ee8(0x1ce)](_0x57c1cf),_0x5def40=this['_computeOrderFlowImbalance'](_0x139953),_0xc85c2b=this[_0x4e2ee8(0x20c)](_0x139953),{regime:_0x16c6d5,params:_0x1a43c5}=this['_detectVolatilityRegime'](_0x15937a,_0x139953);return{'ready':!![],'zScore':_0x19f0b4,'vpin':_0x921872,'ofi':_0x5def40,'kyleLambda':_0xc85c2b,'regime':_0x16c6d5,'stopTicks':Math['round'](this['baseStopTicks']*_0x1a43c5['stopMultiplier']),'targetTicks':Math['round'](this['baseTargetTicks']*_0x1a43c5[_0x4e2ee8(0x205)]),'threshold':_0x1a43c5['zscoreThreshold'],'barsProcessed':_0x139953['length'],'models':'6\x20(Z-Score,\x20VPIN,\x20Kyle,\x20Kalman,\x20Vol,\x20OFI)'};}[_0x2f642f(0x1db)](_0x34f4ee){const _0x27c887=_0x2f642f;this[_0x27c887(0x22c)][_0x27c887(0x202)]({'netPnl':_0x34f4ee,'timestamp':Date[_0x27c887(0x1d4)]()});if(this['recentTrades'][_0x27c887(0x219)]>0x64)this['recentTrades'][_0x27c887(0x203)]();_0x34f4ee>0x0?(this['winStreak']++,this[_0x27c887(0x1c7)]=0x0,this['stats']['wins']++):(this[_0x27c887(0x1c7)]++,this['winStreak']=0x0,this[_0x27c887(0x218)][_0x27c887(0x22d)]++),this['stats'][_0x27c887(0x20d)]++,this['stats'][_0x27c887(0x1f1)]+=_0x34f4ee,this['emit'](_0x27c887(0x21c),{'type':'debug','message':_0x27c887(0x1c8)+(_0x34f4ee>0x0?'WIN':_0x27c887(0x1ea))+'\x20$'+_0x34f4ee[_0x27c887(0x1f6)](0x2)+_0x27c887(0x1c9)+(_0x34f4ee>0x0?this['winStreak']:-this['lossStreak'])});}['getBarHistory'](_0x93968b){const _0x132087=_0x2f642f;return this['barHistory'][_0x132087(0x21f)](_0x93968b)||[];}[_0x2f642f(0x1ed)](){return this['stats'];}[_0x2f642f(0x1dd)](_0x5bcc92){const _0x58220e=_0x2f642f;this['barHistory'][_0x58220e(0x1e4)](_0x5bcc92,[]),this['priceBuffer']['set'](_0x5bcc92,[]),this['volumeBuffer']['set'](_0x5bcc92,[]),this[_0x58220e(0x1da)][_0x58220e(0x1e4)](_0x5bcc92,[]),this['kalmanStates']['set'](_0x5bcc92,{'estimate':0x0,'errorCovariance':0x1}),this[_0x58220e(0x1e3)]('log',{'type':'info','message':'[HQX-UltraScalping]\x20Reset\x20state\x20for\x20'+_0x5bcc92});}}class UltraScalpingStrategy extends EventEmitter{constructor(_0x1c68b9={}){const _0x27786d=_0x2f642f;super(),this['config']=_0x1c68b9,this[_0x27786d(0x211)]=new HQXUltraScalping(_0x1c68b9),this['strategy']['on'](_0x27786d(0x229),_0x26640d=>this['emit'](_0x27786d(0x229),_0x26640d)),this['strategy']['on']('log',_0x24647b=>this['emit']('log',_0x24647b));}[_0x2f642f(0x1e7)](_0x43265a){const _0x1c2d27=_0x2f642f;return this[_0x1c2d27(0x211)][_0x1c2d27(0x1e7)](_0x43265a);}['onTick'](_0x3d1505){return this['strategy']['onTick'](_0x3d1505);}['onTrade'](_0x4b9f05){const _0x62a743=_0x2f642f;return this[_0x62a743(0x211)][_0x62a743(0x1c3)](_0x4b9f05);}['processBar'](_0xfb06fb,_0x5935b6){return this['strategy']['processBar'](_0xfb06fb,_0x5935b6);}['initialize'](_0x38e2e1,_0x4aea8e,_0x3d4b0f){const _0x1997da=_0x2f642f;return this['strategy'][_0x1997da(0x212)](_0x38e2e1,_0x4aea8e,_0x3d4b0f);}[_0x2f642f(0x1ef)](_0x366f26,_0x32c33d){const _0x5074bc=_0x2f642f;return this[_0x5074bc(0x211)][_0x5074bc(0x1ef)](_0x366f26,_0x32c33d);}['recordTradeResult'](_0x1c8b45){const _0x49a1ad=_0x2f642f;return this[_0x49a1ad(0x211)]['recordTradeResult'](_0x1c8b45);}[_0x2f642f(0x1dd)](_0x5b64d8){const _0x250714=_0x2f642f;return this['strategy'][_0x250714(0x1dd)](_0x5b64d8);}['getStats'](){const _0x31780e=_0x2f642f;return this[_0x31780e(0x211)][_0x31780e(0x1ed)]();}['getBarHistory'](_0x48fbb3){const _0x40b812=_0x2f642f;return this[_0x40b812(0x211)][_0x40b812(0x1c6)](_0x48fbb3);}[_0x2f642f(0x226)](_0x3120e1){const _0x1c5a1e=_0x2f642f;return this['strategy'][_0x1c5a1e(0x226)](_0x3120e1);}['shouldExitByZScore'](_0x572f72){const _0x4a0aa1=_0x2f642f;return this['strategy'][_0x4a0aa1(0x1e1)](_0x572f72);}[_0x2f642f(0x1e9)](_0x1df7f7){return null;}}module['exports']={'HQXUltraScalping':HQXUltraScalping,'UltraScalpingStrategy':UltraScalpingStrategy,'M1':UltraScalpingStrategy,'S1':HQXUltraScalping,'OrderSide':OrderSide,'SignalStrength':SignalStrength};function _0x48c6(){const _0x147040=['reset','uuid','\x20|\x20Conf:','close','shouldExitByZScore','BID','emit','set',',\x20VPIN=','_generateSignal','processTick','abs','generateSignal','LOSS','10eDFdqK','tickValue','getStats','_computeOrderFlowImbalance','getAnalysisState','zscoreExitThreshold','pnl','HQX_ULTRA_SCALPING_6MODELS','min','signals','kalmanStates','toFixed','processBar','zscoreEntryThreshold','42OUKcWP','ofiLookback','info','_detectVolatilityRegime','normal','756384ICUZpV','%\x20OFI:','sell','slice','push','shift','baseStopTicks','targetMultiplier','Collecting\x20data...\x20','breakevenTicks','MODERATE','2JHluhv','1314171KXLtHF','round','_computeKyleLambda','trades','kyleLambda','volume','high','strategy','initialize','confidenceBonus','volatilityLookback','%,\x20cf=','ofi','buy','stats','length','reduce','profitLockPct','log','long','%\x20Kyle:','get','open','14929277lhfYna','1563010cOsStZ','short','estimate','tickSize','getModelValues',',\x20value=','volumeBuffer','signal','_computeZScore','vpinWindow','recentTrades','losses','baseTargetTicks',':\x20tick=','430726yXGdiw','ASK','onTrade','_applyKalmanFilter','6icBfld','getBarHistory','lossStreak','[HQX]\x20Trade\x20result:\x20',',\x20streak:\x20','kalmanMeasurementNoise','low','zscore','749528SyvYql','_computeVPIN','weights','composite','volatility','cooldownMs','312126MTruvf','now','lastSignalTime','barHistory','minConfidence','zscoreThreshold','errorCovariance','atrHistory','recordTradeResult','priceBuffer'];_0x48c6=function(){return _0x147040;};return _0x48c6();}
|
|
1
|
+
const _0x3f38f4=_0x30a6;(function(_0x3c3e69,_0x1223f4){const _0x5e8f56=_0x30a6,_0xb5f6d7=_0x3c3e69();while(!![]){try{const _0x303347=-parseInt(_0x5e8f56(0x127))/0x1*(parseInt(_0x5e8f56(0x104))/0x2)+-parseInt(_0x5e8f56(0x113))/0x3+parseInt(_0x5e8f56(0x14b))/0x4+-parseInt(_0x5e8f56(0x126))/0x5+parseInt(_0x5e8f56(0xfa))/0x6+-parseInt(_0x5e8f56(0x139))/0x7*(-parseInt(_0x5e8f56(0x155))/0x8)+parseInt(_0x5e8f56(0x144))/0x9*(-parseInt(_0x5e8f56(0x159))/0xa);if(_0x303347===_0x1223f4)break;else _0xb5f6d7['push'](_0xb5f6d7['shift']());}catch(_0x5e1db9){_0xb5f6d7['push'](_0xb5f6d7['shift']());}}}(_0x492e,0xf0c16));const EventEmitter=require(_0x3f38f4(0x117)),{v4:uuidv4}=require('uuid'),OrderSide={'BID':0x0,'ASK':0x1},SignalStrength={'WEAK':0x1,'MODERATE':0x2,'STRONG':0x3,'VERY_STRONG':0x4};class HQXUltraScalping extends EventEmitter{constructor(_0x3c54c6={}){const _0x5be687=_0x3f38f4;super(),this[_0x5be687(0x132)]=_0x3c54c6[_0x5be687(0x132)]||0.25,this['tickValue']=_0x3c54c6[_0x5be687(0xff)]||0x5,this[_0x5be687(0x10e)]=1.5,this[_0x5be687(0x135)]=0.5,this['vpinWindow']=0x32,this[_0x5be687(0x152)]=0.7,this[_0x5be687(0x14d)]=0.01,this['kalmanMeasurementNoise']=0.1,this[_0x5be687(0x140)]=0x64,this['ofiLookback']=0x14,this['baseStopTicks']=0x8,this[_0x5be687(0x120)]=0x10,this['breakevenTicks']=0x4,this['profitLockPct']=0.5,this['minConfidence']=0.55,this[_0x5be687(0x10a)]={'zscore':0.3,'ofi':0.2,'vpin':0.15,'kalman':0.15,'kyleLambda':0.1,'volatility':0.1},this[_0x5be687(0xfb)]=new Map(),this['priceBuffer']=new Map(),this['volumeBuffer']=new Map(),this['kalmanStates']=new Map(),this[_0x5be687(0x146)]=new Map(),this['recentTrades']=[],this[_0x5be687(0x142)]=0x0,this[_0x5be687(0x122)]=0x0,this[_0x5be687(0x145)]=0x0,this[_0x5be687(0x108)]=0x7530,this[_0x5be687(0x158)]=0x2710,this['stats']={'signals':0x0,'trades':0x0,'wins':0x0,'losses':0x0,'pnl':0x0};}[_0x3f38f4(0x136)](_0x464eb7,_0x5a9dff=0.25,_0x2fc97c=0x5){const _0x564b59=_0x3f38f4;this[_0x564b59(0x132)]=_0x5a9dff,this['tickValue']=_0x2fc97c,this['barHistory']['set'](_0x464eb7,[]),this[_0x564b59(0x11c)]['set'](_0x464eb7,[]),this[_0x564b59(0x125)][_0x564b59(0x11e)](_0x464eb7,[]),this['atrHistory'][_0x564b59(0x11e)](_0x464eb7,[]),this[_0x564b59(0x134)]['set'](_0x464eb7,{'estimate':0x0,'errorCovariance':0x1}),this['emit']('log',{'type':_0x564b59(0x13e),'message':'[HQX-UltraScalping]\x20Initialized\x20for\x20'+_0x464eb7+_0x564b59(0x11a)+_0x5a9dff+',\x20value='+_0x2fc97c}),this['emit'](_0x564b59(0x12f),{'type':'info','message':'[HQX-UltraScalping]\x206\x20Models:\x20Z-Score(30%),\x20OFI(20%),\x20VPIN(15%),\x20Kalman(15%),\x20Kyle(10%),\x20Vol(10%)'});}['processTick'](_0x2d5017){const {contractId:_0x28f845,price:_0x88f637,volume:_0x7efaf6,side:_0x391eaf,timestamp:_0x3a6445}=_0x2d5017,_0x5e6b0b={'timestamp':_0x3a6445||Date['now'](),'open':_0x88f637,'high':_0x88f637,'low':_0x88f637,'close':_0x88f637,'volume':_0x7efaf6||0x1};return this['processBar'](_0x28f845,_0x5e6b0b);}[_0x3f38f4(0x105)](_0xa459d5){const _0x322b9e=_0x3f38f4;return this[_0x322b9e(0x130)](_0xa459d5);}['onTrade'](_0x5cf3bf){const _0xd0316b=_0x3f38f4;return this['processTick']({'contractId':_0x5cf3bf['contractId']||_0x5cf3bf['symbol'],'price':_0x5cf3bf['price'],'volume':_0x5cf3bf['size']||_0x5cf3bf['volume']||0x1,'side':_0x5cf3bf['side'],'timestamp':_0x5cf3bf[_0xd0316b(0x14c)]||Date[_0xd0316b(0x141)]()});}['processBar'](_0x50cd75,_0x58e8e3){const _0x4c230d=_0x3f38f4;let _0x590f41=this[_0x4c230d(0xfb)]['get'](_0x50cd75);!_0x590f41&&(this['initialize'](_0x50cd75),_0x590f41=this[_0x4c230d(0xfb)]['get'](_0x50cd75));_0x590f41[_0x4c230d(0x115)](_0x58e8e3);if(_0x590f41[_0x4c230d(0xf6)]>0x1f4)_0x590f41[_0x4c230d(0x10c)]();const _0x524a2d=this['priceBuffer'][_0x4c230d(0x10d)](_0x50cd75);_0x524a2d[_0x4c230d(0x115)](_0x58e8e3[_0x4c230d(0x150)]);if(_0x524a2d['length']>0xc8)_0x524a2d[_0x4c230d(0x10c)]();const _0xd29926=this['volumeBuffer']['get'](_0x50cd75),_0x55ca76=_0x58e8e3['high']-_0x58e8e3[_0x4c230d(0x13a)];let _0x2823ba=_0x58e8e3['volume']*0.5,_0x3a9aae=_0x58e8e3[_0x4c230d(0x119)]*0.5;if(_0x55ca76>0x0){const _0x362c99=(_0x58e8e3[_0x4c230d(0x150)]-_0x58e8e3[_0x4c230d(0x13a)])/_0x55ca76;_0x2823ba=_0x58e8e3['volume']*_0x362c99,_0x3a9aae=_0x58e8e3['volume']*(0x1-_0x362c99);}_0xd29926['push']({'buy':_0x2823ba,'sell':_0x3a9aae});if(_0xd29926['length']>0x64)_0xd29926[_0x4c230d(0x10c)]();if(_0x590f41[_0x4c230d(0xf6)]<0x32)return null;const _0x1325ba=this['_computeZScore'](_0x524a2d),_0x571dd6=this['_computeVPIN'](_0xd29926),_0x3b2656=this['_computeKyleLambda'](_0x590f41),_0x4756eb=this[_0x4c230d(0x147)](_0x50cd75,_0x58e8e3['close']),{regime:_0x2d97c8,params:_0x2a0174}=this[_0x4c230d(0x11d)](_0x50cd75,_0x590f41),_0x5047bc=this[_0x4c230d(0x13d)](_0x590f41);return this['_generateSignal'](_0x50cd75,_0x58e8e3['close'],_0x1325ba,_0x571dd6,_0x3b2656,_0x4756eb,_0x2d97c8,_0x2a0174,_0x5047bc,_0x590f41);}['_computeZScore'](_0x7deb7,_0x58db7a=0x32){const _0x414084=_0x3f38f4;if(_0x7deb7[_0x414084(0xf6)]<_0x58db7a)return 0x0;const _0x2e1682=_0x7deb7[_0x414084(0xf9)](-_0x58db7a),_0x318644=_0x2e1682[_0x414084(0xfe)]((_0xac1064,_0x2adf11)=>_0xac1064+_0x2adf11,0x0)/_0x58db7a,_0x254ca1=_0x2e1682[_0x414084(0xfe)]((_0x33805b,_0x2ed0d1)=>_0x33805b+Math['pow'](_0x2ed0d1-_0x318644,0x2),0x0)/_0x58db7a,_0x42d35e=Math['sqrt'](_0x254ca1);if(_0x42d35e<0.0001)return 0x0;const _0x88f22d=_0x7deb7[_0x7deb7['length']-0x1];return(_0x88f22d-_0x318644)/_0x42d35e;}[_0x3f38f4(0x157)](_0x211fb8){const _0x2b9432=_0x3f38f4;if(_0x211fb8['length']<this[_0x2b9432(0x137)])return 0.5;const _0x81e4de=_0x211fb8['slice'](-this[_0x2b9432(0x137)]);let _0x270492=0x0,_0x4a3949=0x0;for(const _0x36179f of _0x81e4de){_0x270492+=_0x36179f[_0x2b9432(0x129)],_0x4a3949+=_0x36179f[_0x2b9432(0x138)];}const _0x44a161=_0x270492+_0x4a3949;if(_0x44a161<0x1)return 0.5;return Math[_0x2b9432(0x12c)](_0x270492-_0x4a3949)/_0x44a161;}[_0x3f38f4(0x12e)](_0x2bb288){const _0x21dc46=_0x3f38f4;if(_0x2bb288[_0x21dc46(0xf6)]<0x14)return 0x0;const _0x114e7e=_0x2bb288[_0x21dc46(0xf9)](-0x14),_0x580449=[],_0x4d1abc=[];for(let _0x25a48c=0x1;_0x25a48c<_0x114e7e['length'];_0x25a48c++){_0x580449[_0x21dc46(0x115)](_0x114e7e[_0x25a48c][_0x21dc46(0x150)]-_0x114e7e[_0x25a48c-0x1]['close']),_0x4d1abc['push'](_0x114e7e[_0x25a48c][_0x21dc46(0x119)]);}const _0x1eed1c=_0x580449[_0x21dc46(0xfe)]((_0x551e0b,_0x79e264)=>_0x551e0b+_0x79e264,0x0)/_0x580449[_0x21dc46(0xf6)],_0x5d6f31=_0x4d1abc[_0x21dc46(0xfe)]((_0x19105f,_0x474e55)=>_0x19105f+_0x474e55,0x0)/_0x4d1abc[_0x21dc46(0xf6)];let _0x5bcef2=0x0,_0x52b84d=0x0;for(let _0x21c761=0x0;_0x21c761<_0x580449[_0x21dc46(0xf6)];_0x21c761++){_0x5bcef2+=(_0x580449[_0x21c761]-_0x1eed1c)*(_0x4d1abc[_0x21c761]-_0x5d6f31),_0x52b84d+=Math[_0x21dc46(0x154)](_0x4d1abc[_0x21c761]-_0x5d6f31,0x2);}_0x5bcef2/=_0x580449[_0x21dc46(0xf6)],_0x52b84d/=_0x580449['length'];if(_0x52b84d<0.0001)return 0x0;return Math['abs'](_0x5bcef2/_0x52b84d);}[_0x3f38f4(0x147)](_0xe221fa,_0x8dbb94){const _0x4dc809=_0x3f38f4;let _0x332c4e=this[_0x4dc809(0x134)][_0x4dc809(0x10d)](_0xe221fa);if(!_0x332c4e)return _0x332c4e={'estimate':_0x8dbb94,'errorCovariance':0x1},this[_0x4dc809(0x134)]['set'](_0xe221fa,_0x332c4e),_0x8dbb94;const _0x238ea1=_0x332c4e[_0x4dc809(0x128)],_0x2ce695=_0x332c4e['errorCovariance']+this['kalmanProcessNoise'],_0x1fb9a6=_0x2ce695/(_0x2ce695+this['kalmanMeasurementNoise']),_0x418ab9=_0x238ea1+_0x1fb9a6*(_0x8dbb94-_0x238ea1),_0xce5b9e=(0x1-_0x1fb9a6)*_0x2ce695;return _0x332c4e['estimate']=_0x418ab9,_0x332c4e[_0x4dc809(0x143)]=_0xce5b9e,_0x418ab9;}[_0x3f38f4(0x11d)](_0x26bd7b,_0x1640fe){const _0x34b40f=_0x3f38f4,_0x2726dd=this[_0x34b40f(0xf4)](_0x1640fe),_0x2b9bfe=_0x2726dd/this[_0x34b40f(0x132)];let _0x5b3cb2=this['atrHistory'][_0x34b40f(0x10d)](_0x26bd7b);!_0x5b3cb2&&(_0x5b3cb2=[],this['atrHistory'][_0x34b40f(0x11e)](_0x26bd7b,_0x5b3cb2));_0x5b3cb2[_0x34b40f(0x115)](_0x2726dd);if(_0x5b3cb2['length']>0x1f4)_0x5b3cb2[_0x34b40f(0x10c)]();let _0x4550ab=0.5;_0x5b3cb2[_0x34b40f(0xf6)]>=0x14&&(_0x4550ab=_0x5b3cb2[_0x34b40f(0x14f)](_0x389c46=>_0x389c46<=_0x2726dd)[_0x34b40f(0xf6)]/_0x5b3cb2['length']);let _0x322a81,_0x12da5f;if(_0x4550ab<0.25)_0x322a81='low',_0x12da5f={'stopMultiplier':0.8,'targetMultiplier':0.9,'zscoreThreshold':1.2,'confidenceBonus':0.05};else _0x4550ab<0.75?(_0x322a81=_0x34b40f(0x13f),_0x12da5f={'stopMultiplier':0x1,'targetMultiplier':0x1,'zscoreThreshold':1.5,'confidenceBonus':0x0}):(_0x322a81=_0x34b40f(0xf3),_0x12da5f={'stopMultiplier':1.3,'targetMultiplier':1.2,'zscoreThreshold':0x2,'confidenceBonus':-0.05});return{'regime':_0x322a81,'params':_0x12da5f};}[_0x3f38f4(0xf4)](_0x18e3e6,_0x4a2b73=0xe){const _0x212453=_0x3f38f4;if(_0x18e3e6[_0x212453(0xf6)]<_0x4a2b73+0x1)return 2.5;const _0x29de65=[];for(let _0x489b71=_0x18e3e6[_0x212453(0xf6)]-_0x4a2b73;_0x489b71<_0x18e3e6[_0x212453(0xf6)];_0x489b71++){const _0x2e0a47=_0x18e3e6[_0x489b71],_0x26dbf2=_0x18e3e6[_0x489b71-0x1]['close'],_0x3a3455=Math['max'](_0x2e0a47[_0x212453(0xf3)]-_0x2e0a47[_0x212453(0x13a)],Math['abs'](_0x2e0a47[_0x212453(0xf3)]-_0x26dbf2),Math['abs'](_0x2e0a47[_0x212453(0x13a)]-_0x26dbf2));_0x29de65['push'](_0x3a3455);}return _0x29de65[_0x212453(0xfe)]((_0xad4b3f,_0x5d77c7)=>_0xad4b3f+_0x5d77c7,0x0)/_0x29de65['length'];}[_0x3f38f4(0x13d)](_0x537d02){const _0x452547=_0x3f38f4;if(_0x537d02['length']<this['ofiLookback'])return 0x0;const _0xa1e75b=_0x537d02['slice'](-this['ofiLookback']);let _0xf2e98=0x0,_0x1a00ce=0x0;for(const _0x46657 of _0xa1e75b){const _0x1aeaaf=_0x46657[_0x452547(0xf3)]-_0x46657[_0x452547(0x13a)];if(_0x1aeaaf>0x0){const _0x3ad9ad=(_0x46657[_0x452547(0x150)]-_0x46657['low'])/_0x1aeaaf;_0xf2e98+=_0x3ad9ad*_0x46657[_0x452547(0x119)],_0x1a00ce+=(0x1-_0x3ad9ad)*_0x46657['volume'];}}const _0x54c894=_0xf2e98+_0x1a00ce;if(_0x54c894<0x1)return 0x0;return(_0xf2e98-_0x1a00ce)/_0x54c894;}[_0x3f38f4(0x14a)](_0x507b98,_0x3263f1,_0x2faa63,_0x1fab76,_0x3da40e,_0x596d19,_0x51c2b6,_0x52e7c0,_0x5b469b,_0x10653a){const _0x2ddf32=_0x3f38f4,_0x2441b5=Math['abs'](_0x2faa63);if(_0x2441b5<_0x52e7c0['zscoreThreshold'])return null;if(_0x1fab76>this['vpinToxicThreshold'])return null;let _0x1242ea;if(_0x2faa63<-_0x52e7c0['zscoreThreshold'])_0x1242ea='long';else{if(_0x2faa63>_0x52e7c0['zscoreThreshold'])_0x1242ea=_0x2ddf32(0xf7);else return null;}const _0x7db943=_0x1242ea===_0x2ddf32(0xfd)&&_0x5b469b>0.1||_0x1242ea===_0x2ddf32(0xf7)&&_0x5b469b<-0.1,_0x50fa47=_0x3263f1-_0x596d19,_0x1895a4=_0x1242ea===_0x2ddf32(0xfd)&&_0x50fa47<0x0||_0x1242ea===_0x2ddf32(0xf7)&&_0x50fa47>0x0,_0x4afb8d={'zscore':Math[_0x2ddf32(0x12b)](0x1,_0x2441b5/0x4),'vpin':0x1-_0x1fab76,'kyleLambda':_0x3da40e>0.001?0.5:0.8,'kalman':_0x1895a4?0.8:0.4,'volatility':_0x51c2b6===_0x2ddf32(0x13f)?0.8:_0x51c2b6==='low'?0.7:0.6,'ofi':_0x7db943?0.9:0.5,'composite':0x0};_0x4afb8d[_0x2ddf32(0xf5)]=_0x4afb8d['zscore']*this[_0x2ddf32(0x10a)]['zscore']+_0x4afb8d['vpin']*this[_0x2ddf32(0x10a)]['vpin']+_0x4afb8d['kyleLambda']*this['weights'][_0x2ddf32(0x106)]+_0x4afb8d['kalman']*this['weights'][_0x2ddf32(0x124)]+_0x4afb8d['volatility']*this['weights'][_0x2ddf32(0x15a)]+_0x4afb8d['ofi']*this['weights'][_0x2ddf32(0x15d)];const _0x256dc9=Math['min'](0x1,_0x4afb8d[_0x2ddf32(0xf5)]+_0x52e7c0[_0x2ddf32(0x156)]);if(_0x256dc9<this[_0x2ddf32(0x15c)])return null;if(Date['now']()-this['lastSignalTime']<this[_0x2ddf32(0x108)])return null;const _0x1ccb91=Math['round'](this[_0x2ddf32(0x15b)]*_0x52e7c0[_0x2ddf32(0x103)]),_0x5cc624=Math['round'](this['baseTargetTicks']*_0x52e7c0[_0x2ddf32(0x112)]),_0x44d2b0=Math[_0x2ddf32(0x10f)](0x6,Math['min'](0xc,_0x1ccb91)),_0x367001=Math['max'](_0x44d2b0*1.5,Math['min'](0x18,_0x5cc624));let _0x4408b9,_0x454d41,_0x1bfe33,_0x1d89bf;_0x1242ea==='long'?(_0x4408b9=_0x3263f1-_0x44d2b0*this['tickSize'],_0x454d41=_0x3263f1+_0x367001*this[_0x2ddf32(0x132)],_0x1bfe33=_0x3263f1+this[_0x2ddf32(0x14e)]*this[_0x2ddf32(0x132)],_0x1d89bf=_0x3263f1+_0x367001*this[_0x2ddf32(0xfc)]*this['tickSize']):(_0x4408b9=_0x3263f1+_0x44d2b0*this['tickSize'],_0x454d41=_0x3263f1-_0x367001*this['tickSize'],_0x1bfe33=_0x3263f1-this['breakevenTicks']*this[_0x2ddf32(0x132)],_0x1d89bf=_0x3263f1-_0x367001*this['profitLockPct']*this[_0x2ddf32(0x132)]);const _0x2df7f9=_0x367001/_0x44d2b0,_0x3e5215=Math[_0x2ddf32(0x133)](_0x367001*0.5),_0x19d283=Math['round'](_0x44d2b0*0.4);let _0x48825d=SignalStrength[_0x2ddf32(0x118)];if(_0x256dc9>=0.85)_0x48825d=SignalStrength[_0x2ddf32(0x13c)];else{if(_0x256dc9>=0.75)_0x48825d=SignalStrength['STRONG'];else{if(_0x256dc9<0.6)_0x48825d=SignalStrength['WEAK'];}}const _0x496c28=0.5+(_0x256dc9-0.5)*0.4,_0x21c395=_0x496c28*Math[_0x2ddf32(0x12c)](_0x454d41-_0x3263f1)-(0x1-_0x496c28)*Math[_0x2ddf32(0x12c)](_0x3263f1-_0x4408b9);this['lastSignalTime']=Date[_0x2ddf32(0x141)](),this[_0x2ddf32(0x11f)]['signals']++;const _0x253fba={'id':uuidv4(),'timestamp':Date[_0x2ddf32(0x141)](),'symbol':_0x507b98['split']('.')[0x0]||_0x507b98,'contractId':_0x507b98,'side':_0x1242ea==='long'?OrderSide['BID']:OrderSide['ASK'],'direction':_0x1242ea,'strategy':'HQX_ULTRA_SCALPING_6MODELS','strength':_0x48825d,'edge':_0x21c395,'confidence':_0x256dc9,'entry':_0x3263f1,'entryPrice':_0x3263f1,'stopLoss':_0x4408b9,'takeProfit':_0x454d41,'riskReward':_0x2df7f9,'stopTicks':_0x44d2b0,'targetTicks':_0x367001,'trailTriggerTicks':_0x3e5215,'trailDistanceTicks':_0x19d283,'beBreakeven':_0x1bfe33,'profitLockLevel':_0x1d89bf,'zScore':_0x2faa63,'zScoreExit':this[_0x2ddf32(0x135)],'vpinValue':_0x1fab76,'kyleLambda':_0x3da40e,'kalmanEstimate':_0x596d19,'volatilityRegime':_0x51c2b6,'ofiValue':_0x5b469b,'models':_0x4afb8d,'orderFlowConfirmed':_0x7db943,'kalmanConfirmed':_0x1895a4,'expires':Date[_0x2ddf32(0x141)]()+0xea60};return this['emit'](_0x2ddf32(0x10b),{'side':_0x1242ea===_0x2ddf32(0xfd)?_0x2ddf32(0x129):'sell','action':'open','reason':'Z='+_0x2faa63['toFixed'](0x2)+_0x2ddf32(0x121)+(_0x1fab76*0x64)[_0x2ddf32(0x151)](0x0)+_0x2ddf32(0x111)+(_0x5b469b*0x64)['toFixed'](0x0)+'%,\x20cf='+(_0x256dc9*0x64)[_0x2ddf32(0x151)](0x0)+'%',..._0x253fba}),this['emit'](_0x2ddf32(0x12f),{'type':_0x2ddf32(0x13e),'message':_0x2ddf32(0x123)+_0x1242ea[_0x2ddf32(0x100)]()+'\x20@\x20'+_0x3263f1[_0x2ddf32(0x151)](0x2)+'\x20|\x20Z:'+_0x2faa63[_0x2ddf32(0x151)](0x2)+'\x20VPIN:'+(_0x1fab76*0x64)[_0x2ddf32(0x151)](0x0)+'%\x20OFI:'+(_0x5b469b*0x64)['toFixed'](0x0)+'%\x20Kyle:'+_0x3da40e['toFixed'](0x5)+'\x20Regime:'+_0x51c2b6+'\x20|\x20Conf:'+(_0x256dc9*0x64)['toFixed'](0x0)+'%'}),_0x253fba;}[_0x3f38f4(0x107)](_0x3f100d){const _0x59d96e=_0x3f38f4,_0x464578=this[_0x59d96e(0x11c)][_0x59d96e(0x10d)](_0x3f100d);if(!_0x464578||_0x464578['length']<0x32)return![];const _0x3aa107=this[_0x59d96e(0x12a)](_0x464578);return Math[_0x59d96e(0x12c)](_0x3aa107)<this['zscoreExitThreshold'];}[_0x3f38f4(0xf8)](_0x3ca54b){const _0x127579=_0x3f38f4,_0x27b100=this['priceBuffer']['get'](_0x3ca54b),_0x27c0d3=this['volumeBuffer'][_0x127579(0x10d)](_0x3ca54b),_0x1af95c=this[_0x127579(0xfb)]['get'](_0x3ca54b);if(!_0x27b100||!_0x27c0d3||!_0x1af95c||_0x1af95c[_0x127579(0xf6)]<0x32)return null;const _0x596ec7=this['_computeZScore'](_0x27b100),_0x28214d=this[_0x127579(0x157)](_0x27c0d3),_0x4606b6=this['_computeKyleLambda'](_0x1af95c),_0x1d2055=this['_computeOrderFlowImbalance'](_0x1af95c);return{'zscore':Math['min'](0x1,Math['abs'](_0x596ec7)/0x4),'vpin':0x1-_0x28214d,'kyleLambda':_0x4606b6>0.001?0.5:0.8,'kalman':0.7,'volatility':0.7,'ofi':Math['abs'](_0x1d2055)>0.1?0.8:0.5,'composite':0.7,'raw':{'zscore':_0x596ec7,'vpin':_0x28214d,'kyleLambda':_0x4606b6,'ofi':_0x1d2055}};}['getAnalysisState'](_0x1b5736,_0x2a931f){const _0x4e564d=_0x3f38f4,_0xb68db1=this['barHistory']['get'](_0x1b5736)||[];if(_0xb68db1[_0x4e564d(0xf6)]<0x32)return{'ready':![],'message':'Collecting\x20data...\x20'+_0xb68db1[_0x4e564d(0xf6)]+'/50\x20bars'};const _0x5592fa=this['priceBuffer']['get'](_0x1b5736)||[],_0x449d36=this['volumeBuffer']['get'](_0x1b5736)||[],_0x3e3124=this['_computeZScore'](_0x5592fa),_0x57a88c=this[_0x4e564d(0x157)](_0x449d36),_0x2e7e00=this[_0x4e564d(0x13d)](_0xb68db1),_0x5cb4e9=this['_computeKyleLambda'](_0xb68db1),{regime:_0x1035a4,params:_0x4b10bc}=this[_0x4e564d(0x11d)](_0x1b5736,_0xb68db1);return{'ready':!![],'zScore':_0x3e3124,'vpin':_0x57a88c,'ofi':_0x2e7e00,'kyleLambda':_0x5cb4e9,'regime':_0x1035a4,'stopTicks':Math['round'](this['baseStopTicks']*_0x4b10bc[_0x4e564d(0x103)]),'targetTicks':Math[_0x4e564d(0x133)](this['baseTargetTicks']*_0x4b10bc['targetMultiplier']),'threshold':_0x4b10bc['zscoreThreshold'],'barsProcessed':_0xb68db1[_0x4e564d(0xf6)],'models':'6\x20(Z-Score,\x20VPIN,\x20Kyle,\x20Kalman,\x20Vol,\x20OFI)'};}[_0x3f38f4(0x12d)](_0x450d04){const _0x52acbd=_0x3f38f4;this[_0x52acbd(0x116)]['push']({'netPnl':_0x450d04,'timestamp':Date[_0x52acbd(0x141)]()});if(this['recentTrades']['length']>0x64)this['recentTrades']['shift']();_0x450d04>0x0?(this[_0x52acbd(0x142)]++,this['lossStreak']=0x0,this[_0x52acbd(0x11f)]['wins']++):(this[_0x52acbd(0x122)]++,this['winStreak']=0x0,this['stats'][_0x52acbd(0xf2)]++),this[_0x52acbd(0x11f)][_0x52acbd(0x149)]++,this['stats']['pnl']+=_0x450d04,this['emit'](_0x52acbd(0x12f),{'type':_0x52acbd(0x102),'message':'[HQX]\x20Trade\x20result:\x20'+(_0x450d04>0x0?'WIN':'LOSS')+'\x20$'+_0x450d04['toFixed'](0x2)+',\x20streak:\x20'+(_0x450d04>0x0?this['winStreak']:-this[_0x52acbd(0x122)])});}['getBarHistory'](_0x2909f8){const _0x462d7e=_0x3f38f4;return this[_0x462d7e(0xfb)]['get'](_0x2909f8)||[];}['getStats'](){const _0x5987ba=_0x3f38f4;return this[_0x5987ba(0x11f)];}['reset'](_0x2f1c56){const _0x3a12f5=_0x3f38f4;this['barHistory'][_0x3a12f5(0x11e)](_0x2f1c56,[]),this['priceBuffer']['set'](_0x2f1c56,[]),this['volumeBuffer']['set'](_0x2f1c56,[]),this['atrHistory'][_0x3a12f5(0x11e)](_0x2f1c56,[]),this[_0x3a12f5(0x134)]['set'](_0x2f1c56,{'estimate':0x0,'errorCovariance':0x1}),this[_0x3a12f5(0x114)](_0x3a12f5(0x12f),{'type':'info','message':_0x3a12f5(0x153)+_0x2f1c56});}}function _0x492e(){const _0x223a4b=['long','reduce','tickValue','toUpperCase','onTrade','debug','stopMultiplier','96702fpQzch','onTick','kyleLambda','shouldExitByZScore','cooldownMs','getAnalysisState','weights','signal','shift','get','zscoreEntryThreshold','max','getStats','%,\x20OFI=','targetMultiplier','1411050IMIQCo','emit','push','recentTrades','events','MODERATE','volume',':\x20tick=','getBarHistory','priceBuffer','_detectVolatilityRegime','set','stats','baseTargetTicks',',\x20VPIN=','lossStreak','[HQX]\x20SIGNAL:\x20','kalman','volumeBuffer','3286540CgzlHt','12ZmjSmH','estimate','buy','_computeZScore','min','abs','recordTradeResult','_computeKyleLambda','log','processTick','strategy','tickSize','round','kalmanStates','zscoreExitThreshold','initialize','vpinWindow','sell','12355JODrZy','low','processBar','VERY_STRONG','_computeOrderFlowImbalance','info','normal','volatilityLookback','now','winStreak','errorCovariance','207iZSoLF','lastSignalTime','atrHistory','_applyKalmanFilter','reset','trades','_generateSignal','7487032MEshvr','timestamp','kalmanProcessNoise','breakevenTicks','filter','close','toFixed','vpinToxicThreshold','[HQX-UltraScalping]\x20Reset\x20state\x20for\x20','pow','8288qXISxq','confidenceBonus','_computeVPIN','minHoldTimeMs','1069340CnLiZe','volatility','baseStopTicks','minConfidence','ofi','losses','high','_calculateATR','composite','length','short','getModelValues','slice','8719128UInoaM','barHistory','profitLockPct'];_0x492e=function(){return _0x223a4b;};return _0x492e();}function _0x30a6(_0x385a7b,_0x44cee7){_0x385a7b=_0x385a7b-0xf2;const _0x492e31=_0x492e();let _0x30a6e4=_0x492e31[_0x385a7b];return _0x30a6e4;}class UltraScalpingStrategy extends EventEmitter{constructor(_0x5b81aa={}){const _0x45add5=_0x3f38f4;super(),this['config']=_0x5b81aa,this[_0x45add5(0x131)]=new HQXUltraScalping(_0x5b81aa),this[_0x45add5(0x131)]['on'](_0x45add5(0x10b),_0x136f3b=>this['emit']('signal',_0x136f3b)),this['strategy']['on']('log',_0x222daa=>this[_0x45add5(0x114)]('log',_0x222daa));}['processTick'](_0x17aa81){const _0x40989e=_0x3f38f4;return this[_0x40989e(0x131)][_0x40989e(0x130)](_0x17aa81);}[_0x3f38f4(0x105)](_0xb2a0d3){const _0x13c7ae=_0x3f38f4;return this['strategy'][_0x13c7ae(0x105)](_0xb2a0d3);}[_0x3f38f4(0x101)](_0x47cc66){return this['strategy']['onTrade'](_0x47cc66);}[_0x3f38f4(0x13b)](_0x1fec33,_0x2b69c5){const _0x6a528a=_0x3f38f4;return this[_0x6a528a(0x131)][_0x6a528a(0x13b)](_0x1fec33,_0x2b69c5);}['initialize'](_0x2aeb31,_0x5e8a23,_0x1364cb){return this['strategy']['initialize'](_0x2aeb31,_0x5e8a23,_0x1364cb);}[_0x3f38f4(0x109)](_0x2e5e45,_0x52fb80){return this['strategy']['getAnalysisState'](_0x2e5e45,_0x52fb80);}[_0x3f38f4(0x12d)](_0x40c722){const _0x537a0c=_0x3f38f4;return this[_0x537a0c(0x131)]['recordTradeResult'](_0x40c722);}['reset'](_0x5d82c7){const _0x32c500=_0x3f38f4;return this[_0x32c500(0x131)][_0x32c500(0x148)](_0x5d82c7);}[_0x3f38f4(0x110)](){return this['strategy']['getStats']();}[_0x3f38f4(0x11b)](_0x20cecd){return this['strategy']['getBarHistory'](_0x20cecd);}[_0x3f38f4(0xf8)](_0x5c9f6d){return this['strategy']['getModelValues'](_0x5c9f6d);}[_0x3f38f4(0x107)](_0x3f5e7c){const _0x167e98=_0x3f38f4;return this[_0x167e98(0x131)]['shouldExitByZScore'](_0x3f5e7c);}['generateSignal'](_0x139b38){return null;}}module['exports']={'HQXUltraScalping':HQXUltraScalping,'UltraScalpingStrategy':UltraScalpingStrategy,'M1':UltraScalpingStrategy,'S1':HQXUltraScalping,'OrderSide':OrderSide,'SignalStrength':SignalStrength};
|
package/package.json
CHANGED
package/src/lib/data.js
CHANGED