codifx 0.1.10 → 0.1.11
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/cli/commands/explain.js +1 -179
- package/dist/cli/commands/profile.js +1 -55
- package/dist/cli/commands/scan.js +1 -300
- package/dist/cli/commands/simulate.js +1 -109
- package/dist/cli/commands/validate.js +1 -26
- package/dist/cli/index.js +1 -94
- package/dist/config/loader.js +1 -124
- package/dist/config/schema.js +1 -49
- package/dist/core/engine.js +1 -169
- package/dist/core/filters.js +1 -70
- package/dist/core/oscillator-engine.js +1 -224
- package/dist/core/scoring.js +1 -101
- package/dist/core/timeframe.js +1 -52
- package/dist/core/trend-engine.js +1 -137
- package/dist/data/mock.js +1 -111
- package/dist/data/provider.js +1 -29
- package/dist/data/yahoo.js +1 -200
- package/dist/index.js +1 -19
- package/dist/indicators/oscillator/adx.js +1 -118
- package/dist/indicators/oscillator/atr.js +1 -31
- package/dist/indicators/oscillator/cci.js +1 -39
- package/dist/indicators/oscillator/macd.js +1 -73
- package/dist/indicators/oscillator/momentum.js +1 -35
- package/dist/indicators/oscillator/rsi.js +1 -93
- package/dist/indicators/oscillator/stochastic.js +1 -89
- package/dist/indicators/oscillator/williams.js +1 -44
- package/dist/indicators/trend/ema.js +1 -36
- package/dist/indicators/trend/hma.js +1 -48
- package/dist/indicators/trend/sma.js +1 -30
- package/dist/indicators/trend/vwma.js +1 -23
- package/dist/types/index.js +1 -5
- package/dist/utils/constants.js +1 -105
- package/dist/utils/explain.js +1 -83
- package/dist/utils/formatter.js +1 -104
- package/dist/utils/html-generator.js +1 -107
- package/dist/utils/indicators.js +1 -106
- package/dist/utils/levels.js +1 -82
- package/dist/utils/logger.js +1 -238
- package/dist/utils/paths.js +1 -32
- package/dist/utils/symbols.js +1 -44
- package/dist/utils/trading-type-config.js +1 -96
- package/dist/utils/version-checker.js +1 -76
- package/package.json +1 -2
package/dist/data/mock.js
CHANGED
|
@@ -1,111 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mock data generator for simulation mode
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Generate realistic mock OHLCV data
|
|
6
|
-
*/
|
|
7
|
-
export function generateMockData(_symbol, timeframe, count = 200, trend = "up") {
|
|
8
|
-
const data = [];
|
|
9
|
-
let basePrice = 100;
|
|
10
|
-
const now = Date.now();
|
|
11
|
-
const interval = getTimeframeInterval(timeframe);
|
|
12
|
-
for (let i = count - 1; i >= 0; i--) {
|
|
13
|
-
const timestamp = now - i * interval;
|
|
14
|
-
// Generate price movement based on trend
|
|
15
|
-
let change = 0;
|
|
16
|
-
if (trend === "up") {
|
|
17
|
-
change = (Math.random() - 0.3) * 2; // Bias upward
|
|
18
|
-
}
|
|
19
|
-
else if (trend === "down") {
|
|
20
|
-
change = (Math.random() - 0.7) * 2; // Bias downward
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
change = (Math.random() - 0.5) * 2; // Neutral
|
|
24
|
-
}
|
|
25
|
-
const open = basePrice;
|
|
26
|
-
const close = basePrice + change;
|
|
27
|
-
const high = Math.max(open, close) + Math.random() * 0.5;
|
|
28
|
-
const low = Math.min(open, close) - Math.random() * 0.5;
|
|
29
|
-
const volume = Math.floor(1000000 + Math.random() * 2000000);
|
|
30
|
-
data.push({
|
|
31
|
-
timestamp,
|
|
32
|
-
open: parseFloat(open.toFixed(2)),
|
|
33
|
-
high: parseFloat(high.toFixed(2)),
|
|
34
|
-
low: parseFloat(low.toFixed(2)),
|
|
35
|
-
close: parseFloat(close.toFixed(2)),
|
|
36
|
-
volume,
|
|
37
|
-
});
|
|
38
|
-
basePrice = close;
|
|
39
|
-
}
|
|
40
|
-
return data;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Get millisecond interval for timeframe
|
|
44
|
-
*/
|
|
45
|
-
function getTimeframeInterval(timeframe) {
|
|
46
|
-
const intervals = {
|
|
47
|
-
"1m": 60 * 1000,
|
|
48
|
-
"5m": 5 * 60 * 1000,
|
|
49
|
-
"15m": 15 * 60 * 1000,
|
|
50
|
-
"1h": 60 * 60 * 1000,
|
|
51
|
-
"1d": 24 * 60 * 60 * 1000,
|
|
52
|
-
};
|
|
53
|
-
return intervals[timeframe];
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Generate mock data with specific patterns for testing
|
|
57
|
-
*/
|
|
58
|
-
export function generatePatternedData(pattern, count = 200) {
|
|
59
|
-
const now = Date.now();
|
|
60
|
-
const interval = 5 * 60 * 1000; // 5m
|
|
61
|
-
const data = [];
|
|
62
|
-
let basePrice = 100;
|
|
63
|
-
for (let i = count - 1; i >= 0; i--) {
|
|
64
|
-
const timestamp = now - i * interval;
|
|
65
|
-
let change = 0;
|
|
66
|
-
if (pattern === "oversold-reversal") {
|
|
67
|
-
// Create downtrend then reversal
|
|
68
|
-
if (i > 30) {
|
|
69
|
-
change = (Math.random() - 0.7) * 3; // Strong downtrend
|
|
70
|
-
}
|
|
71
|
-
else if (i > 20) {
|
|
72
|
-
change = (Math.random() - 0.4) * 1.5; // Slowing
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
change = (Math.random() - 0.2) * 2; // Reversal up
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else if (pattern === "overbought-reversal") {
|
|
79
|
-
// Create uptrend then reversal
|
|
80
|
-
if (i > 30) {
|
|
81
|
-
change = (Math.random() - 0.3) * 3; // Strong uptrend
|
|
82
|
-
}
|
|
83
|
-
else if (i > 20) {
|
|
84
|
-
change = (Math.random() - 0.4) * 1.5; // Slowing
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
change = (Math.random() - 0.7) * 2; // Reversal down
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else if (pattern === "strong-trend") {
|
|
91
|
-
// Consistent uptrend
|
|
92
|
-
change = (Math.random() - 0.25) * 2.5;
|
|
93
|
-
}
|
|
94
|
-
const open = basePrice;
|
|
95
|
-
const close = basePrice + change;
|
|
96
|
-
const high = Math.max(open, close) + Math.random() * 0.5;
|
|
97
|
-
const low = Math.min(open, close) - Math.random() * 0.5;
|
|
98
|
-
const volume = Math.floor(1500000 + Math.random() * 1500000);
|
|
99
|
-
data.push({
|
|
100
|
-
timestamp,
|
|
101
|
-
open: parseFloat(open.toFixed(2)),
|
|
102
|
-
high: parseFloat(high.toFixed(2)),
|
|
103
|
-
low: parseFloat(low.toFixed(2)),
|
|
104
|
-
close: parseFloat(close.toFixed(2)),
|
|
105
|
-
volume,
|
|
106
|
-
});
|
|
107
|
-
basePrice = close;
|
|
108
|
-
}
|
|
109
|
-
return data;
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=mock.js.map
|
|
1
|
+
(function(_0x2d27c4,_0x29e1c4){const _0x83b77e=a0_0x1429,_0x1081bd=_0x2d27c4();while(!![]){try{const _0x1699e2=-parseInt(_0x83b77e(0x231))/0x1*(parseInt(_0x83b77e(0x22f))/0x2)+parseInt(_0x83b77e(0x23f))/0x3+parseInt(_0x83b77e(0x218))/0x4+-parseInt(_0x83b77e(0x227))/0x5*(parseInt(_0x83b77e(0x21e))/0x6)+parseInt(_0x83b77e(0x1f8))/0x7+parseInt(_0x83b77e(0x235))/0x8+parseInt(_0x83b77e(0x200))/0x9*(-parseInt(_0x83b77e(0x213))/0xa);if(_0x1699e2===_0x29e1c4)break;else _0x1081bd['push'](_0x1081bd['shift']());}catch(_0x56edb8){_0x1081bd['push'](_0x1081bd['shift']());}}}(a0_0x55f1,0xa2fda));const a0_0x13f978=(function(){const _0x20bf01=a0_0x1429,_0x40a079={'lSuMu':function(_0x1dcc7b,_0x35c41a){return _0x1dcc7b>_0x35c41a;},'BSzlW':function(_0x186fbc,_0x1a4f9b){return _0x186fbc*_0x1a4f9b;},'JjLZx':function(_0x15cc70,_0x23253f){return _0x15cc70-_0x23253f;},'RFlJp':function(_0xa94886,_0xaa0af){return _0xa94886*_0xaa0af;},'GGtsj':function(_0x4a8c71,_0xb1e58e){return _0x4a8c71*_0xb1e58e;},'ehrDm':function(_0x46c020,_0x1a368d){return _0x46c020-_0x1a368d;},'ozRDX':function(_0x5cb58d,_0x3c8374){return _0x5cb58d!==_0x3c8374;},'XYnqa':_0x20bf01(0x20e),'DArzR':function(_0x409eb4,_0x2d0cec){return _0x409eb4-_0x2d0cec;},'mjiuG':function(_0x3c8d16,_0x270243){return _0x3c8d16-_0x270243;},'xUItq':'VEhGH'};let _0x40c719=!![];return function(_0x47b298,_0x1d79bc){const _0x230efa=_0x20bf01,_0x2d00c3={'qjLgd':function(_0xce5b55,_0x55f34a){const _0x21f389=a0_0x1429;return _0x40a079[_0x21f389(0x1ff)](_0xce5b55,_0x55f34a);},'gxjjo':function(_0x16ad50,_0x5adc52){const _0x47f883=a0_0x1429;return _0x40a079[_0x47f883(0x234)](_0x16ad50,_0x5adc52);},'RWJgu':function(_0x2511bd,_0x35f9af){const _0x1c4e5e=a0_0x1429;return _0x40a079[_0x1c4e5e(0x1f9)](_0x2511bd,_0x35f9af);}};if(_0x40a079[_0x230efa(0x1f7)](_0x40a079[_0x230efa(0x21d)],_0x40a079[_0x230efa(0x21d)])){if(_0x40a079[_0x230efa(0x1fe)](_0x3df943,0x1e))_0x43a94b=_0x40a079[_0x230efa(0x204)](_0x40a079[_0x230efa(0x1fa)](_0xe116b6['random'](),0.7),0x3);else _0x5c8f6d>0x14?_0x581785=_0x40a079[_0x230efa(0x1f9)](_0x40a079['JjLZx'](_0x92c2c7[_0x230efa(0x220)](),0.4),1.5):_0x4d0e49=_0x40a079[_0x230efa(0x21c)](_0x40a079[_0x230efa(0x229)](_0x21a293[_0x230efa(0x220)](),0.2),0x2);}else{const _0x2fd15a=_0x40c719?function(){const _0x28867e=_0x230efa;if(_0x1d79bc){if(_0x40a079[_0x28867e(0x1f7)](_0x40a079[_0x28867e(0x209)],_0x40a079[_0x28867e(0x209)])){if(_0x56665a>0x1e)_0x5c6052=_0x2d00c3['qjLgd'](_0xe6d9ca[_0x28867e(0x220)](),0.3)*0x3;else _0x13b072>0x14?_0x2f2dd3=_0x2d00c3[_0x28867e(0x1f2)](_0x161b21['random'](),0.4)*1.5:_0x49259c=_0x2d00c3[_0x28867e(0x1f4)](_0x2d00c3[_0x28867e(0x1f2)](_0x506c78[_0x28867e(0x220)](),0.7),0x2);}else{const _0x6be6a0=_0x1d79bc[_0x28867e(0x1f3)](_0x47b298,arguments);return _0x1d79bc=null,_0x6be6a0;}}}:function(){};return _0x40c719=![],_0x2fd15a;}};}()),a0_0x3f5965=a0_0x13f978(this,function(){const _0x453be8=a0_0x1429,_0x19e809={'nAUOu':_0x453be8(0x21a)};return a0_0x3f5965[_0x453be8(0x230)]()[_0x453be8(0x21b)](_0x19e809['nAUOu'])['toString']()['constructor'](a0_0x3f5965)[_0x453be8(0x21b)](_0x453be8(0x21a));});a0_0x3f5965();export function generateMockData(_0xdc9fc8,_0xaa874e,_0xd2be0b=0xc8,_0x3b8be7='up'){const _0x4ba654=a0_0x1429,_0x2ff7db={'uXTma':function(_0xcb7eff,_0x39f438){return _0xcb7eff*_0x39f438;},'rBubx':function(_0xc73ee8,_0x4a6d8d){return _0xc73ee8-_0x4a6d8d;},'wEkQv':function(_0x4fcd25,_0x4520ce){return _0x4fcd25===_0x4520ce;},'qoDdn':function(_0x29db61,_0x372188){return _0x29db61===_0x372188;},'SJUpM':'tnkjA','Defbr':function(_0x173814,_0x42e8a5){return _0x173814*_0x42e8a5;},'MUGAP':'down','pTLyQ':_0x4ba654(0x23b),'kzoqe':function(_0x4ec784,_0x4e353e){return _0x4ec784-_0x4e353e;},'UZjSN':function(_0x5278e0,_0x398200){return _0x5278e0+_0x398200;},'zyTom':function(_0x307b53,_0x581980){return _0x307b53*_0x581980;},'QrsDg':function(_0x103abe,_0x5e0ff0){return _0x103abe(_0x5e0ff0);}},_0x3822a5=[];let _0xd41417=0x64;const _0x219458=Date['now'](),_0x109724=getTimeframeInterval(_0xaa874e);for(let _0x2dcb81=_0x2ff7db[_0x4ba654(0x1f5)](_0xd2be0b,0x1);_0x2dcb81>=0x0;_0x2dcb81--){const _0x58b4ae=_0x2ff7db[_0x4ba654(0x1f5)](_0x219458,_0x2ff7db[_0x4ba654(0x1fb)](_0x2dcb81,_0x109724));let _0x5df092=0x0;if(_0x2ff7db['wEkQv'](_0x3b8be7,'up'))_0x2ff7db[_0x4ba654(0x23c)](_0x4ba654(0x21f),_0x2ff7db[_0x4ba654(0x202)])?_0x4ac64a=_0x2ff7db[_0x4ba654(0x1fb)](_0x2ff7db[_0x4ba654(0x1f5)](_0x2ae182[_0x4ba654(0x220)](),0.4),1.5):_0x5df092=_0x2ff7db[_0x4ba654(0x223)](Math[_0x4ba654(0x220)]()-0.3,0x2);else{if(_0x2ff7db[_0x4ba654(0x207)](_0x3b8be7,_0x2ff7db[_0x4ba654(0x22a)])){if(_0x2ff7db[_0x4ba654(0x232)]!==_0x2ff7db[_0x4ba654(0x232)]){const _0x2f629b=_0x1589a7?function(){if(_0x4fc842){const _0x3f0296=_0x438ec2['apply'](_0x4b520b,arguments);return _0x17bd99=null,_0x3f0296;}}:function(){};return _0x23a262=![],_0x2f629b;}else _0x5df092=_0x2ff7db['Defbr'](_0x2ff7db['kzoqe'](Math[_0x4ba654(0x220)](),0.7),0x2);}else _0x5df092=_0x2ff7db[_0x4ba654(0x223)](_0x2ff7db[_0x4ba654(0x1f5)](Math[_0x4ba654(0x220)](),0.5),0x2);}const _0x25a2ef=_0xd41417,_0x527ce5=_0x2ff7db['UZjSN'](_0xd41417,_0x5df092),_0x19b82c=_0x2ff7db['UZjSN'](Math[_0x4ba654(0x20f)](_0x25a2ef,_0x527ce5),_0x2ff7db[_0x4ba654(0x1fb)](Math['random'](),0.5)),_0x463f83=Math[_0x4ba654(0x205)](_0x25a2ef,_0x527ce5)-_0x2ff7db[_0x4ba654(0x223)](Math[_0x4ba654(0x220)](),0.5),_0x5444b4=Math['floor'](0xf4240+_0x2ff7db[_0x4ba654(0x215)](Math['random'](),0x1e8480));_0x3822a5[_0x4ba654(0x1f6)]({'timestamp':_0x58b4ae,'open':_0x2ff7db[_0x4ba654(0x226)](parseFloat,_0x25a2ef[_0x4ba654(0x221)](0x2)),'high':_0x2ff7db[_0x4ba654(0x226)](parseFloat,_0x19b82c[_0x4ba654(0x221)](0x2)),'low':_0x2ff7db[_0x4ba654(0x226)](parseFloat,_0x463f83['toFixed'](0x2)),'close':parseFloat(_0x527ce5[_0x4ba654(0x221)](0x2)),'volume':_0x5444b4}),_0xd41417=_0x527ce5;}return _0x3822a5;}function getTimeframeInterval(_0xad50cd){const _0x6b4d77=a0_0x1429,_0x543b7b={'tUlqv':function(_0x5e3a8e,_0x41ff09){return _0x5e3a8e*_0x41ff09;},'iDljj':function(_0x2b8e88,_0x261568){return _0x2b8e88*_0x261568;},'rwrzW':function(_0x86e0b2,_0x2fd239){return _0x86e0b2*_0x2fd239;}},_0x35beee={'1m':0x3c*0x3e8,'5m':_0x543b7b[_0x6b4d77(0x228)](_0x543b7b[_0x6b4d77(0x228)](0x5,0x3c),0x3e8),'15m':_0x543b7b[_0x6b4d77(0x23a)](_0x543b7b['tUlqv'](0xf,0x3c),0x3e8),'1h':_0x543b7b[_0x6b4d77(0x23a)](_0x543b7b[_0x6b4d77(0x23a)](0x3c,0x3c),0x3e8),'1d':_0x543b7b['iDljj'](_0x543b7b[_0x6b4d77(0x1f1)](0x18,0x3c)*0x3c,0x3e8)};return _0x35beee[_0xad50cd];}function a0_0x1429(_0x4c523f,_0x486b50){_0x4c523f=_0x4c523f-0x1f1;const _0x47d1d2=a0_0x55f1();let _0x3f5965=_0x47d1d2[_0x4c523f];if(a0_0x1429['GVIjPN']===undefined){var _0x13f978=function(_0x5cf702){const _0x8df4da='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3a92c0='',_0x4e7d57='',_0x3ade57=_0x3a92c0+_0x13f978;for(let _0x219ef7=0x0,_0x3382da,_0x23298c,_0x2b4525=0x0;_0x23298c=_0x5cf702['charAt'](_0x2b4525++);~_0x23298c&&(_0x3382da=_0x219ef7%0x4?_0x3382da*0x40+_0x23298c:_0x23298c,_0x219ef7++%0x4)?_0x3a92c0+=_0x3ade57['charCodeAt'](_0x2b4525+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x3382da>>(-0x2*_0x219ef7&0x6)):_0x219ef7:0x0){_0x23298c=_0x8df4da['indexOf'](_0x23298c);}for(let _0x5cee2e=0x0,_0x101a93=_0x3a92c0['length'];_0x5cee2e<_0x101a93;_0x5cee2e++){_0x4e7d57+='%'+('00'+_0x3a92c0['charCodeAt'](_0x5cee2e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4e7d57);};a0_0x1429['FGENlG']=_0x13f978,a0_0x1429['HHLbsA']={},a0_0x1429['GVIjPN']=!![];}const _0x55f14c=_0x47d1d2[0x0],_0x1429d3=_0x4c523f+_0x55f14c,_0x589bf6=a0_0x1429['HHLbsA'][_0x1429d3];if(!_0x589bf6){const _0x1589a7=function(_0x1d7dd0){this['gcrNZl']=_0x1d7dd0,this['cgqqWb']=[0x1,0x0,0x0],this['IjEAJF']=function(){return'newState';},this['JrlNur']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['ArcgJt']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x1589a7['prototype']['WFwBLv']=function(){const _0x5a0af0=new RegExp(this['JrlNur']+this['ArcgJt']),_0x299904=_0x5a0af0['test'](this['IjEAJF']['toString']())?--this['cgqqWb'][0x1]:--this['cgqqWb'][0x0];return this['gdyHqk'](_0x299904);},_0x1589a7['prototype']['gdyHqk']=function(_0x46263e){if(!Boolean(~_0x46263e))return _0x46263e;return this['dJIGom'](this['gcrNZl']);},_0x1589a7['prototype']['dJIGom']=function(_0x23a262){for(let _0x4fc842=0x0,_0xb98935=this['cgqqWb']['length'];_0x4fc842<_0xb98935;_0x4fc842++){this['cgqqWb']['push'](Math['round'](Math['random']())),_0xb98935=this['cgqqWb']['length'];}return _0x23a262(this['cgqqWb'][0x0]);},new _0x1589a7(a0_0x1429)['WFwBLv'](),_0x3f5965=a0_0x1429['FGENlG'](_0x3f5965),a0_0x1429['HHLbsA'][_0x1429d3]=_0x3f5965;}else _0x3f5965=_0x589bf6;return _0x3f5965;}export function generatePatternedData(_0x2e1130,_0x38cc8c=0xc8){const _0x3721d5=a0_0x1429,_0x4bbe09={'EfpcK':function(_0x1db72b,_0x3e0310){return _0x1db72b*_0x3e0310;},'CtRpk':function(_0x36fcb7,_0x2c3c76){return _0x36fcb7*_0x2c3c76;},'bGXxn':function(_0x22b3fa,_0x2051ea){return _0x22b3fa*_0x2051ea;},'AgYKc':function(_0x134767,_0x48145e){return _0x134767*_0x48145e;},'NPKHo':function(_0x1167bc,_0x1f58c4){return _0x1167bc*_0x1f58c4;},'HcSZP':function(_0x2956c3,_0xc7e24f){return _0x2956c3*_0xc7e24f;},'typmM':function(_0x24672d,_0x59d059){return _0x24672d*_0x59d059;},'iYEdz':function(_0x86a53,_0xdb8da){return _0x86a53-_0xdb8da;},'VMfCg':function(_0x15aa53,_0x3f0e11){return _0x15aa53===_0x3f0e11;},'tnkEl':'oversold-reversal','zQURN':function(_0x45f728,_0x1f3344){return _0x45f728!==_0x1f3344;},'cKmtS':'UDKga','MJBOC':_0x3721d5(0x1fc),'yawuv':'ZlAdK','IzMiJ':function(_0x4a8d8c,_0xa21e5a){return _0x4a8d8c-_0xa21e5a;},'fPvAe':function(_0x4ca44d,_0x1cdff0){return _0x4ca44d-_0x1cdff0;},'gQcKq':function(_0x286edb,_0x9a71e5){return _0x286edb-_0x9a71e5;},'Lccay':function(_0x14c1dd,_0x52156c){return _0x14c1dd>_0x52156c;},'VkYgd':function(_0x1c534d,_0x314948){return _0x1c534d*_0x314948;},'TnSHe':function(_0x33f578,_0x1bb29a){return _0x33f578-_0x1bb29a;},'XJnNI':function(_0x1b90cb,_0x45ac37){return _0x1b90cb===_0x45ac37;},'BfvQG':'strong-trend','vfisv':function(_0x15cc42,_0x54bfba){return _0x15cc42+_0x54bfba;},'TrhLo':function(_0x47b23c,_0x2c3a9b){return _0x47b23c+_0x2c3a9b;},'vsiWs':function(_0x1a13ae,_0x3e90db){return _0x1a13ae*_0x3e90db;},'rMHMq':function(_0xb7a0c1,_0x59b3b0){return _0xb7a0c1*_0x59b3b0;},'rsCrZ':function(_0x7a7b02,_0x58d708){return _0x7a7b02(_0x58d708);},'HRFBc':function(_0x2a49ee,_0x28879c){return _0x2a49ee(_0x28879c);}},_0x302451=Date[_0x3721d5(0x206)](),_0xc03ad2=_0x4bbe09[_0x3721d5(0x22e)](_0x4bbe09[_0x3721d5(0x233)](0x5,0x3c),0x3e8),_0x37db10=[];let _0x57c2b0=0x64;for(let _0x46c9f5=_0x4bbe09[_0x3721d5(0x23d)](_0x38cc8c,0x1);_0x46c9f5>=0x0;_0x46c9f5--){const _0x3d377b=_0x302451-_0x46c9f5*_0xc03ad2;let _0x383ded=0x0;if(_0x4bbe09['VMfCg'](_0x2e1130,_0x4bbe09['tnkEl'])){if(_0x4bbe09[_0x3721d5(0x236)](_0x4bbe09[_0x3721d5(0x22c)],_0x4bbe09[_0x3721d5(0x219)])){if(_0x46c9f5>0x1e){if(_0x4bbe09[_0x3721d5(0x208)]!==_0x4bbe09[_0x3721d5(0x208)]){const _0x476794={'1m':_0x4bbe09['EfpcK'](0x3c,0x3e8),'5m':_0x4bbe09[_0x3721d5(0x214)](_0x4bbe09[_0x3721d5(0x233)](0x5,0x3c),0x3e8),'15m':_0x4bbe09[_0x3721d5(0x1fd)](0xf*0x3c,0x3e8),'1h':_0x4bbe09[_0x3721d5(0x22e)](_0x4bbe09['CtRpk'](0x3c,0x3c),0x3e8),'1d':_0x4bbe09[_0x3721d5(0x211)](_0x4bbe09[_0x3721d5(0x211)](_0x4bbe09[_0x3721d5(0x22d)](0x18,0x3c),0x3c),0x3e8)};return _0x476794[_0x50c5b2];}else _0x383ded=_0x4bbe09[_0x3721d5(0x239)](Math[_0x3721d5(0x220)](),0.7)*0x3;}else _0x46c9f5>0x14?_0x383ded=_0x4bbe09['iYEdz'](Math[_0x3721d5(0x220)](),0.4)*1.5:_0x383ded=_0x4bbe09['fPvAe'](Math['random'](),0.2)*0x2;}else{const _0x2c47c1=_0x2d0bd3['apply'](_0x1df981,arguments);return _0x36564d=null,_0x2c47c1;}}else{if(_0x4bbe09[_0x3721d5(0x238)](_0x2e1130,_0x3721d5(0x212))){if(_0x46c9f5>0x1e)_0x383ded=_0x4bbe09[_0x3721d5(0x211)](_0x4bbe09[_0x3721d5(0x20d)](Math[_0x3721d5(0x220)](),0.3),0x3);else _0x4bbe09[_0x3721d5(0x210)](_0x46c9f5,0x14)?_0x383ded=_0x4bbe09[_0x3721d5(0x20c)](_0x4bbe09[_0x3721d5(0x237)](Math['random'](),0.4),1.5):_0x383ded=_0x4bbe09[_0x3721d5(0x201)](_0x4bbe09[_0x3721d5(0x20a)](Math['random'](),0.7),0x2);}else _0x4bbe09[_0x3721d5(0x216)](_0x2e1130,_0x4bbe09[_0x3721d5(0x22b)])&&(_0x383ded=_0x4bbe09['TnSHe'](Math[_0x3721d5(0x220)](),0.25)*2.5);}const _0x4c9d10=_0x57c2b0,_0x551863=_0x4bbe09[_0x3721d5(0x203)](_0x57c2b0,_0x383ded),_0x2c0302=_0x4bbe09[_0x3721d5(0x20b)](Math['max'](_0x4c9d10,_0x551863),_0x4bbe09[_0x3721d5(0x23e)](Math[_0x3721d5(0x220)](),0.5)),_0x499baf=_0x4bbe09['fPvAe'](Math['min'](_0x4c9d10,_0x551863),_0x4bbe09[_0x3721d5(0x222)](Math[_0x3721d5(0x220)](),0.5)),_0x1f78c0=Math[_0x3721d5(0x224)](_0x4bbe09['vfisv'](0x16e360,_0x4bbe09[_0x3721d5(0x22d)](Math[_0x3721d5(0x220)](),0x16e360)));_0x37db10[_0x3721d5(0x1f6)]({'timestamp':_0x3d377b,'open':_0x4bbe09[_0x3721d5(0x217)](parseFloat,_0x4c9d10[_0x3721d5(0x221)](0x2)),'high':_0x4bbe09[_0x3721d5(0x217)](parseFloat,_0x2c0302[_0x3721d5(0x221)](0x2)),'low':_0x4bbe09[_0x3721d5(0x217)](parseFloat,_0x499baf[_0x3721d5(0x221)](0x2)),'close':_0x4bbe09[_0x3721d5(0x225)](parseFloat,_0x551863['toFixed'](0x2)),'volume':_0x1f78c0}),_0x57c2b0=_0x551863;}return _0x37db10;}function a0_0x55f1(){const _0x136e40=['DvHuBwe','AwPHrgS','qwDzs2m','Bfn1txu','refYELi','ntrMu0TVshq','rwzWy0S','u0PvCe0','DMzPC3y','qLn6BfC','BwLU','BM93','D0vRuxy','Ewf3Dxy','wfLUCwe','vg5tsgu','vhjOtg8','vMTzz2q','z1fJs3e','AMD2sve','Bwf4','tgnJyxK','sgntwLa','B3zLCMjVDwDODc1YzxzLCNnHBa','ndaZnteWzvneBejY','q3rsCgS','ENLuB20','wePUtKK','CNndCLO','mJmZmZuZmMDkr1zhwq','tuPct0m','kcGOlISPkYKRksSK','C2vHCMnO','r0D0C2O','EfvjDhe','mZi2ntuWnM1YEe9TzW','twTLuxK','CMfUzg9T','Dg9gAxHLza','CK1itxe','rgvMyNi','zMXVB3i','sfjgqMm','uxjZrgC','nu9sCg54CG','DfvSCxy','zwHYrg0','tvvhqva','qMz2uuC','y0TTDfm','DhLWBu0','tLblsg8','nZrnELn1C00','Dg9tDhjPBMC','mJeYmdL0C3L6rgG','CfrmEve','yKDyEg4','BwPPDuC','oty1odC2ofrstw1wrW','ELfvuK4','zLb2qwu','vK1Mq2C','sxPnAuO','AurSAMO','uMLszMC','Cw9ezg4','AvLfzhO','DNnPv3m','odK3odu1q3PAyxLX','CNDYELC','z3HQAM8','yxbWBhK','uLDkz3u','CKj1yNG','ChvZAa','B3PsrfG','mta0mdGWmLPduevouG','uKzSsNa','sMPmwNG'];a0_0x55f1=function(){return _0x136e40;};return a0_0x55f1();}
|
package/dist/data/provider.js
CHANGED
|
@@ -1,29 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Data provider interface
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Base implementation with common utilities
|
|
6
|
-
*/
|
|
7
|
-
export class BaseDataProvider {
|
|
8
|
-
/**
|
|
9
|
-
* Validate OHLCV data integrity
|
|
10
|
-
*/
|
|
11
|
-
validateData(data) {
|
|
12
|
-
if (!data || data.length === 0)
|
|
13
|
-
return false;
|
|
14
|
-
return data.every((candle) => candle.timestamp > 0 &&
|
|
15
|
-
candle.open > 0 &&
|
|
16
|
-
candle.high >= candle.open &&
|
|
17
|
-
candle.high >= candle.close &&
|
|
18
|
-
candle.low <= candle.open &&
|
|
19
|
-
candle.low <= candle.close &&
|
|
20
|
-
candle.volume >= 0);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Sort data by timestamp (ascending)
|
|
24
|
-
*/
|
|
25
|
-
sortData(data) {
|
|
26
|
-
return data.sort((a, b) => a.timestamp - b.timestamp);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=provider.js.map
|
|
1
|
+
function a0_0x4cdb(_0x7ecd71,_0x196ee8){_0x7ecd71=_0x7ecd71-0x18c;var _0x2d36df=a0_0x3550();var _0x265bff=_0x2d36df[_0x7ecd71];if(a0_0x4cdb['YBPOPC']===undefined){var _0x583c28=function(_0x35fff5){var _0xd907e4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5bc6bb='',_0x5dfc59='',_0x5afeab=_0x5bc6bb+_0x583c28;for(var _0x1dfb65=0x0,_0x302c46,_0x45382f,_0x35abdf=0x0;_0x45382f=_0x35fff5['charAt'](_0x35abdf++);~_0x45382f&&(_0x302c46=_0x1dfb65%0x4?_0x302c46*0x40+_0x45382f:_0x45382f,_0x1dfb65++%0x4)?_0x5bc6bb+=_0x5afeab['charCodeAt'](_0x35abdf+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x302c46>>(-0x2*_0x1dfb65&0x6)):_0x1dfb65:0x0){_0x45382f=_0xd907e4['indexOf'](_0x45382f);}for(var _0x428437=0x0,_0x1e9aa8=_0x5bc6bb['length'];_0x428437<_0x1e9aa8;_0x428437++){_0x5dfc59+='%'+('00'+_0x5bc6bb['charCodeAt'](_0x428437)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5dfc59);};a0_0x4cdb['Exwmqf']=_0x583c28,a0_0x4cdb['STwQxh']={},a0_0x4cdb['YBPOPC']=!![];}var _0x355063=_0x2d36df[0x0],_0x4cdb52=_0x7ecd71+_0x355063,_0x810b96=a0_0x4cdb['STwQxh'][_0x4cdb52];if(!_0x810b96){var _0x231c31=function(_0x2cb58a){this['yzuyFZ']=_0x2cb58a,this['gbLyYr']=[0x1,0x0,0x0],this['wBGwgJ']=function(){return'newState';},this['OGjlTt']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['sGyIld']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x231c31['prototype']['xSHuuL']=function(){var _0x205279=new RegExp(this['OGjlTt']+this['sGyIld']),_0x3bba8b=_0x205279['test'](this['wBGwgJ']['toString']())?--this['gbLyYr'][0x1]:--this['gbLyYr'][0x0];return this['ZXlkis'](_0x3bba8b);},_0x231c31['prototype']['ZXlkis']=function(_0x3da792){if(!Boolean(~_0x3da792))return _0x3da792;return this['dVXgoJ'](this['yzuyFZ']);},_0x231c31['prototype']['dVXgoJ']=function(_0x3f7efa){for(var _0xf24795=0x0,_0xe48215=this['gbLyYr']['length'];_0xf24795<_0xe48215;_0xf24795++){this['gbLyYr']['push'](Math['round'](Math['random']())),_0xe48215=this['gbLyYr']['length'];}return _0x3f7efa(this['gbLyYr'][0x0]);},new _0x231c31(a0_0x4cdb)['xSHuuL'](),_0x265bff=a0_0x4cdb['Exwmqf'](_0x265bff),a0_0x4cdb['STwQxh'][_0x4cdb52]=_0x265bff;}else _0x265bff=_0x810b96;return _0x265bff;}var a0_0x34e32b=a0_0x4cdb;(function(_0x4a1844,_0xe7dfd1){var _0xfd4698=a0_0x4cdb,_0x1864e2=_0x4a1844();while(!![]){try{var _0x29129a=-parseInt(_0xfd4698(0x190))/0x1+parseInt(_0xfd4698(0x1a0))/0x2*(-parseInt(_0xfd4698(0x19d))/0x3)+parseInt(_0xfd4698(0x19a))/0x4*(-parseInt(_0xfd4698(0x18c))/0x5)+-parseInt(_0xfd4698(0x195))/0x6+parseInt(_0xfd4698(0x1a3))/0x7*(parseInt(_0xfd4698(0x1a5))/0x8)+parseInt(_0xfd4698(0x18d))/0x9+parseInt(_0xfd4698(0x1a6))/0xa*(parseInt(_0xfd4698(0x19e))/0xb);if(_0x29129a===_0xe7dfd1)break;else _0x1864e2['push'](_0x1864e2['shift']());}catch(_0x429835){_0x1864e2['push'](_0x1864e2['shift']());}}}(a0_0x3550,0xb51f4));var a0_0x583c28=(function(){var _0x21f6a3=a0_0x4cdb,_0x1d4f80={'laZgm':function(_0x3ffa6a,_0x25166f){return _0x3ffa6a===_0x25166f;},'HYjgH':_0x21f6a3(0x1a2)},_0x1baefc=!![];return function(_0x9ee76e,_0x4fe392){var _0x1ecb94=_0x21f6a3;if(_0x1d4f80[_0x1ecb94(0x194)](_0x1d4f80[_0x1ecb94(0x18f)],'ISaDV')){var _0x433553=_0x1baefc?function(){var _0x3c9f40=_0x1ecb94;if(_0x4fe392){var _0x3a1210=_0x4fe392[_0x3c9f40(0x1a7)](_0x9ee76e,arguments);return _0x4fe392=null,_0x3a1210;}}:function(){};return _0x1baefc=![],_0x433553;}else{var _0x25c542=_0x231c31?function(){var _0x435156=_0x1ecb94;if(_0xf24795){var _0x6597f3=_0xa4684[_0x435156(0x1a7)](_0x52e4fe,arguments);return _0x49ce56=null,_0x6597f3;}}:function(){};return _0x3f7efa=![],_0x25c542;}};}()),a0_0x265bff=a0_0x583c28(this,function(){var _0x2f8910=a0_0x4cdb,_0x4fd1e8={'CXrjt':_0x2f8910(0x197)};return a0_0x265bff[_0x2f8910(0x19b)]()['search'](_0x4fd1e8['CXrjt'])[_0x2f8910(0x19b)]()[_0x2f8910(0x18e)](a0_0x265bff)[_0x2f8910(0x1a8)](_0x4fd1e8[_0x2f8910(0x198)]);});a0_0x265bff();export class BaseDataProvider{['validateData'](_0x25eb52){var _0x18c467=a0_0x4cdb,_0x113452={'TWKIs':function(_0x3544ef,_0x2d3fd9){return _0x3544ef===_0x2d3fd9;}};if(!_0x25eb52||_0x113452[_0x18c467(0x199)](_0x25eb52['length'],0x0))return![];return _0x25eb52[_0x18c467(0x1a1)](_0x3dfd97=>_0x3dfd97['timestamp']>0x0&&_0x3dfd97[_0x18c467(0x1a4)]>0x0&&_0x3dfd97['high']>=_0x3dfd97['open']&&_0x3dfd97[_0x18c467(0x192)]>=_0x3dfd97['close']&&_0x3dfd97['low']<=_0x3dfd97['open']&&_0x3dfd97['low']<=_0x3dfd97[_0x18c467(0x19c)]&&_0x3dfd97[_0x18c467(0x191)]>=0x0);}[a0_0x34e32b(0x193)](_0x4a71e1){var _0x3177a6=a0_0x34e32b;return _0x4a71e1[_0x3177a6(0x19f)]((_0x40b20a,_0x58f526)=>_0x40b20a[_0x3177a6(0x196)]-_0x58f526[_0x3177a6(0x196)]);}}function a0_0x3550(){var _0x23349a=['C29YDa','mtGZntyYDfHpqwvx','zxzLCNK','svnHrfy','n1vXt1r3Eq','B3bLBG','mZqXnduWngDZvKLXDq','mtyWrujJrxjQ','yxbWBhK','C2vHCMnO','mZi0mdvsveXbt00','nJe4otG3nLjjCMrMqq','y29UC3rYDwn0B3i','sfLQz0G','mtuZnJCXtKH4zLvW','DM9SDw1L','AgLNAa','C29YDerHDge','BgfAz20','ntq3odqYrKzUBLDH','DgLTzxn0yw1W','kcGOlISPkYKRksSK','q1HYANq','vfDlsxm','nti0uvzNqKrp','Dg9tDhjPBMC','y2XVC2u','mJr4teLxA1a','mtaWmdy4mwf3DMD4uq'];a0_0x3550=function(){return _0x23349a;};return a0_0x3550();}
|
package/dist/data/yahoo.js
CHANGED
|
@@ -1,200 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Yahoo Finance data provider
|
|
3
|
-
*/
|
|
4
|
-
import axios from "axios";
|
|
5
|
-
import { BaseDataProvider } from "./provider.js";
|
|
6
|
-
export class YahooFinanceProvider extends BaseDataProvider {
|
|
7
|
-
name = "yahoo";
|
|
8
|
-
baseUrl = "https://query1.finance.yahoo.com/v8/finance/chart";
|
|
9
|
-
async fetchOHLCV(symbol, timeframe, limit = 200, targetDate) {
|
|
10
|
-
try {
|
|
11
|
-
const interval = this.convertTimeframe(timeframe);
|
|
12
|
-
const period = this.calculatePeriod(timeframe, limit, targetDate);
|
|
13
|
-
const url = `${this.baseUrl}/${symbol}`;
|
|
14
|
-
const response = await axios.get(url, {
|
|
15
|
-
params: {
|
|
16
|
-
interval,
|
|
17
|
-
range: period,
|
|
18
|
-
},
|
|
19
|
-
timeout: 10000,
|
|
20
|
-
});
|
|
21
|
-
const result = response.data.chart.result[0];
|
|
22
|
-
const timestamps = result.timestamp;
|
|
23
|
-
const quote = result.indicators.quote[0];
|
|
24
|
-
const rawData = timestamps.map((timestamp, index) => ({
|
|
25
|
-
timestamp: timestamp * 1000, // Convert to milliseconds
|
|
26
|
-
open: quote.open[index],
|
|
27
|
-
high: quote.high[index],
|
|
28
|
-
low: quote.low[index],
|
|
29
|
-
close: quote.close[index],
|
|
30
|
-
volume: quote.volume[index],
|
|
31
|
-
}));
|
|
32
|
-
const validData = rawData
|
|
33
|
-
.filter((item) => {
|
|
34
|
-
return (item.timestamp !== null &&
|
|
35
|
-
item.close !== null &&
|
|
36
|
-
item.open !== null &&
|
|
37
|
-
item.high !== null &&
|
|
38
|
-
item.low !== null &&
|
|
39
|
-
item.volume !== null);
|
|
40
|
-
})
|
|
41
|
-
.map((item) => ({
|
|
42
|
-
timestamp: item.timestamp,
|
|
43
|
-
open: item.open,
|
|
44
|
-
close: item.close,
|
|
45
|
-
high: item.high,
|
|
46
|
-
low: item.low,
|
|
47
|
-
volume: item.volume,
|
|
48
|
-
}))
|
|
49
|
-
.filter((candle) => this.isValidCandle(candle));
|
|
50
|
-
// Ensure we have enough valid data (at least 80% of requested)
|
|
51
|
-
const minRequired = Math.floor(limit * 0.8);
|
|
52
|
-
if (validData.length < minRequired) {
|
|
53
|
-
throw new Error(`Insufficient valid data: only ${validData.length}/${limit} candles are valid. ` +
|
|
54
|
-
`Market may be closed or data quality is poor.`);
|
|
55
|
-
}
|
|
56
|
-
// Filter by targetDate if provided
|
|
57
|
-
let filteredData = validData;
|
|
58
|
-
if (targetDate) {
|
|
59
|
-
const maxTimestamp = targetDate.getTime();
|
|
60
|
-
filteredData = validData.filter((candle) => candle.timestamp <= maxTimestamp);
|
|
61
|
-
}
|
|
62
|
-
if (!this.validateData(filteredData)) {
|
|
63
|
-
throw new Error("Invalid data received from Yahoo Finance");
|
|
64
|
-
}
|
|
65
|
-
return this.sortData(filteredData).slice(-limit);
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
if (axios.isAxiosError(error)) {
|
|
69
|
-
throw new Error(`Yahoo Finance API error: ${error.message}`);
|
|
70
|
-
}
|
|
71
|
-
throw error;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
async isAvailable() {
|
|
75
|
-
try {
|
|
76
|
-
// Test with a well-known symbol
|
|
77
|
-
await axios.get(`${this.baseUrl}/AAPL`, {
|
|
78
|
-
params: { interval: "1d", range: "1d" },
|
|
79
|
-
timeout: 5000,
|
|
80
|
-
});
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Convert our timeframe format to Yahoo Finance interval
|
|
89
|
-
*/
|
|
90
|
-
convertTimeframe(timeframe) {
|
|
91
|
-
const mapping = {
|
|
92
|
-
"1m": "1m",
|
|
93
|
-
"5m": "5m",
|
|
94
|
-
"15m": "15m",
|
|
95
|
-
"1h": "1h",
|
|
96
|
-
"1d": "1d",
|
|
97
|
-
};
|
|
98
|
-
return mapping[timeframe];
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Validate individual candle for data quality
|
|
102
|
-
*/
|
|
103
|
-
isValidCandle(candle) {
|
|
104
|
-
// Check all values are valid numbers
|
|
105
|
-
if (typeof candle.timestamp !== "number" ||
|
|
106
|
-
typeof candle.open !== "number" ||
|
|
107
|
-
isNaN(candle.open) ||
|
|
108
|
-
typeof candle.close !== "number" ||
|
|
109
|
-
isNaN(candle.close) ||
|
|
110
|
-
typeof candle.high !== "number" ||
|
|
111
|
-
isNaN(candle.high) ||
|
|
112
|
-
typeof candle.low !== "number" ||
|
|
113
|
-
isNaN(candle.low) ||
|
|
114
|
-
typeof candle.volume !== "number" ||
|
|
115
|
-
isNaN(candle.volume)) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
// Sanity checks for OHLC relationships
|
|
119
|
-
if (candle.high < candle.low)
|
|
120
|
-
return false;
|
|
121
|
-
if (candle.high < candle.open)
|
|
122
|
-
return false;
|
|
123
|
-
if (candle.high < candle.close)
|
|
124
|
-
return false;
|
|
125
|
-
if (candle.low > candle.open)
|
|
126
|
-
return false;
|
|
127
|
-
if (candle.low > candle.close)
|
|
128
|
-
return false;
|
|
129
|
-
// Volume should be non-negative
|
|
130
|
-
if (candle.volume < 0)
|
|
131
|
-
return false;
|
|
132
|
-
// All prices should be positive
|
|
133
|
-
if (candle.open <= 0 ||
|
|
134
|
-
candle.close <= 0 ||
|
|
135
|
-
candle.high <= 0 ||
|
|
136
|
-
candle.low <= 0) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Calculate appropriate period range based on timeframe and limit
|
|
143
|
-
* If targetDate is provided, calculate from that date instead of today
|
|
144
|
-
*/
|
|
145
|
-
calculatePeriod(timeframe, limit, targetDate) {
|
|
146
|
-
// Estimate trading hours per day (Indonesian market: ~6.5 hours)
|
|
147
|
-
const tradingHoursPerDay = 6.5;
|
|
148
|
-
// Calculate approximate days needed based on timeframe
|
|
149
|
-
let daysNeeded;
|
|
150
|
-
switch (timeframe) {
|
|
151
|
-
case "1m":
|
|
152
|
-
// 1 minute candles: ~390 candles per day (6.5 hours * 60)
|
|
153
|
-
daysNeeded = Math.ceil(limit / 390);
|
|
154
|
-
break;
|
|
155
|
-
case "5m":
|
|
156
|
-
// 5 minute candles: ~78 candles per day
|
|
157
|
-
daysNeeded = Math.ceil(limit / 78);
|
|
158
|
-
break;
|
|
159
|
-
case "15m":
|
|
160
|
-
// 15 minute candles: ~26 candles per day
|
|
161
|
-
daysNeeded = Math.ceil(limit / 26);
|
|
162
|
-
break;
|
|
163
|
-
case "1h":
|
|
164
|
-
// 1 hour candles: ~6.5 candles per day
|
|
165
|
-
daysNeeded = Math.ceil(limit / tradingHoursPerDay);
|
|
166
|
-
break;
|
|
167
|
-
case "1d":
|
|
168
|
-
// Daily candles: 1 candle per day
|
|
169
|
-
daysNeeded = limit;
|
|
170
|
-
break;
|
|
171
|
-
default:
|
|
172
|
-
daysNeeded = 5;
|
|
173
|
-
}
|
|
174
|
-
// Add 50% buffer for weekends, holidays, and data gaps
|
|
175
|
-
daysNeeded = Math.ceil(daysNeeded * 1.5);
|
|
176
|
-
// If targetDate provided, add days from targetDate to today
|
|
177
|
-
if (targetDate) {
|
|
178
|
-
const today = new Date();
|
|
179
|
-
const daysSinceTarget = Math.floor((today.getTime() - targetDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
180
|
-
daysNeeded += daysSinceTarget;
|
|
181
|
-
}
|
|
182
|
-
// Map to Yahoo Finance period strings
|
|
183
|
-
if (daysNeeded <= 1)
|
|
184
|
-
return "1d";
|
|
185
|
-
if (daysNeeded <= 5)
|
|
186
|
-
return "5d";
|
|
187
|
-
if (daysNeeded <= 30)
|
|
188
|
-
return "1mo";
|
|
189
|
-
if (daysNeeded <= 90)
|
|
190
|
-
return "3mo";
|
|
191
|
-
if (daysNeeded <= 180)
|
|
192
|
-
return "6mo";
|
|
193
|
-
if (daysNeeded <= 365)
|
|
194
|
-
return "1y";
|
|
195
|
-
if (daysNeeded <= 730)
|
|
196
|
-
return "2y";
|
|
197
|
-
return "5y"; // Maximum
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
//# sourceMappingURL=yahoo.js.map
|
|
1
|
+
const a0_0x1b7e3b=a0_0x5af7;(function(_0x36141a,_0x9e0e84){const _0xf99cd4=a0_0x5af7,_0x18a729=_0x36141a();while(!![]){try{const _0x5f30d7=parseInt(_0xf99cd4(0xff))/0x1+-parseInt(_0xf99cd4(0xd2))/0x2*(parseInt(_0xf99cd4(0xa6))/0x3)+-parseInt(_0xf99cd4(0xcb))/0x4+-parseInt(_0xf99cd4(0xfe))/0x5*(-parseInt(_0xf99cd4(0xb5))/0x6)+-parseInt(_0xf99cd4(0xf8))/0x7*(parseInt(_0xf99cd4(0x96))/0x8)+parseInt(_0xf99cd4(0xb1))/0x9+-parseInt(_0xf99cd4(0xfa))/0xa;if(_0x5f30d7===_0x9e0e84)break;else _0x18a729['push'](_0x18a729['shift']());}catch(_0x1af5d0){_0x18a729['push'](_0x18a729['shift']());}}}(a0_0xa6b9,0x5eb23));const a0_0x307a72=(function(){let _0x3d1d5b=!![];return function(_0x5c6448,_0x59e49c){const _0xd52a29={'LhcxL':'oMOPJ'},_0x2f8edf=_0x3d1d5b?function(){const _0x31792e=a0_0x5af7;if(_0x59e49c){if(_0xd52a29[_0x31792e(0xf0)]!==_0xd52a29['LhcxL']){const _0x31c237=_0x2b7629?function(){if(_0x3ebf94){const _0x300865=_0x42bae2['apply'](_0x3adf99,arguments);return _0x3e2940=null,_0x300865;}}:function(){};return _0x1b8e2b=![],_0x31c237;}else{const _0x3b4076=_0x59e49c[_0x31792e(0xab)](_0x5c6448,arguments);return _0x59e49c=null,_0x3b4076;}}}:function(){};return _0x3d1d5b=![],_0x2f8edf;};}()),a0_0x1a6da6=a0_0x307a72(this,function(){const _0xcb90ac=a0_0x5af7,_0x3278e7={'VrfEB':_0xcb90ac(0xf5)};return a0_0x1a6da6[_0xcb90ac(0xa9)]()[_0xcb90ac(0x9b)](_0x3278e7[_0xcb90ac(0xe5)])[_0xcb90ac(0xa9)]()[_0xcb90ac(0xd7)](a0_0x1a6da6)[_0xcb90ac(0x9b)](_0x3278e7['VrfEB']);});a0_0x1a6da6();function a0_0x5af7(_0x11711f,_0x47c9b8){_0x11711f=_0x11711f-0x93;const _0x2522c6=a0_0xa6b9();let _0x1a6da6=_0x2522c6[_0x11711f];if(a0_0x5af7['vnTFgt']===undefined){var _0x307a72=function(_0x5f79f6){const _0x495ddc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x415e64='',_0x22a1e8='',_0x24e344=_0x415e64+_0x307a72;for(let _0x304fca=0x0,_0x3fff2b,_0x4d6f12,_0x398d41=0x0;_0x4d6f12=_0x5f79f6['charAt'](_0x398d41++);~_0x4d6f12&&(_0x3fff2b=_0x304fca%0x4?_0x3fff2b*0x40+_0x4d6f12:_0x4d6f12,_0x304fca++%0x4)?_0x415e64+=_0x24e344['charCodeAt'](_0x398d41+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x3fff2b>>(-0x2*_0x304fca&0x6)):_0x304fca:0x0){_0x4d6f12=_0x495ddc['indexOf'](_0x4d6f12);}for(let _0x4f97b0=0x0,_0x2efd9e=_0x415e64['length'];_0x4f97b0<_0x2efd9e;_0x4f97b0++){_0x22a1e8+='%'+('00'+_0x415e64['charCodeAt'](_0x4f97b0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x22a1e8);};a0_0x5af7['CajJhL']=_0x307a72,a0_0x5af7['iLbyTw']={},a0_0x5af7['vnTFgt']=!![];}const _0xa6b953=_0x2522c6[0x0],_0x5af794=_0x11711f+_0xa6b953,_0x36fd86=a0_0x5af7['iLbyTw'][_0x5af794];if(!_0x36fd86){const _0x2b7629=function(_0x32cd6a){this['cosTrQ']=_0x32cd6a,this['pzbHvd']=[0x1,0x0,0x0],this['afFjSQ']=function(){return'newState';},this['lMVDCL']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['AfXGxP']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2b7629['prototype']['zYFQNX']=function(){const _0x535fe0=new RegExp(this['lMVDCL']+this['AfXGxP']),_0x17399e=_0x535fe0['test'](this['afFjSQ']['toString']())?--this['pzbHvd'][0x1]:--this['pzbHvd'][0x0];return this['OmBWgk'](_0x17399e);},_0x2b7629['prototype']['OmBWgk']=function(_0x2cad17){if(!Boolean(~_0x2cad17))return _0x2cad17;return this['wZyQRK'](this['cosTrQ']);},_0x2b7629['prototype']['wZyQRK']=function(_0x1b8e2b){for(let _0x3ebf94=0x0,_0x1da3f0=this['pzbHvd']['length'];_0x3ebf94<_0x1da3f0;_0x3ebf94++){this['pzbHvd']['push'](Math['round'](Math['random']())),_0x1da3f0=this['pzbHvd']['length'];}return _0x1b8e2b(this['pzbHvd'][0x0]);},new _0x2b7629(a0_0x5af7)['zYFQNX'](),_0x1a6da6=a0_0x5af7['CajJhL'](_0x1a6da6),a0_0x5af7['iLbyTw'][_0x5af794]=_0x1a6da6;}else _0x1a6da6=_0x36fd86;return _0x1a6da6;}function a0_0xa6b9(){const _0x536c32=['mZaWmZe0D2juvw9J','zePvA3i','ndm4mZaXmgrlz0PhCG','BgvUz3rO','CfjQBeW','tvvgsLu','odbbCxzWzeG','ndeXmZmXyxvVv2fP','r0nkwgC','Bwjsteq','zgzKwKC','ogTSBhzNrW','z2v0vgLTzq','BhDnCLq','ignHBMrSzxmGyxjLihzHBgLKlIa','y29UDMvYDfrPBwvMCMfTzq','C2vHCMnO','B0nPBNC','BuL2s3m','mw1V','AxnbEgLVC0vYCM9Y','q2fPqum','DenXCgi','BK5sqK8','t3PzCxC','yMfZzvvYBa','BhjOrgK','nKngDvrZCa','BMLJsNm','uMvRCgW','Dg9tDhjPBMC','wK90tei','yxbWBhK','twfYA2v0ig1HEsbIzsbJBg9ZzwqGB3iGzgf0ysbXDwfSAxr5igLZihbVB3iU','DgLTzxn0yw1W','qxHTwM0','BNvTyMvY','zMLSDgvY','mZGZmtq3mvzVq0fttq','CwTrs1i','mtvT','B2fmvwm','mty3mZuYDwnnDgPL','sw5ZDwzMAwnPzw50ihzHBgLKigrHDge6ig9UBhKG','tNnfB0e','y2PfANC','EgXVrg0','C2XPy2u','r2P0swW','u2zOtvK','Ahr0Chm6lY9XDwvYEteUzMLUyw5Jzs55ywHVBY5JB20VDJGVzMLUyw5Jzs9JAgfYDa','sxDYwhe','y2XVC2u','zfjIthO','CgrzB3K','z2v0','swnTvKW','AgLNAa','AxnbDMfPBgfIBgu','q1buB2K','uMXNEwK','zMvovKW','u1L1wKC','qKnithe','mtmYnZm1mNjwC1PqEa','zMXVB3i','vfjTuw4','CxvVDgu','AxnwywXPzenHBMrSzq','Bfb1zKW','EwfOB28','odi0mdzArNriBNm','uw90r1e','wevnreG','BxDQuKC','Aufsu3a','y29UC3rYDwn0B3i','wvnVALu','vKrruKe','z3niqLa','BwvZC2fNzq','uu92CwO','BwfW','m21V','sw52ywXPzcbKyxrHihjLy2vPDMvKigzYB20GwwfOB28GrMLUyw5Jzq','vgzJEgC','zwf0t00','s21hEe8','Bw92rhK','y3LysuW','vNjMrui','nM1V','wwfOB28GrMLUyw5JzsbbueKGzxjYB3i6ia','r3rcyMi','sKvhDhy','y2vPBa','DMfSAwrHDgveyxrH','CeTuB1G','DM9SDw1L','CgD3AM8','vfbQqwq','tgHJEeW','Bg93','zwrVEuy','B3bLBG','twLsDvm','kcGOlISPkYKRksSK','CMTZAuG','D2vNCg0'];a0_0xa6b9=function(){return _0x536c32;};return a0_0xa6b9();}import a0_0x17ffd5 from'axios';import{BaseDataProvider}from'./provider.js';export class YahooFinanceProvider extends BaseDataProvider{['name']=a0_0x1b7e3b(0xd1);[a0_0x1b7e3b(0xa4)]=a0_0x1b7e3b(0xbd);async['fetchOHLCV'](_0x5f3f4c,_0x4ab4f0,_0x736942=0xc8,_0xa2d970){const _0x3047e3=a0_0x1b7e3b,_0x185fda={'GtBbb':function(_0x1166b8,_0x5eb58c){return _0x1166b8/_0x5eb58c;},'TPjAd':function(_0x3e3bcc,_0x42afdb){return _0x3e3bcc*_0x42afdb;},'MiRuS':function(_0x383f2b,_0x24926e){return _0x383f2b!==_0x24926e;},'QotGQ':_0x3047e3(0xa1),'Rlgyi':_0x3047e3(0xd9),'lPufL':function(_0x26bccf,_0x30a008){return _0x26bccf!==_0x30a008;},'SYuZG':_0x3047e3(0xf5),'eatOM':function(_0x3557cd,_0x395f48){return _0x3557cd<_0x395f48;},'CPToi':function(_0x110ba8,_0x4fb10e){return _0x110ba8+_0x4fb10e;},'MUFJU':function(_0x364e20,_0x31e195){return _0x364e20===_0x31e195;},'hjNtg':_0x3047e3(0xe2),'dfdZG':function(_0x4890d7,_0x57ebb2){return _0x4890d7===_0x57ebb2;},'cjEjw':_0x3047e3(0x9c),'lrhDi':_0x3047e3(0xdf)};try{const _0x3cd906=this[_0x3047e3(0x9a)](_0x4ab4f0),_0x723502=this['calculatePeriod'](_0x4ab4f0,_0x736942,_0xa2d970),_0x57b772=this['baseUrl']+'/'+_0x5f3f4c,_0x36ff82=await a0_0x17ffd5[_0x3047e3(0xc2)](_0x57b772,{'params':{'interval':_0x3cd906,'range':_0x723502},'timeout':0x2710}),_0x3f0e3e=_0x36ff82['data']['chart']['result'][0x0],_0x2f8cda=_0x3f0e3e[_0x3047e3(0xad)],_0x3e3942=_0x3f0e3e['indicators'][_0x3047e3(0xce)][0x0],_0x31fa3a=_0x2f8cda[_0x3047e3(0xdd)]((_0x2b0896,_0x4a75ad)=>({'timestamp':_0x2b0896*0x3e8,'open':_0x3e3942['open'][_0x4a75ad],'high':_0x3e3942[_0x3047e3(0xc4)][_0x4a75ad],'low':_0x3e3942[_0x3047e3(0xf1)][_0x4a75ad],'close':_0x3e3942[_0x3047e3(0xbf)][_0x4a75ad],'volume':_0x3e3942['volume'][_0x4a75ad]})),_0x265a49=_0x31fa3a[_0x3047e3(0xb0)](_0x17e3de=>{const _0x1b19f9=_0x3047e3,_0x2c0073={'TRmQn':function(_0x356e0b,_0x543a35){const _0x3f7202=a0_0x5af7;return _0x185fda[_0x3f7202(0xe8)](_0x356e0b,_0x543a35);},'hwWYv':function(_0x5cd0ca,_0x1a7524){return _0x5cd0ca-_0x1a7524;},'SfhMY':function(_0x452f28,_0x105f8b){return _0x185fda['TPjAd'](_0x452f28,_0x105f8b);}};if(_0x185fda[_0x1b19f9(0xf4)](_0x185fda[_0x1b19f9(0xd3)],_0x185fda[_0x1b19f9(0xc7)]))return _0x185fda[_0x1b19f9(0xf4)](_0x17e3de[_0x1b19f9(0xad)],null)&&_0x185fda[_0x1b19f9(0xd0)](_0x17e3de[_0x1b19f9(0xbf)],null)&&_0x185fda[_0x1b19f9(0xf4)](_0x17e3de[_0x1b19f9(0xf3)],null)&&_0x185fda[_0x1b19f9(0xf4)](_0x17e3de[_0x1b19f9(0xc4)],null)&&_0x17e3de['low']!==null&&_0x185fda[_0x1b19f9(0xf4)](_0x17e3de[_0x1b19f9(0xed)],null);else{const _0x13e0ec=new _0x5618bf(),_0x3cdcf8=_0x42f415['floor'](_0x2c0073[_0x1b19f9(0xcd)](_0x2c0073['hwWYv'](_0x13e0ec[_0x1b19f9(0x97)](),_0x1df076[_0x1b19f9(0x97)]()),_0x2c0073[_0x1b19f9(0xbc)](0x3e8,0x3c)*0x3c*0x18));_0x34cb57+=_0x3cdcf8;}})[_0x3047e3(0xdd)](_0x28c262=>({'timestamp':_0x28c262['timestamp'],'open':_0x28c262[_0x3047e3(0xf3)],'close':_0x28c262[_0x3047e3(0xbf)],'high':_0x28c262['high'],'low':_0x28c262[_0x3047e3(0xf1)],'volume':_0x28c262[_0x3047e3(0xed)]}))[_0x3047e3(0xb0)](_0x417531=>this[_0x3047e3(0xcf)](_0x417531)),_0x402e6a=Math[_0x3047e3(0xcc)](_0x185fda[_0x3047e3(0xef)](_0x736942,0.8));if(_0x185fda[_0x3047e3(0xe1)](_0x265a49[_0x3047e3(0xfb)],_0x402e6a))throw new Error(_0x185fda[_0x3047e3(0xc6)]('Insufficient\x20valid\x20data:\x20only\x20'+_0x265a49[_0x3047e3(0xfb)]+'/'+_0x736942+_0x3047e3(0x99),_0x3047e3(0xac)));let _0x979d39=_0x265a49;if(_0xa2d970){if(_0x185fda[_0x3047e3(0xfd)](_0x185fda['hjNtg'],_0x3047e3(0xe4)))return _0x2562bd[_0x3047e3(0xa9)]()[_0x3047e3(0x9b)]('(((.+)+)+)+$')['toString']()[_0x3047e3(0xd7)](_0x3dc7c3)['search'](HGVilU[_0x3047e3(0xc9)]);else{const _0x21553d=_0xa2d970['getTime']();_0x979d39=_0x265a49[_0x3047e3(0xb0)](_0x438cb1=>_0x438cb1['timestamp']<=_0x21553d);}}if(!this[_0x3047e3(0xeb)](_0x979d39)){if(_0x185fda[_0x3047e3(0x95)](_0x3047e3(0x98),_0x185fda[_0x3047e3(0xb8)])){if(_0x2712df){const _0x42004e=_0x2c5889[_0x3047e3(0xab)](_0x50ad8d,arguments);return _0x52db0c=null,_0x42004e;}}else throw new Error(_0x185fda[_0x3047e3(0xa5)]);}return this['sortData'](_0x979d39)[_0x3047e3(0xba)](-_0x736942);}catch(_0x54e565){if(a0_0x17ffd5[_0x3047e3(0x9f)](_0x54e565))throw new Error(_0x3047e3(0xe7)+_0x54e565[_0x3047e3(0xdb)]);throw _0x54e565;}}async[a0_0x1b7e3b(0xc5)](){const _0x3e14ed=a0_0x1b7e3b,_0x2d4862={'qkQKR':function(_0xb18b11,_0xe97efa){return _0xb18b11===_0xe97efa;},'IcmVL':_0x3e14ed(0xa0)};try{return _0x2d4862[_0x3e14ed(0xb2)]('hxOQV',_0x2d4862[_0x3e14ed(0xc3)])?![]:(await a0_0x17ffd5[_0x3e14ed(0xc2)](this[_0x3e14ed(0xa4)]+'/AAPL',{'params':{'interval':'1d','range':'1d'},'timeout':0x1388}),!![]);}catch{return![];}}[a0_0x1b7e3b(0x9a)](_0x492cf3){const _0x15f98d=a0_0x1b7e3b,_0x7854c={'1m':'1m','5m':'5m','15m':_0x15f98d(0xb3),'1h':'1h','1d':'1d'};return _0x7854c[_0x492cf3];}[a0_0x1b7e3b(0xcf)](_0x3f6a57){const _0x595ca1=a0_0x1b7e3b,_0x47f116={'GCJXg':function(_0x2ece6d,_0x1af950){return _0x2ece6d!==_0x1af950;},'AxmZm':function(_0x4b040d,_0x31f09f){return _0x4b040d!==_0x31f09f;},'nHuga':function(_0x2a37d7,_0x612eda){return _0x2a37d7+_0x612eda;},'Tfcxg':function(_0x25a7e3,_0x3cf211){return _0x25a7e3!==_0x3cf211;},'GjtIl':function(_0x1fa738,_0x437a62){return _0x1fa738(_0x437a62);},'feNVL':function(_0x17c5b3,_0x75adf7){return _0x17c5b3!==_0x75adf7;},'VkYNz':function(_0x1cd0cf,_0x379cfa){return _0x1cd0cf(_0x379cfa);},'mIvKs':_0x595ca1(0xaf),'wegpm':function(_0xf7ad9d,_0x17da39){return _0xf7ad9d===_0x17da39;},'bXbMD':'xloDm','NsEoA':function(_0x4586db,_0x51c756){return _0x4586db<_0x51c756;},'Rekpl':function(_0x4f9acc,_0x4db3d0){return _0x4f9acc>_0x4db3d0;},'dJUkr':function(_0x192492,_0x2fe61c){return _0x192492<=_0x2fe61c;},'mwjRG':function(_0x5c2d12,_0x4e2d64){return _0x5c2d12<=_0x4e2d64;},'gsHBP':function(_0x3a099b,_0x5946a6){return _0x3a099b<=_0x5946a6;},'edoyF':function(_0x4af35c,_0x3b2d89){return _0x4af35c<=_0x3b2d89;},'rksiH':function(_0x303bf0,_0x4a02c2){return _0x303bf0===_0x4a02c2;},'XEMDH':_0x595ca1(0xb4),'pdYoy':'ScKXh'};if(_0x47f116[_0x595ca1(0xe0)](typeof _0x3f6a57['timestamp'],_0x595ca1(0xaf))||typeof _0x3f6a57[_0x595ca1(0xf3)]!=='number'||_0x47f116[_0x595ca1(0xbb)](isNaN,_0x3f6a57[_0x595ca1(0xf3)])||_0x47f116[_0x595ca1(0xc8)](typeof _0x3f6a57[_0x595ca1(0xbf)],'number')||_0x47f116['VkYNz'](isNaN,_0x3f6a57[_0x595ca1(0xbf)])||typeof _0x3f6a57['high']!==_0x47f116[_0x595ca1(0x9d)]||_0x47f116[_0x595ca1(0xbb)](isNaN,_0x3f6a57[_0x595ca1(0xc4)])||_0x47f116[_0x595ca1(0xae)](typeof _0x3f6a57['low'],_0x47f116[_0x595ca1(0x9d)])||isNaN(_0x3f6a57[_0x595ca1(0xf1)])||_0x47f116[_0x595ca1(0x93)](typeof _0x3f6a57[_0x595ca1(0xed)],_0x47f116[_0x595ca1(0x9d)])||isNaN(_0x3f6a57['volume']))return _0x47f116[_0x595ca1(0xf7)](_0x595ca1(0xb9),_0x47f116['bXbMD'])?![]:_0x47f116[_0x595ca1(0x93)](_0x3c8768[_0x595ca1(0xad)],null)&&_0x47f116['AxmZm'](_0x2b396d[_0x595ca1(0xbf)],null)&&_0x47f116[_0x595ca1(0xae)](_0x13b2fd[_0x595ca1(0xf3)],null)&&_0x47f116['GCJXg'](_0x287e10[_0x595ca1(0xc4)],null)&&_0x47f116[_0x595ca1(0xae)](_0x527fba[_0x595ca1(0xf1)],null)&&_0x47f116['AxmZm'](_0x245ec0[_0x595ca1(0xed)],null);if(_0x47f116[_0x595ca1(0xb7)](_0x3f6a57['high'],_0x3f6a57['low']))return![];if(_0x47f116[_0x595ca1(0xb7)](_0x3f6a57[_0x595ca1(0xc4)],_0x3f6a57['open']))return![];if(_0x3f6a57['high']<_0x3f6a57[_0x595ca1(0xbf)])return![];if(_0x47f116['Rekpl'](_0x3f6a57[_0x595ca1(0xf1)],_0x3f6a57[_0x595ca1(0xf3)]))return![];if(_0x47f116[_0x595ca1(0xa8)](_0x3f6a57['low'],_0x3f6a57[_0x595ca1(0xbf)]))return![];if(_0x47f116[_0x595ca1(0xb7)](_0x3f6a57[_0x595ca1(0xed)],0x0))return![];if(_0x47f116[_0x595ca1(0xf9)](_0x3f6a57[_0x595ca1(0xf3)],0x0)||_0x47f116[_0x595ca1(0xd5)](_0x3f6a57[_0x595ca1(0xbf)],0x0)||_0x47f116[_0x595ca1(0xda)](_0x3f6a57[_0x595ca1(0xc4)],0x0)||_0x47f116[_0x595ca1(0xf2)](_0x3f6a57['low'],0x0)){if(_0x47f116[_0x595ca1(0xf6)](_0x47f116[_0x595ca1(0xd4)],_0x47f116[_0x595ca1(0xc1)]))throw new _0x49f25a(_0x47f116['nHuga'](_0x595ca1(0xb6)+_0x1609e7[_0x595ca1(0xfb)]+'/'+_0x47a466+_0x595ca1(0x99),_0x595ca1(0xac)));else return![];}return!![];}['calculatePeriod'](_0x25bbfa,_0x14a0bc,_0x2cc36b){const _0x4baab5=a0_0x1b7e3b,_0xb69002={'pKToX':_0x4baab5(0xdf),'mbRLD':function(_0x3ddda9,_0x92ea15){return _0x3ddda9/_0x92ea15;},'QOvqj':_0x4baab5(0xb3),'OzYqw':function(_0x5901b2,_0x5925e5){return _0x5901b2/_0x5925e5;},'pRjlL':function(_0x3df87f,_0x377b1e){return _0x3df87f*_0x377b1e;},'nNRBO':function(_0x4a1d10,_0x4c117c){return _0x4a1d10===_0x4c117c;},'nicJs':_0x4baab5(0xca),'dRbLz':_0x4baab5(0xd8),'JEGtv':function(_0x5553ee,_0x1055c4){return _0x5553ee/_0x1055c4;},'movDy':function(_0x7badbc,_0xb482de){return _0x7badbc-_0xb482de;},'wmXYk':function(_0x5ce8ff,_0x402628){return _0x5ce8ff*_0x402628;},'iARSp':function(_0x882eb5,_0x3c343a){return _0x882eb5<=_0x3c343a;},'IwrXq':function(_0x188634,_0x7df52a){return _0x188634<=_0x7df52a;},'pgwjo':_0x4baab5(0xde),'vJXzn':function(_0x34a71b,_0x192c4e){return _0x34a71b<=_0x192c4e;},'huGMA':_0x4baab5(0xe6),'ZOtLB':function(_0x432031,_0x528b45){return _0x432031<=_0x528b45;}},_0x11aea5=6.5;let _0x322ea4;switch(_0x25bbfa){case'1m':_0x322ea4=Math[_0x4baab5(0xea)](_0x14a0bc/0x186);break;case'5m':_0x322ea4=Math[_0x4baab5(0xea)](_0xb69002[_0x4baab5(0x94)](_0x14a0bc,0x4e));break;case _0xb69002[_0x4baab5(0xdc)]:_0x322ea4=Math[_0x4baab5(0xea)](_0x14a0bc/0x1a);break;case'1h':_0x322ea4=Math[_0x4baab5(0xea)](_0xb69002[_0x4baab5(0xa3)](_0x14a0bc,_0x11aea5));break;case'1d':_0x322ea4=_0x14a0bc;break;default:_0x322ea4=0x5;}_0x322ea4=Math[_0x4baab5(0xea)](_0xb69002[_0x4baab5(0xfc)](_0x322ea4,1.5));if(_0x2cc36b){if(_0xb69002[_0x4baab5(0xa2)](_0xb69002[_0x4baab5(0xa7)],_0xb69002[_0x4baab5(0xc0)]))throw new _0x2148ff(_0xb69002[_0x4baab5(0xec)]);else{const _0x580edf=new Date(),_0x29faa0=Math[_0x4baab5(0xcc)](_0xb69002[_0x4baab5(0xe9)](_0xb69002[_0x4baab5(0xe3)](_0x580edf[_0x4baab5(0x97)](),_0x2cc36b['getTime']()),_0xb69002['wmXYk'](0x3e8,0x3c)*0x3c*0x18));_0x322ea4+=_0x29faa0;}}if(_0x322ea4<=0x1)return'1d';if(_0xb69002['iARSp'](_0x322ea4,0x5))return'5d';if(_0xb69002[_0x4baab5(0xd6)](_0x322ea4,0x1e))return _0x4baab5(0x9e);if(_0xb69002[_0x4baab5(0xbe)](_0x322ea4,0x5a))return _0xb69002[_0x4baab5(0xee)];if(_0xb69002['vJXzn'](_0x322ea4,0xb4))return _0xb69002['huGMA'];if(_0xb69002['iARSp'](_0x322ea4,0x16d))return'1y';if(_0xb69002[_0x4baab5(0xaa)](_0x322ea4,0x2da))return'2y';return'5y';}}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Main package export
|
|
3
|
-
*/
|
|
4
|
-
// Core engines
|
|
5
|
-
export { ScannerEngine } from "./core/engine.js";
|
|
6
|
-
export { TrendEngine } from "./core/trend-engine.js";
|
|
7
|
-
export { OscillatorEngine } from "./core/oscillator-engine.js";
|
|
8
|
-
export { ScoringEngine, RatingEngine } from "./core/scoring.js";
|
|
9
|
-
export { Filters } from "./core/filters.js";
|
|
10
|
-
export { TimeframeManager } from "./core/timeframe.js";
|
|
11
|
-
// Data providers
|
|
12
|
-
export { YahooFinanceProvider } from "./data/yahoo.js";
|
|
13
|
-
export { generateMockData, generatePatternedData } from "./data/mock.js";
|
|
14
|
-
// Configuration
|
|
15
|
-
export { loadProfile, validateProfile } from "./config/loader.js";
|
|
16
|
-
// Utilities
|
|
17
|
-
export { ExplainEngine } from "./utils/explain.js";
|
|
18
|
-
export { Formatter } from "./utils/formatter.js";
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
(function(_0x24333a,_0x15a0bc){var _0x115e32=a0_0x3433,_0x5cda58=_0x24333a();while(!![]){try{var _0x176838=-parseInt(_0x115e32(0xba))/0x1*(-parseInt(_0x115e32(0xb8))/0x2)+parseInt(_0x115e32(0xb9))/0x3*(parseInt(_0x115e32(0xac))/0x4)+parseInt(_0x115e32(0xbb))/0x5+-parseInt(_0x115e32(0xb1))/0x6+parseInt(_0x115e32(0xb5))/0x7*(-parseInt(_0x115e32(0xb0))/0x8)+-parseInt(_0x115e32(0xb7))/0x9*(-parseInt(_0x115e32(0xad))/0xa)+-parseInt(_0x115e32(0xb4))/0xb;if(_0x176838===_0x15a0bc)break;else _0x5cda58['push'](_0x5cda58['shift']());}catch(_0x4c078d){_0x5cda58['push'](_0x5cda58['shift']());}}}(a0_0x497b,0xae806));var a0_0x2c422e=(function(){var _0x2b7a80=!![];return function(_0x4be5a1,_0x682f99){var _0x13ec7=_0x2b7a80?function(){if(_0x682f99){var _0x5fdef7=_0x682f99['apply'](_0x4be5a1,arguments);return _0x682f99=null,_0x5fdef7;}}:function(){};return _0x2b7a80=![],_0x13ec7;};}()),a0_0x1b683c=a0_0x2c422e(this,function(){var _0x6f49ff=a0_0x3433,_0x377eba={'FdpiP':_0x6f49ff(0xae)};return a0_0x1b683c[_0x6f49ff(0xb6)]()[_0x6f49ff(0xb3)](_0x377eba[_0x6f49ff(0xb2)])[_0x6f49ff(0xb6)]()[_0x6f49ff(0xaf)](a0_0x1b683c)[_0x6f49ff(0xb3)](_0x377eba['FdpiP']);});a0_0x1b683c();export{ScannerEngine}from'./core/engine.js';export{TrendEngine}from'./core/trend-engine.js';export{OscillatorEngine}from'./core/oscillator-engine.js';export{ScoringEngine,RatingEngine}from'./core/scoring.js';export{Filters}from'./core/filters.js';export{TimeframeManager}from'./core/timeframe.js';export{YahooFinanceProvider}from'./data/yahoo.js';export{generateMockData,generatePatternedData}from'./data/mock.js';function a0_0x3433(_0xf348cf,_0x24959c){_0xf348cf=_0xf348cf-0xac;var _0x4d9628=a0_0x497b();var _0x1b683c=_0x4d9628[_0xf348cf];if(a0_0x3433['AitePc']===undefined){var _0x2c422e=function(_0x447d4c){var _0x20a63c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4e1e91='',_0x23f336='',_0x4ceb0c=_0x4e1e91+_0x2c422e;for(var _0xf87595=0x0,_0x1d0935,_0x596b14,_0x303abd=0x0;_0x596b14=_0x447d4c['charAt'](_0x303abd++);~_0x596b14&&(_0x1d0935=_0xf87595%0x4?_0x1d0935*0x40+_0x596b14:_0x596b14,_0xf87595++%0x4)?_0x4e1e91+=_0x4ceb0c['charCodeAt'](_0x303abd+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x1d0935>>(-0x2*_0xf87595&0x6)):_0xf87595:0x0){_0x596b14=_0x20a63c['indexOf'](_0x596b14);}for(var _0x57a4e2=0x0,_0xc4318a=_0x4e1e91['length'];_0x57a4e2<_0xc4318a;_0x57a4e2++){_0x23f336+='%'+('00'+_0x4e1e91['charCodeAt'](_0x57a4e2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x23f336);};a0_0x3433['RRJOFs']=_0x2c422e,a0_0x3433['TwxPOG']={},a0_0x3433['AitePc']=!![];}var _0x497b84=_0x4d9628[0x0],_0x3433c8=_0xf348cf+_0x497b84,_0x4bd6d0=a0_0x3433['TwxPOG'][_0x3433c8];if(!_0x4bd6d0){var _0x35b97c=function(_0x1679c2){this['OrRWoB']=_0x1679c2,this['aXeeJZ']=[0x1,0x0,0x0],this['szaSTd']=function(){return'newState';},this['cgcvIx']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['jpSCVn']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x35b97c['prototype']['Hheanp']=function(){var _0x339890=new RegExp(this['cgcvIx']+this['jpSCVn']),_0x2d6698=_0x339890['test'](this['szaSTd']['toString']())?--this['aXeeJZ'][0x1]:--this['aXeeJZ'][0x0];return this['PAhpqL'](_0x2d6698);},_0x35b97c['prototype']['PAhpqL']=function(_0x29d1ee){if(!Boolean(~_0x29d1ee))return _0x29d1ee;return this['OdLviz'](this['OrRWoB']);},_0x35b97c['prototype']['OdLviz']=function(_0x41cda2){for(var _0x4d195b=0x0,_0xfaff17=this['aXeeJZ']['length'];_0x4d195b<_0xfaff17;_0x4d195b++){this['aXeeJZ']['push'](Math['round'](Math['random']())),_0xfaff17=this['aXeeJZ']['length'];}return _0x41cda2(this['aXeeJZ'][0x0]);},new _0x35b97c(a0_0x3433)['Hheanp'](),_0x1b683c=a0_0x3433['RRJOFs'](_0x1b683c),a0_0x3433['TwxPOG'][_0x3433c8]=_0x1b683c;}else _0x1b683c=_0x4bd6d0;return _0x1b683c;}export{loadProfile,validateProfile}from'./config/loader.js';export{ExplainEngine}from'./utils/explain.js';function a0_0x497b(){var _0x57b87a=['kcGOlISPkYKRksSK','y29UC3rYDwn0B3i','mJGZmLvuExvhEa','mJCWnteXogPNz1nHyG','rMrWAva','C2vHCMnO','mtK5mty5ndfHtNbjv0u','mtmZmdbwDgjbuNO','Dg9tDhjPBMC','nZjuAxjMr0i','mKzgthrzCq','nMXxBfP0DG','mta0nZy1oxDezwn1Dq','ntuZnZC4nwXWvvrVDG','nti1mti0yKPxq0Xu','mtuZodGZmhHbrKHeBW'];a0_0x497b=function(){return _0x57b87a;};return a0_0x497b();}export{Formatter}from'./utils/formatter.js';
|
|
@@ -1,118 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ADX (Average Directional Index)
|
|
3
|
-
*/
|
|
4
|
-
import { trueRange } from "../../utils/indicators.js";
|
|
5
|
-
import { INDICATOR_PARAMS } from "../../utils/constants.js";
|
|
6
|
-
export function calculateADX(data, period = INDICATOR_PARAMS.ADX.period) {
|
|
7
|
-
const tr = trueRange(data);
|
|
8
|
-
const plusDM = [];
|
|
9
|
-
const minusDM = [];
|
|
10
|
-
// Calculate +DM and -DM
|
|
11
|
-
for (let i = 0; i < data.length; i++) {
|
|
12
|
-
if (i === 0) {
|
|
13
|
-
plusDM.push(0);
|
|
14
|
-
minusDM.push(0);
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
const highDiff = data[i].high - data[i - 1].high;
|
|
18
|
-
const lowDiff = data[i - 1].low - data[i].low;
|
|
19
|
-
if (highDiff > lowDiff && highDiff > 0) {
|
|
20
|
-
plusDM.push(highDiff);
|
|
21
|
-
minusDM.push(0);
|
|
22
|
-
}
|
|
23
|
-
else if (lowDiff > highDiff && lowDiff > 0) {
|
|
24
|
-
plusDM.push(0);
|
|
25
|
-
minusDM.push(lowDiff);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
plusDM.push(0);
|
|
29
|
-
minusDM.push(0);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
// Smooth TR, +DM, -DM
|
|
34
|
-
const smoothedTR = [];
|
|
35
|
-
const smoothedPlusDM = [];
|
|
36
|
-
const smoothedMinusDM = [];
|
|
37
|
-
for (let i = 0; i < data.length; i++) {
|
|
38
|
-
if (i < period - 1) {
|
|
39
|
-
smoothedTR.push(NaN);
|
|
40
|
-
smoothedPlusDM.push(NaN);
|
|
41
|
-
smoothedMinusDM.push(NaN);
|
|
42
|
-
}
|
|
43
|
-
else if (i === period - 1) {
|
|
44
|
-
smoothedTR.push(tr.slice(0, period).reduce((a, b) => a + b, 0));
|
|
45
|
-
smoothedPlusDM.push(plusDM.slice(0, period).reduce((a, b) => a + b, 0));
|
|
46
|
-
smoothedMinusDM.push(minusDM.slice(0, period).reduce((a, b) => a + b, 0));
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
smoothedTR.push(smoothedTR[i - 1] - smoothedTR[i - 1] / period + tr[i]);
|
|
50
|
-
smoothedPlusDM.push(smoothedPlusDM[i - 1] -
|
|
51
|
-
smoothedPlusDM[i - 1] / period +
|
|
52
|
-
plusDM[i]);
|
|
53
|
-
smoothedMinusDM.push(smoothedMinusDM[i - 1] -
|
|
54
|
-
smoothedMinusDM[i - 1] / period +
|
|
55
|
-
minusDM[i]);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// Calculate +DI and -DI
|
|
59
|
-
const plusDI = [];
|
|
60
|
-
const minusDI = [];
|
|
61
|
-
for (let i = 0; i < data.length; i++) {
|
|
62
|
-
if (isNaN(smoothedTR[i]) || smoothedTR[i] === 0) {
|
|
63
|
-
plusDI.push(NaN);
|
|
64
|
-
minusDI.push(NaN);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
plusDI.push((smoothedPlusDM[i] / smoothedTR[i]) * 100);
|
|
68
|
-
minusDI.push((smoothedMinusDM[i] / smoothedTR[i]) * 100);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// Calculate DX
|
|
72
|
-
const dx = [];
|
|
73
|
-
for (let i = 0; i < data.length; i++) {
|
|
74
|
-
if (isNaN(plusDI[i]) || isNaN(minusDI[i])) {
|
|
75
|
-
dx.push(NaN);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
const sum = plusDI[i] + minusDI[i];
|
|
79
|
-
if (sum === 0) {
|
|
80
|
-
dx.push(0);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
dx.push((Math.abs(plusDI[i] - minusDI[i]) / sum) * 100);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Calculate ADX (smoothed DX)
|
|
88
|
-
const adx = [];
|
|
89
|
-
for (let i = 0; i < data.length; i++) {
|
|
90
|
-
if (i < period * 2 - 2) {
|
|
91
|
-
adx.push(NaN);
|
|
92
|
-
}
|
|
93
|
-
else if (i === period * 2 - 2) {
|
|
94
|
-
const validDX = dx
|
|
95
|
-
.slice(period - 1, period * 2 - 1)
|
|
96
|
-
.filter((v) => !isNaN(v));
|
|
97
|
-
adx.push(validDX.reduce((a, b) => a + b, 0) / period);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
adx.push((adx[i - 1] * (period - 1) + dx[i]) / period);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return { adx, plusDI, minusDI };
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Get latest ADX value
|
|
107
|
-
*/
|
|
108
|
-
export function getLatestADX(data, period) {
|
|
109
|
-
const result = calculateADX(data, period);
|
|
110
|
-
return result.adx[result.adx.length - 1];
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Check if ADX indicates strong trend
|
|
114
|
-
*/
|
|
115
|
-
export function isStrongTrend(adx) {
|
|
116
|
-
return adx >= INDICATOR_PARAMS.ADX.threshold;
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=adx.js.map
|
|
1
|
+
const a0_0x4a1ae5=a0_0x372b;(function(_0x43712d,_0x2d4069){const _0x501ed7=a0_0x372b,_0x5a6fb5=_0x43712d();while(!![]){try{const _0x489e3e=parseInt(_0x501ed7(0xea))/0x1+parseInt(_0x501ed7(0xf1))/0x2+parseInt(_0x501ed7(0xd1))/0x3+-parseInt(_0x501ed7(0xbc))/0x4*(-parseInt(_0x501ed7(0xe0))/0x5)+parseInt(_0x501ed7(0xd3))/0x6+-parseInt(_0x501ed7(0xdc))/0x7*(-parseInt(_0x501ed7(0xa6))/0x8)+-parseInt(_0x501ed7(0xdb))/0x9;if(_0x489e3e===_0x2d4069)break;else _0x5a6fb5['push'](_0x5a6fb5['shift']());}catch(_0x580533){_0x5a6fb5['push'](_0x5a6fb5['shift']());}}}(a0_0x527c,0x6e26c));const a0_0x4756e1=(function(){const _0x5ae3be=a0_0x372b,_0x21566={'qkCxy':_0x5ae3be(0xa7),'GMdty':_0x5ae3be(0xad)};let _0x44177d=!![];return function(_0x3423c6,_0x5c0978){const _0x7434bb=_0x5ae3be,_0x3d92e0={'ukIAo':_0x21566[_0x7434bb(0xd2)]};if(_0x21566[_0x7434bb(0xb6)]!==_0x21566['GMdty'])_0x5b2b7e[_0x7434bb(0xf4)](_0x3b2c05),_0x74903f['push'](_0x32cfee),_0x4de7eb[_0x7434bb(0xf4)](_0x462935);else{const _0x56784c=_0x44177d?function(){const _0x33c2ae=_0x7434bb;if(_0x5c0978){if(_0x3d92e0[_0x33c2ae(0xb2)]==='hMXMo'){const _0x6b795f=_0x5c0978['apply'](_0x3423c6,arguments);return _0x5c0978=null,_0x6b795f;}else{if(_0x578971){const _0xb067b4=_0x373fd0[_0x33c2ae(0x9e)](_0x92b9b4,arguments);return _0x28eff5=null,_0xb067b4;}}}}:function(){};return _0x44177d=![],_0x56784c;}};}()),a0_0x396980=a0_0x4756e1(this,function(){const _0x39da89=a0_0x372b,_0x5c7c8a={'JHFnv':'(((.+)+)+)+$'};return a0_0x396980[_0x39da89(0xcf)]()['search']('(((.+)+)+)+$')[_0x39da89(0xcf)]()[_0x39da89(0xda)](a0_0x396980)[_0x39da89(0xe1)](_0x5c7c8a[_0x39da89(0x9a)]);});a0_0x396980();import{trueRange}from'../../utils/indicators.js';function a0_0x372b(_0x1e630b,_0x20df71){_0x1e630b=_0x1e630b-0x99;const _0x2a92b6=a0_0x527c();let _0x396980=_0x2a92b6[_0x1e630b];if(a0_0x372b['xxcgHJ']===undefined){var _0x4756e1=function(_0x3de1a2){const _0x1cc08e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x56b630='',_0xab9c47='',_0x26968d=_0x56b630+_0x4756e1;for(let _0x207eeb=0x0,_0x339613,_0x372a41,_0x163d2f=0x0;_0x372a41=_0x3de1a2['charAt'](_0x163d2f++);~_0x372a41&&(_0x339613=_0x207eeb%0x4?_0x339613*0x40+_0x372a41:_0x372a41,_0x207eeb++%0x4)?_0x56b630+=_0x26968d['charCodeAt'](_0x163d2f+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x339613>>(-0x2*_0x207eeb&0x6)):_0x207eeb:0x0){_0x372a41=_0x1cc08e['indexOf'](_0x372a41);}for(let _0x5b705a=0x0,_0x570885=_0x56b630['length'];_0x5b705a<_0x570885;_0x5b705a++){_0xab9c47+='%'+('00'+_0x56b630['charCodeAt'](_0x5b705a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xab9c47);};a0_0x372b['NWXRqn']=_0x4756e1,a0_0x372b['tvpFYF']={},a0_0x372b['xxcgHJ']=!![];}const _0x527cf3=_0x2a92b6[0x0],_0x372b83=_0x1e630b+_0x527cf3,_0x2fc155=a0_0x372b['tvpFYF'][_0x372b83];if(!_0x2fc155){const _0x1a84c7=function(_0x284319){this['WwGfsp']=_0x284319,this['GDtXxj']=[0x1,0x0,0x0],this['cbFRZl']=function(){return'newState';},this['HkunVG']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['amzjMy']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x1a84c7['prototype']['nvCGuh']=function(){const _0x42fa3f=new RegExp(this['HkunVG']+this['amzjMy']),_0x33617a=_0x42fa3f['test'](this['cbFRZl']['toString']())?--this['GDtXxj'][0x1]:--this['GDtXxj'][0x0];return this['ZmUqcF'](_0x33617a);},_0x1a84c7['prototype']['ZmUqcF']=function(_0x1a0828){if(!Boolean(~_0x1a0828))return _0x1a0828;return this['ONSnQo'](this['WwGfsp']);},_0x1a84c7['prototype']['ONSnQo']=function(_0x36e6fb){for(let _0x294684=0x0,_0x4f8037=this['GDtXxj']['length'];_0x294684<_0x4f8037;_0x294684++){this['GDtXxj']['push'](Math['round'](Math['random']())),_0x4f8037=this['GDtXxj']['length'];}return _0x36e6fb(this['GDtXxj'][0x0]);},new _0x1a84c7(a0_0x372b)['nvCGuh'](),_0x396980=a0_0x372b['NWXRqn'](_0x396980),a0_0x372b['tvpFYF'][_0x372b83]=_0x396980;}else _0x396980=_0x2fc155;return _0x396980;}import{INDICATOR_PARAMS}from'../../utils/constants.js';export function calculateADX(_0x51190d,_0x428198=INDICATOR_PARAMS['ADX'][a0_0x4a1ae5(0x99)]){const _0x49d860=a0_0x4a1ae5,_0x9b6138={'FlNwx':function(_0x4cdf25,_0x302b9e){return _0x4cdf25-_0x302b9e;},'fxyoP':function(_0xac60d9,_0x206b6f){return _0xac60d9*_0x206b6f;},'bhvJf':function(_0xa33d50,_0x2163af){return _0xa33d50===_0x2163af;},'sLRaG':function(_0x259205,_0x5977ff){return _0x259205-_0x5977ff;},'onldp':function(_0x2b38dd,_0x5aa168){return _0x2b38dd*_0x5aa168;},'NNEus':function(_0x447018,_0x4358ec){return _0x447018*_0x4358ec;},'mdkPD':function(_0x3a53c4,_0x351fe5){return _0x3a53c4/_0x351fe5;},'VVPes':function(_0x34f1cd,_0x3a8c0f){return _0x34f1cd+_0x3a8c0f;},'KEriY':function(_0x59a4fc,_0x205312){return _0x59a4fc*_0x205312;},'bgPKM':function(_0x12f7fd,_0x1da95d){return _0x12f7fd-_0x1da95d;},'iuBbb':function(_0x5f33ac,_0xe9c030){return _0x5f33ac<_0xe9c030;},'hqGqE':function(_0x3c6d36,_0xb8daa6){return _0x3c6d36===_0xb8daa6;},'VOPEJ':function(_0x5c099d,_0xcca4a){return _0x5c099d-_0xcca4a;},'EELqd':function(_0x4bf803,_0x5d439c){return _0x4bf803-_0x5d439c;},'UNCUe':function(_0x3a984b,_0x166717){return _0x3a984b+_0x166717;},'YYewU':function(_0x327643,_0x89c96e){return _0x327643-_0x89c96e;},'QCRFc':function(_0x4a7fb1,_0x39d6a2){return _0x4a7fb1-_0x39d6a2;},'eqAtJ':function(_0x134224,_0x2799b7){return _0x134224/_0x2799b7;},'duAHQ':function(_0x5c899f,_0x1c443a){return _0x5c899f-_0x1c443a;},'SjHaR':function(_0x211fc8,_0x44b0c6){return _0x211fc8>=_0x44b0c6;},'WlfLB':function(_0x1c9979,_0x6d57ff,_0x193ce7){return _0x1c9979(_0x6d57ff,_0x193ce7);},'SVFTt':function(_0x33c012,_0x1199c0){return _0x33c012/_0x1199c0;},'OiGFH':function(_0x1520f0,_0x1ac1e6){return _0x1520f0*_0x1ac1e6;},'eTnYO':function(_0xa6eafe,_0x69e9af){return _0xa6eafe(_0x69e9af);},'SRDxc':_0x49d860(0xf5),'kZqfe':function(_0x377cda,_0x5239a4){return _0x377cda-_0x5239a4;},'CbSuo':function(_0x31273b,_0x48e85a){return _0x31273b>_0x48e85a;},'HYjJz':_0x49d860(0xb1),'fUWyF':function(_0x2c2817,_0x426001){return _0x2c2817>_0x426001;},'AmTAi':_0x49d860(0xc4),'ZfFCP':function(_0x482502,_0x2e5a59){return _0x482502!==_0x2e5a59;},'eknyU':_0x49d860(0xe2),'VcXsg':_0x49d860(0xb9),'JlBtj':function(_0x56f5d4,_0x5185be){return _0x56f5d4===_0x5185be;},'LPqid':function(_0x36a261,_0x416aca){return _0x36a261-_0x416aca;},'dNtkW':_0x49d860(0xa2),'kgRCM':function(_0x498550,_0x312b73){return _0x498550-_0x312b73;},'mmZnx':function(_0x3ec23c,_0x192cf1){return _0x3ec23c/_0x192cf1;},'wpTOW':function(_0x150a7,_0x6a38c9){return _0x150a7+_0x6a38c9;},'UxNNq':function(_0x1bc113,_0x5318f2){return _0x1bc113+_0x5318f2;},'scFbe':function(_0x525732,_0x45c03b){return _0x525732-_0x45c03b;},'HRLSo':function(_0x109c26,_0x4527f7){return _0x109c26-_0x4527f7;},'supKz':function(_0x31d1b0,_0x4fc8fa){return _0x31d1b0/_0x4fc8fa;},'VAuUp':function(_0x293b57,_0x1c405c){return _0x293b57<_0x1c405c;},'zOOcr':_0x49d860(0xe4),'dEMIi':_0x49d860(0xa3),'ByEmK':function(_0x39d461,_0x3c75d2){return _0x39d461===_0x3c75d2;},'qmttq':function(_0x49eb2b,_0x4cab7a){return _0x49eb2b/_0x4cab7a;},'IfpcD':function(_0x2da7cf,_0x75b363){return _0x2da7cf===_0x75b363;},'bUunR':_0x49d860(0xbb),'rvMel':_0x49d860(0xe7),'bGwgH':'fXSmr','pZBKS':function(_0x24fbf0,_0x4664af){return _0x24fbf0===_0x4664af;},'igyBj':_0x49d860(0xf6),'xPGWI':function(_0x48ff25,_0x188793){return _0x48ff25<_0x188793;},'jkKAK':function(_0x1bac0e,_0x44955d){return _0x1bac0e-_0x44955d;},'grgqU':function(_0x4ade97,_0x1b4650){return _0x4ade97*_0x1b4650;},'qhFeJ':_0x49d860(0xd7),'OfCPw':_0x49d860(0xaf),'jGczy':function(_0xe74ffd,_0x291da0){return _0xe74ffd*_0x291da0;},'WJPnn':function(_0x2ff18e,_0x151bbc){return _0x2ff18e-_0x151bbc;},'gasLo':function(_0xaf5c0e,_0x47fd40){return _0xaf5c0e-_0x47fd40;},'vLDbn':function(_0x3ddf5d,_0x334687){return _0x3ddf5d/_0x334687;},'BBZAs':function(_0x3f856e,_0x296f14){return _0x3f856e*_0x296f14;}},_0x403c38=_0x9b6138['eTnYO'](trueRange,_0x51190d),_0x22c51c=[],_0xb6335b=[];for(let _0x17d626=0x0;_0x9b6138[_0x49d860(0xb4)](_0x17d626,_0x51190d['length']);_0x17d626++){if(_0x17d626===0x0){if(_0x9b6138['SRDxc']!==_0x9b6138[_0x49d860(0xec)]){if(_0x14be9a<_0x9b6138[_0x49d860(0xb8)](_0x9b6138[_0x49d860(0xc7)](_0x104199,0x2),0x2))_0x568bb1[_0x49d860(0xf4)](_0x5cfb9d);else{if(_0x9b6138[_0x49d860(0xa9)](_0xa23802,_0x9b6138[_0x49d860(0xcb)](_0x9b6138[_0x49d860(0xc2)](_0x47eb9a,0x2),0x2))){const _0xba08e5=_0x17fba2[_0x49d860(0xa5)](_0x306a91-0x1,_0x9b6138[_0x49d860(0xcb)](_0x9b6138['NNEus'](_0x107d84,0x2),0x1))[_0x49d860(0xc0)](_0x440c69=>!_0x5383ed(_0x440c69));_0x4ecc27[_0x49d860(0xf4)](_0xba08e5[_0x49d860(0xc5)]((_0x1edab7,_0x32f9e1)=>_0x1edab7+_0x32f9e1,0x0)/_0xc2f14c);}else _0x47ebae[_0x49d860(0xf4)](_0x9b6138[_0x49d860(0xf3)](_0x9b6138[_0x49d860(0xd5)](_0x9b6138['KEriY'](_0x4e8ccf[_0x9b6138[_0x49d860(0xc9)](_0x3ddba8,0x1)],_0x9b6138[_0x49d860(0xcb)](_0x599ad0,0x1)),_0x54c9bf[_0x426ea7]),_0x422b1b));}}else _0x22c51c['push'](0x0),_0xb6335b['push'](0x0);}else{const _0x37340d=_0x9b6138[_0x49d860(0xb8)](_0x51190d[_0x17d626][_0x49d860(0xe6)],_0x51190d[_0x9b6138['sLRaG'](_0x17d626,0x1)][_0x49d860(0xe6)]),_0x4f94bb=_0x51190d[_0x9b6138[_0x49d860(0xaa)](_0x17d626,0x1)][_0x49d860(0xf2)]-_0x51190d[_0x17d626][_0x49d860(0xf2)];if(_0x37340d>_0x4f94bb&&_0x9b6138[_0x49d860(0xf9)](_0x37340d,0x0)){if('pFJTF'!==_0x9b6138[_0x49d860(0xb7)])_0x22c51c['push'](_0x37340d),_0xb6335b[_0x49d860(0xf4)](0x0);else{if(_0x9b6138['iuBbb'](_0x3f32b2,_0x9b6138[_0x49d860(0xc9)](_0x1225f4,0x1)))_0x35f537[_0x49d860(0xf4)](_0x14dbf9),_0x51a87c[_0x49d860(0xf4)](_0x1cbf59),_0x359ab1[_0x49d860(0xf4)](_0x5e30dd);else _0x9b6138[_0x49d860(0xd8)](_0x281303,_0x9b6138[_0x49d860(0xb8)](_0x2da0a8,0x1))?(_0x526c12[_0x49d860(0xf4)](_0x5ab355[_0x49d860(0xa5)](0x0,_0x4e6712)['reduce']((_0x38de44,_0x57295e)=>_0x38de44+_0x57295e,0x0)),_0x332e56[_0x49d860(0xf4)](_0x5cc5d8[_0x49d860(0xa5)](0x0,_0x48464f)[_0x49d860(0xc5)]((_0x5c4259,_0x363d2e)=>_0x5c4259+_0x363d2e,0x0)),_0x4f2faa[_0x49d860(0xf4)](_0x1dca87[_0x49d860(0xa5)](0x0,_0x3be6b5)[_0x49d860(0xc5)]((_0x40c88a,_0x7b1ec6)=>_0x40c88a+_0x7b1ec6,0x0))):(_0x49622c[_0x49d860(0xf4)](_0x9b6138['VOPEJ'](_0xc0972d[_0x9b6138[_0x49d860(0xcb)](_0x3eb262,0x1)],_0x9b6138[_0x49d860(0xf3)](_0x8a6afa[_0x9b6138[_0x49d860(0xca)](_0x142d5b,0x1)],_0x301b8d))+_0x28f3a9[_0x411ae1]),_0x384bbf[_0x49d860(0xf4)](_0x9b6138['UNCUe'](_0x9b6138[_0x49d860(0xb0)](_0x3102d9[_0x9b6138['YYewU'](_0x3f0f3f,0x1)],_0x49c062[_0x9b6138[_0x49d860(0xb3)](_0x380161,0x1)]/_0x51720e),_0x510a0a[_0x1a486c])),_0x59c392[_0x49d860(0xf4)](_0x2bdbb9[_0x9b6138[_0x49d860(0xb0)](_0x332fd6,0x1)]-_0x9b6138[_0x49d860(0xe8)](_0x1c566c[_0x9b6138['duAHQ'](_0x19f29e,0x1)],_0x9ced96)+_0x3210cd[_0x414eb3]));}}else _0x9b6138['CbSuo'](_0x4f94bb,_0x37340d)&&_0x9b6138[_0x49d860(0xe5)](_0x4f94bb,0x0)?(_0x22c51c[_0x49d860(0xf4)](0x0),_0xb6335b[_0x49d860(0xf4)](_0x4f94bb)):(_0x22c51c['push'](0x0),_0xb6335b[_0x49d860(0xf4)](0x0));}}const _0x241c26=[],_0x466329=[],_0x574e5c=[];for(let _0x4c21c2=0x0;_0x4c21c2<_0x51190d[_0x49d860(0xb5)];_0x4c21c2++){if(_0x49d860(0xc8)===_0x9b6138[_0x49d860(0xe3)])_0x2671f5[_0x49d860(0xf4)](0x0),_0x2b2ac5['push'](0x0);else{if(_0x4c21c2<_0x9b6138[_0x49d860(0xb3)](_0x428198,0x1))_0x9b6138[_0x49d860(0xf8)](_0x9b6138['eknyU'],_0x9b6138[_0x49d860(0xde)])?(_0x241c26[_0x49d860(0xf4)](NaN),_0x466329[_0x49d860(0xf4)](NaN),_0x574e5c[_0x49d860(0xf4)](NaN)):(_0x4f2a1d[_0x49d860(0xf4)](_0x4ed736[_0x49d860(0xa5)](0x0,_0x3beb33)['reduce']((_0x2f0076,_0x20b3f7)=>_0x2f0076+_0x20b3f7,0x0)),_0x1b9343[_0x49d860(0xf4)](_0x114df8[_0x49d860(0xa5)](0x0,_0x5ad215)['reduce']((_0x42bab7,_0x2c446b)=>_0x42bab7+_0x2c446b,0x0)),_0x57da3e[_0x49d860(0xf4)](_0x2c2a68['slice'](0x0,_0x8345a5)[_0x49d860(0xc5)]((_0x1080ff,_0x367d4f)=>_0x1080ff+_0x367d4f,0x0)));else{if(_0x9b6138[_0x49d860(0xae)](_0x4c21c2,_0x9b6138['LPqid'](_0x428198,0x1))){if(_0x9b6138[_0x49d860(0xa9)]('pNdNt',_0x9b6138[_0x49d860(0xba)]))_0x241c26[_0x49d860(0xf4)](_0x403c38[_0x49d860(0xa5)](0x0,_0x428198)[_0x49d860(0xc5)]((_0x3d4759,_0x12bfb6)=>_0x3d4759+_0x12bfb6,0x0)),_0x466329['push'](_0x22c51c[_0x49d860(0xa5)](0x0,_0x428198)['reduce']((_0x459e38,_0x3ac7ee)=>_0x459e38+_0x3ac7ee,0x0)),_0x574e5c['push'](_0xb6335b['slice'](0x0,_0x428198)['reduce']((_0x139d3a,_0x140c83)=>_0x139d3a+_0x140c83,0x0));else return _0x9b6138[_0x49d860(0xd9)](_0x2dd40a,_0x248ba9[_0x49d860(0xcd)][_0x49d860(0x9d)]);}else _0x241c26['push'](_0x9b6138[_0x49d860(0xd5)](_0x9b6138[_0x49d860(0xca)](_0x241c26[_0x9b6138[_0x49d860(0xdf)](_0x4c21c2,0x1)],_0x9b6138[_0x49d860(0xf7)](_0x241c26[_0x4c21c2-0x1],_0x428198)),_0x403c38[_0x4c21c2])),_0x466329[_0x49d860(0xf4)](_0x9b6138[_0x49d860(0xbf)](_0x9b6138[_0x49d860(0xc1)](_0x466329[_0x9b6138[_0x49d860(0xdf)](_0x4c21c2,0x1)],_0x9b6138[_0x49d860(0xc6)](_0x466329[_0x4c21c2-0x1],_0x428198)),_0x22c51c[_0x4c21c2])),_0x574e5c[_0x49d860(0xf4)](_0x9b6138[_0x49d860(0xdd)](_0x9b6138['scFbe'](_0x574e5c[_0x9b6138[_0x49d860(0xef)](_0x4c21c2,0x1)],_0x9b6138['supKz'](_0x574e5c[_0x4c21c2-0x1],_0x428198)),_0xb6335b[_0x4c21c2]));}}}const _0x28c092=[],_0x33f244=[];for(let _0x2dcc1a=0x0;_0x9b6138[_0x49d860(0xa8)](_0x2dcc1a,_0x51190d[_0x49d860(0xb5)]);_0x2dcc1a++){if(_0x9b6138[_0x49d860(0xee)]===_0x9b6138[_0x49d860(0xa4)]){const _0x142d1f=_0x10a678[_0x49d860(0xa5)](_0x59199d-0x1,_0x9b6138[_0x49d860(0xb8)](_0x9b6138[_0x49d860(0x9f)](_0x21ac36,0x2),0x1))[_0x49d860(0xc0)](_0x3ea7b0=>!_0x3c9237(_0x3ea7b0));_0x4f4f62[_0x49d860(0xf4)](_0x9b6138[_0x49d860(0xe8)](_0x142d1f[_0x49d860(0xc5)]((_0x25d207,_0x2cfcc5)=>_0x25d207+_0x2cfcc5,0x0),_0x43e620));}else _0x9b6138[_0x49d860(0xd4)](isNaN,_0x241c26[_0x2dcc1a])||_0x9b6138['ByEmK'](_0x241c26[_0x2dcc1a],0x0)?(_0x28c092[_0x49d860(0xf4)](NaN),_0x33f244[_0x49d860(0xf4)](NaN)):(_0x28c092['push'](_0x466329[_0x2dcc1a]/_0x241c26[_0x2dcc1a]*0x64),_0x33f244['push'](_0x9b6138[_0x49d860(0xe9)](_0x574e5c[_0x2dcc1a],_0x241c26[_0x2dcc1a])*0x64));}const _0x55cddf=[];for(let _0x2e0602=0x0;_0x9b6138[_0x49d860(0xa8)](_0x2e0602,_0x51190d[_0x49d860(0xb5)]);_0x2e0602++){if(_0x9b6138[_0x49d860(0xd4)](isNaN,_0x28c092[_0x2e0602])||isNaN(_0x33f244[_0x2e0602])){if(_0x9b6138[_0x49d860(0xa0)](_0x9b6138['bUunR'],_0x49d860(0xbb)))_0x55cddf[_0x49d860(0xf4)](NaN);else{const _0x28a744=_0x9b6138['WlfLB'](_0x2bf674,_0x38a942,_0x4f8ec4);return _0x28a744[_0x49d860(0xce)][_0x9b6138[_0x49d860(0xb0)](_0x28a744[_0x49d860(0xce)][_0x49d860(0xb5)],0x1)];}}else{if(_0x9b6138[_0x49d860(0xd6)]!==_0x9b6138[_0x49d860(0x9b)]){const _0x20e9ce=_0x9b6138[_0x49d860(0xdd)](_0x28c092[_0x2e0602],_0x33f244[_0x2e0602]);_0x9b6138[_0x49d860(0xa0)](_0x20e9ce,0x0)?_0x9b6138[_0x49d860(0xc3)](_0x9b6138['igyBj'],_0x9b6138['igyBj'])?_0x55cddf[_0x49d860(0xf4)](0x0):(_0x92d406[_0x49d860(0xf4)](_0x9b6138[_0x49d860(0xc7)](_0x9b6138[_0x49d860(0xc6)](_0x25e2e1[_0x30cb4f],_0x5ba4f6[_0x5c21d3]),0x64)),_0x4f4a8e['push'](_0x9b6138[_0x49d860(0x9c)](_0x9b6138['mdkPD'](_0x14df6c[_0x4dd89f],_0x5bef06[_0x11b081]),0x64))):_0x55cddf[_0x49d860(0xf4)](_0x9b6138[_0x49d860(0xac)](Math[_0x49d860(0xd0)](_0x28c092[_0x2e0602]-_0x33f244[_0x2e0602]),_0x20e9ce)*0x64);}else _0x2a37a9[_0x49d860(0xf4)](_0x1c2b5e),_0x5edaa1[_0x49d860(0xf4)](_0x1d052f);}}const _0x2e8cb1=[];for(let _0x4620b9=0x0;_0x9b6138[_0x49d860(0xab)](_0x4620b9,_0x51190d[_0x49d860(0xb5)]);_0x4620b9++){if(_0x4620b9<_0x9b6138[_0x49d860(0xeb)](_0x9b6138[_0x49d860(0xbe)](_0x428198,0x2),0x2)){if(_0x9b6138[_0x49d860(0xae)](_0x9b6138[_0x49d860(0xcc)],_0x9b6138[_0x49d860(0xbd)])){const _0x200576=_0x1a84c7?function(){const _0x381c2b=_0x49d860;if(_0x294684){const _0x22909f=_0x57fb7d[_0x381c2b(0x9e)](_0x39157d,arguments);return _0xe91577=null,_0x22909f;}}:function(){};return _0x36e6fb=![],_0x200576;}else _0x2e8cb1[_0x49d860(0xf4)](NaN);}else{if(_0x4620b9===_0x9b6138['QCRFc'](_0x9b6138['jGczy'](_0x428198,0x2),0x2)){const _0x109ef8=_0x55cddf[_0x49d860(0xa5)](_0x9b6138[_0x49d860(0xf0)](_0x428198,0x1),_0x9b6138['gasLo'](_0x428198*0x2,0x1))['filter'](_0x1f84c8=>!isNaN(_0x1f84c8));_0x2e8cb1[_0x49d860(0xf4)](_0x9b6138[_0x49d860(0xed)](_0x109ef8[_0x49d860(0xc5)]((_0xbcd05f,_0x5a1dba)=>_0xbcd05f+_0x5a1dba,0x0),_0x428198));}else _0x2e8cb1['push'](_0x9b6138[_0x49d860(0xf7)](_0x9b6138['BBZAs'](_0x2e8cb1[_0x4620b9-0x1],_0x428198-0x1)+_0x55cddf[_0x4620b9],_0x428198));}}return{'adx':_0x2e8cb1,'plusDI':_0x28c092,'minusDI':_0x33f244};}export function getLatestADX(_0x4230ac,_0x4e3bb3){const _0x2571c8=a0_0x4a1ae5,_0x34a4dc={'NPfdj':function(_0x426c4b,_0x277840,_0x511f48){return _0x426c4b(_0x277840,_0x511f48);}},_0x5cdeea=_0x34a4dc[_0x2571c8(0xa1)](calculateADX,_0x4230ac,_0x4e3bb3);return _0x5cdeea[_0x2571c8(0xce)][_0x5cdeea[_0x2571c8(0xce)][_0x2571c8(0xb5)]-0x1];}export function isStrongTrend(_0x2d72ec){const _0x561cbc=a0_0x4a1ae5;return _0x2d72ec>=INDICATOR_PARAMS[_0x561cbc(0xcd)][_0x561cbc(0x9d)];}function a0_0x527c(){const _0x761bf0=['CfPcs1m','wgPLCeO','CMvKDwnL','u1zgvhq','zNH5B1a','ugnjq0K','yMDqs00','ruvmCwq','C0XsyuC','CwHgzuO','qury','ywr4','Dg9tDhjPBMC','ywjZ','otyWodaXALPqA2XT','CwTdEhK','ndC2mZG4mg9VDKDTva','zvrUwu8','vLzqzxm','CNznzwW','ELnrBuG','AhfhCuu','u2Piyvi','y29UC3rYDwn0B3i','mtK3nZi0mJrIEg1dwhy','n3bewvLfuG','vxHotNe','vMnyC2C','A2Dsq00','mti1s0zHBhve','C2vHCMnO','shHeze4','qw1uqwK','tuDUqvO','zLvxEuy','AgLNAa','DvzmCxG','zxfbDeO','Cw10Dhe','mZm1mdC3uwP5Dg9S','AMTlquS','u1jeEgm','DKXeyM4','EK9py3i','sfjmu28','v0PqBM4','mtm1nJy4mgnsz2XVuG','Bg93','BwrRueq','ChvZAa','yNn2tvu','Duncveq','Bw1ABNG','wMzgq1a','q2jtDw8','CgvYAw9K','sKHgBNy','yKD3z0G','t2LhrKG','DgHYzxnOB2XK','yxbWBhK','tK5fDxm','swzWy0q','tLbMzgO','Ce5KtNq','verYCKS','zevnswK','C2XPy2u','mJK1mtGXnKLmyKPNra','Ae1ytw8','vKf1vxa','yMH2sMy','A1PXzMu','Efbhv0K','C3vWs3O','Be1HEMC','sMXcDgO','CNPOBhi','wvLLD1u','AvbmEg8','DwTjqw8','uunsrMm','AxvcyMi','BgvUz3rO','r01KDhK','sfLQsNO','rMXoD3G','tNH6EuK','ze50A1C','z3zgzLi','mJqYmZz1Bu1UDe4','t2zduhC','z3jNCvu','D3but1C','zMLSDgvY','vK9qruO','B25Szha'];a0_0x527c=function(){return _0x761bf0;};return a0_0x527c();}
|