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
|
@@ -1,179 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Explain command - Explain indicator logic
|
|
3
|
-
*/
|
|
4
|
-
import { Formatter } from "../../utils/formatter.js";
|
|
5
|
-
import { INDICATOR_PARAMS } from "../../utils/constants.js";
|
|
6
|
-
const EXPLANATIONS = {
|
|
7
|
-
rsi: `RSI (Relative Strength Index)
|
|
8
|
-
|
|
9
|
-
📊 What it measures:
|
|
10
|
-
Momentum oscillator measuring the speed and magnitude of price changes.
|
|
11
|
-
|
|
12
|
-
🔹 3-Layer Logic for BUY:
|
|
13
|
-
Layer 1 (CONDITION): RSI < 30 (oversold zone)
|
|
14
|
-
Layer 2 (TRIGGER): RSI crosses ABOVE 30 (reversal confirmation)
|
|
15
|
-
Layer 3 (CONFIRMATION): ADX > 20 + bullish trend on higher timeframe
|
|
16
|
-
|
|
17
|
-
⚠️ CRITICAL: Being oversold (RSI < 30) is NOT an entry signal!
|
|
18
|
-
We need confirmation of reversal (crossing above 30) AND trend strength.
|
|
19
|
-
|
|
20
|
-
📈 Parameters: Period = ${INDICATOR_PARAMS.RSI.period}`,
|
|
21
|
-
stochastic: `Stochastic Oscillator
|
|
22
|
-
|
|
23
|
-
📊 What it measures:
|
|
24
|
-
Compares closing price to price range over a period.
|
|
25
|
-
|
|
26
|
-
🔹 3-Layer Logic for BUY:
|
|
27
|
-
Layer 1 (CONDITION): %K < 20 (oversold zone)
|
|
28
|
-
Layer 2 (TRIGGER): %K crosses ABOVE %D (bullish crossover)
|
|
29
|
-
Layer 3 (CONFIRMATION): ADX > 20 + momentum positive
|
|
30
|
-
|
|
31
|
-
⚠️ CRITICAL: Oversold condition alone is not enough!
|
|
32
|
-
We wait for the bullish crossover to confirm reversal intent.
|
|
33
|
-
|
|
34
|
-
📈 Parameters: K=${INDICATOR_PARAMS.STOCHASTIC.kPeriod}, D=${INDICATOR_PARAMS.STOCHASTIC.dPeriod}, Smooth=${INDICATOR_PARAMS.STOCHASTIC.smooth}`,
|
|
35
|
-
macd: `MACD (Moving Average Convergence Divergence)
|
|
36
|
-
|
|
37
|
-
📊 What it measures:
|
|
38
|
-
Relationship between two moving averages of price.
|
|
39
|
-
|
|
40
|
-
🔹 3-Layer Logic for BUY:
|
|
41
|
-
Layer 1 (CONDITION): Histogram in negative zone
|
|
42
|
-
Layer 2 (TRIGGER): MACD crosses above signal line OR histogram turns positive
|
|
43
|
-
Layer 3 (CONFIRMATION): ADX > 20 + momentum confirms
|
|
44
|
-
|
|
45
|
-
💡 Strength: Shows both trend direction and momentum.
|
|
46
|
-
|
|
47
|
-
📈 Parameters: Fast=${INDICATOR_PARAMS.MACD.fastPeriod}, Slow=${INDICATOR_PARAMS.MACD.slowPeriod}, Signal=${INDICATOR_PARAMS.MACD.signalPeriod}`,
|
|
48
|
-
adx: `ADX (Average Directional Index)
|
|
49
|
-
|
|
50
|
-
📊 What it measures:
|
|
51
|
-
Trend strength (NOT direction).
|
|
52
|
-
|
|
53
|
-
🎯 Usage in codifx:
|
|
54
|
-
ADX is used in Layer 3 (CONFIRMATION) to validate signal quality.
|
|
55
|
-
|
|
56
|
-
✓ ADX > ${INDICATOR_PARAMS.ADX.threshold}: Strong trend (signal is reliable)
|
|
57
|
-
✗ ADX < ${INDICATOR_PARAMS.ADX.threshold}: Weak trend (signal rejected)
|
|
58
|
-
|
|
59
|
-
💡 Key insight: Oscillator signals in strong trends are more reliable.
|
|
60
|
-
|
|
61
|
-
📈 Parameters: Period = ${INDICATOR_PARAMS.ADX.period}`,
|
|
62
|
-
momentum: `Momentum Indicator
|
|
63
|
-
|
|
64
|
-
📊 What it measures:
|
|
65
|
-
Rate of price change over a period.
|
|
66
|
-
|
|
67
|
-
🔹 Usage in codifx:
|
|
68
|
-
Momentum is used for TRIGGER and CONFIRMATION detection.
|
|
69
|
-
|
|
70
|
-
Trigger: Momentum crosses above 0 (bullish) or below 0 (bearish)
|
|
71
|
-
Confirmation: Momentum > 0 supports bullish signals
|
|
72
|
-
|
|
73
|
-
💡 Simple but effective for confirming price acceleration.
|
|
74
|
-
|
|
75
|
-
📈 Parameters: Period = ${INDICATOR_PARAMS.MOMENTUM.period}`,
|
|
76
|
-
cci: `CCI (Commodity Channel Index)
|
|
77
|
-
|
|
78
|
-
📊 What it measures:
|
|
79
|
-
Deviation of price from its statistical mean.
|
|
80
|
-
|
|
81
|
-
🔹 3-Layer Logic for BUY:
|
|
82
|
-
Layer 1 (CONDITION): CCI < -100 (oversold)
|
|
83
|
-
Layer 2 (TRIGGER): Other oscillators provide trigger
|
|
84
|
-
Layer 3 (CONFIRMATION): ADX + momentum
|
|
85
|
-
|
|
86
|
-
💡 Effective in trending markets for extreme condition detection.
|
|
87
|
-
|
|
88
|
-
📈 Parameters: Period = ${INDICATOR_PARAMS.CCI.period}`,
|
|
89
|
-
williams: `Williams %R
|
|
90
|
-
|
|
91
|
-
📊 What it measures:
|
|
92
|
-
Current closing price relative to the high-low range.
|
|
93
|
-
|
|
94
|
-
🔹 3-Layer Logic for BUY:
|
|
95
|
-
Layer 1 (CONDITION): %R < -80 (oversold)
|
|
96
|
-
Layer 2 (TRIGGER): Other oscillators provide trigger
|
|
97
|
-
Layer 3 (CONFIRMATION): ADX + momentum
|
|
98
|
-
|
|
99
|
-
💡 Similar to Stochastic but more sensitive to recent price action.
|
|
100
|
-
|
|
101
|
-
📈 Parameters: Period = ${INDICATOR_PARAMS.WILLIAMS_R.period}`,
|
|
102
|
-
"trading-type": `Trading Type Philosophy
|
|
103
|
-
|
|
104
|
-
🎯 Trading type is a FIRST-CLASS concept in codifx.
|
|
105
|
-
It fundamentally changes scanner behavior:
|
|
106
|
-
|
|
107
|
-
📊 SCALP (1m/5m):
|
|
108
|
-
- Primary: 1m, Confirmation: 5m
|
|
109
|
-
- Weights: 30% trend, 70% oscillator
|
|
110
|
-
- Min score: 65
|
|
111
|
-
- Focus: Quick reversals, high oscillator weight
|
|
112
|
-
|
|
113
|
-
📊 DAY (5m/15m):
|
|
114
|
-
- Primary: 5m, Confirmation: 15m
|
|
115
|
-
- Weights: 40% trend, 60% oscillator
|
|
116
|
-
- Min score: 70
|
|
117
|
-
- Focus: Intraday swings, balanced approach
|
|
118
|
-
|
|
119
|
-
📊 SWING (1h/1d):
|
|
120
|
-
- Primary: 1h, Confirmation: 1d
|
|
121
|
-
- Weights: 60% trend, 40% oscillator
|
|
122
|
-
- Min score: 75
|
|
123
|
-
- Focus: Multi-day trends, trend-heavy
|
|
124
|
-
|
|
125
|
-
⚠️ CRITICAL: Trading type is NOT just a label!
|
|
126
|
-
It changes timeframes, weights, and thresholds.`,
|
|
127
|
-
"3-layer": `3-Layer Oscillator Logic (THE CORE RULE)
|
|
128
|
-
|
|
129
|
-
This is what makes codifx different from naive scanners.
|
|
130
|
-
|
|
131
|
-
🔹 Layer 1 - CONDITION (Zone Detection):
|
|
132
|
-
Detects potential reversal zones
|
|
133
|
-
Example: RSI < 30, Stochastic < 20
|
|
134
|
-
⚠️ NO SCORING YET - just zone detection
|
|
135
|
-
|
|
136
|
-
🔹 Layer 2 - TRIGGER (Event Detection):
|
|
137
|
-
Detects price reaction to the zone
|
|
138
|
-
Example: RSI crosses above 30, Stoch %K crosses %D
|
|
139
|
-
✓ ENTRY TIMING STARTS HERE
|
|
140
|
-
|
|
141
|
-
🔹 Layer 3 - CONFIRMATION (Validation):
|
|
142
|
-
Validates signal quality
|
|
143
|
-
Example: ADX > 20, bullish trend on higher TF
|
|
144
|
-
✓ SIGNAL IS INVALID WITHOUT THIS
|
|
145
|
-
|
|
146
|
-
⚠️ CRITICAL RULE:
|
|
147
|
-
At least 1 TRIGGER + 1 CONFIRMATION required for valid signal.
|
|
148
|
-
|
|
149
|
-
💡 Why this matters:
|
|
150
|
-
"Oversold is NOT an entry signal."
|
|
151
|
-
We need confirmation that price is actually reversing.`,
|
|
152
|
-
};
|
|
153
|
-
export async function explainCommand(options) {
|
|
154
|
-
if (!options.indicator) {
|
|
155
|
-
console.log(Formatter.section("AVAILABLE EXPLANATIONS"));
|
|
156
|
-
console.log("\nIndicators:");
|
|
157
|
-
console.log(" • rsi");
|
|
158
|
-
console.log(" • stochastic");
|
|
159
|
-
console.log(" • macd");
|
|
160
|
-
console.log(" • adx");
|
|
161
|
-
console.log(" • momentum");
|
|
162
|
-
console.log(" • cci");
|
|
163
|
-
console.log(" • williams");
|
|
164
|
-
console.log("\nConcepts:");
|
|
165
|
-
console.log(" • trading-type");
|
|
166
|
-
console.log(" • 3-layer");
|
|
167
|
-
console.log("\nUsage: codifx explain --indicator <name>");
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
const explanation = EXPLANATIONS[options.indicator.toLowerCase()];
|
|
171
|
-
if (!explanation) {
|
|
172
|
-
console.log(Formatter.error(`No explanation available for: ${options.indicator}`));
|
|
173
|
-
console.log('Run "codifx explain" to see available topics.');
|
|
174
|
-
process.exit(1);
|
|
175
|
-
}
|
|
176
|
-
console.log(Formatter.section(`EXPLANATION: ${options.indicator.toUpperCase()}`));
|
|
177
|
-
console.log(explanation);
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=explain.js.map
|
|
1
|
+
const a0_0x5b3d09=a0_0x43c5;(function(_0x304504,_0x11ef65){const _0x1f7b3d=a0_0x43c5,_0x334d56=_0x304504();while(!![]){try{const _0x1936d5=parseInt(_0x1f7b3d(0x124))/0x1+parseInt(_0x1f7b3d(0x131))/0x2*(parseInt(_0x1f7b3d(0x12d))/0x3)+-parseInt(_0x1f7b3d(0x107))/0x4*(parseInt(_0x1f7b3d(0x13e))/0x5)+parseInt(_0x1f7b3d(0x112))/0x6+parseInt(_0x1f7b3d(0x11f))/0x7*(parseInt(_0x1f7b3d(0xfc))/0x8)+parseInt(_0x1f7b3d(0x10b))/0x9+-parseInt(_0x1f7b3d(0x126))/0xa*(parseInt(_0x1f7b3d(0x11b))/0xb);if(_0x1936d5===_0x11ef65)break;else _0x334d56['push'](_0x334d56['shift']());}catch(_0x394154){_0x334d56['push'](_0x334d56['shift']());}}}(a0_0x26fa,0x719a5));function a0_0x26fa(){const _0x538f64=['C2LNBMfSugvYAw9K','zMfZDfbLCMLVza','Dg9mB3DLCKnHC2u','mJy5odbOAvrQr2u','EMzpyxG','CMHduwK','q0njicHdB21TB2rPDhKGq2HHBM5LBcbjBMrLEcKkcVcFK4OGv2HHDcbPDcbTzwfZDxjLCZOkrgv2Awf0Aw9Uig9MihbYAwnLigzYB20GAxrZihn0yxrPC3rPy2fSig1Lyw4UcGRWN5s5idmTtgf5zxiGtg9NAwmGzM9YiejvwtOkicbmyxLLCIaXicHdt05esvrjt04PoIbdq0KGpcaTmtaWicHVDMvYC29SzcKkicbmyxLLCIaYicHuuKLhr0vsktOGt3rOzxiGB3nJAwXSyxrVCNmGChjVDMLKzsb0CMLNz2vYcIaGtgf5zxiGmYaOq09orKLstufusu9oktOGquryicSGBw9Tzw50Dw0kcVcFKQeGrwzMzwn0AxzLigLUihrYzw5KAw5Nig1HCMTLDhmGzM9Yigv4DhjLBwuGy29UzgL0Aw9UigrLDgvJDgLVBI4kcVcFK4GGugfYyw1LDgvYCZOGugvYAw9Kid0G','quryicHbDMvYywDLierPCMvJDgLVBMfSieLUzgv4kqOk8j+tIIbxAgf0igL0ig1Lyxn1CMvZoGPuCMvUzcbZDhjLBMD0AcaOtK9uigrPCMvJDgLVBIKUcGRWN46VifvZywDLigLUignVzgLMEdOkquryigLZihvZzwqGAw4Gtgf5zxiGmYaOq09orKLstufusu9oksb0BYb2ywXPzgf0zsbZAwDUywWGCxvHBgL0Es4kcUkCKYbbrfGGpIa','icdIGkiGDhjHzgLUzY10ExbL','C2vJDgLVBG','icdIGkiGBwfJza','Cgrsue4','tgfor3a','lcbtBw9VDgG9','icdIGkiGC3rVy2HHC3rPyW','ofL5Auf4Eq','A1bLCMLVza','CwfxyKW','rvHqtefoqvrjt046ia','icdIGkiGBw9Tzw50Dw0','Aw5KAwnHDg9Y','C0LXs1a','vu5dsNK','sg9Ou0u','tM8GzxHWBgfUyxrPB24GyxzHAwXHyMXLigzVCJOG','icdIGkiGy2nP','mZq0Bwzmq2P6','DxjZs2C','u3rVy2HHC3rPyYbpC2nPBgXHDg9YcGRWN5okifDOyxqGAxqGBwvHC3vYzxm6cKnVBxbHCMvZignSB3nPBMCGChjPy2uGDg8GChjPy2uGCMfUz2uGB3zLCIbHihbLCMLVzc4kcVcFLlKGmY1myxLLCIbmB2DPyYbMB3iGqLvzoGOGieXHEwvYideGkenptKrjveLptIK6icvlidWGmJaGkg92zxjZB2XKihPVBMuPcIaGtgf5zxiGmIaOvfjjr0DfuIK6icvlignYB3nZzxmGqujpvKuGjuqGkgj1BgXPC2GGy3jVC3nVDMvYkqOGieXHEwvYidmGkenptKzjuK1bveLptIK6iefewca+idiWicSGBw9Tzw50Dw0GCg9ZAxrPDMukcUkAOo+4JYbduKLusunbtdOGt3zLCNnVBgqGy29UzgL0Aw9UigfSB25LigLZig5VDcbLBM91z2GHcLDLihDHAxqGzM9YihrOzsbIDwXSAxnOignYB3nZB3zLCIb0BYbJB25MAxjTihjLDMvYC2fSigLUDgvUDc4kcVcFK4GGugfYyw1LDgvYCZOGsZ0','Bg9N','mZi2ntqYnwTjB3fgzW','icdIGkiGCNnP','DgHYzxnOB2XK','oIbxzwfRihrYzw5KicHZAwDUywWGCMvQzwn0zwqPcGRWN5kHieTLEsbPBNnPz2H0oIbpC2nPBgXHDg9YihnPz25HBhmGAw4GC3rYB25NihrYzw5KCYbHCMuGBw9YzsbYzwXPywjSzs4kcVcFK4GGugfYyw1LDgvYCZOGugvYAw9Kid0G','sKLrv2e','oIbtDhjVBMCGDhjLBMqGkhnPz25HBcbPCYbYzwXPywjSzsKk4PYxiefewca8ia','qvj4DxC','mJy0nJeWmMvpuvDztW','zxjYB3i','Dg9vChbLCKnHC2u','zfbLCMLVza','qury','sKDWzKy','v0LmteLbtvnFuG','cKLUzgLJyxrVCNm6','zxDewve','mZG2mdGWmNnYs0HPuq','lcbtAwDUywW9','kcGOlISPkYKRksSK','uLnjicHszwXHDgL2zsbtDhjLBMD0AcbjBMrLEcKkicak8j+tIIbxAgf0igL0ig1Lyxn1CMvZoGPnB21LBNr1BsbVC2nPBgXHDg9Yig1Lyxn1CMLUzYb0AguGC3bLzwqGyw5Kig1Hz25PDhvKzsbVzIbWCMLJzsbJAgfUz2vZlGOk8j+uUsaZluXHEwvYieXVz2LJigzVCIbcvvK6cIaGtgf5zxiGmsaOq09oreLusu9oktOGuLnjidWGmZaGkg92zxjZB2XKihPVBMuPcIaGtgf5zxiGmIaOvfjjr0DfuIK6ifjtssbJCM9ZC2vZiefct1zfidmWicHYzxzLCNnHBcbJB25MAxjTyxrPB24PcIaGtgf5zxiGmYaOq09orKLstufusu9oktOGquryid4GmJaGkYbIDwXSAxnOihrYzw5Kig9UigHPz2HLCIb0Aw1LzNjHBwukcUkAOo+4JYbduKLusunbtdOGqMvPBMCGB3zLCNnVBgqGkfjtssa8idmWksbPCYbot1qGyw4Gzw50CNKGC2LNBMfSiqPxzsbUzwvKignVBMzPCM1HDgLVBIbVzIbYzxzLCNnHBcaOy3jVC3nPBMCGywjVDMuGmZaPieforcb0CMvUzcbZDhjLBMD0Ac4kcVcFK4GGugfYyw1LDgvYCZOGugvYAw9Kid0G','nJeZnde3DfzlANje','DfPbuwu','C2vHCMnO','tvbLzg8','tufdrcaOtw92Aw5Nief2zxjHz2uGq29UDMvYz2vUy2uGrgL2zxjNzw5JzsKkcVcFK4OGv2HHDcbPDcbTzwfZDxjLCZOkuMvSyxrPB25ZAgLWigjLDhDLzw4GDhDVig1VDMLUzYbHDMvYywDLCYbVzIbWCMLJzs4kcVcFLlKGmY1myxLLCIbmB2DPyYbMB3iGqLvzoGOGieXHEwvYideGkenptKrjveLptIK6ieHPC3rVz3jHBsbPBIbUzwDHDgL2zsb6B25LcIaGtgf5zxiGmIaOvfjjr0DfuIK6ie1bq0qGy3jVC3nLCYbHyM92zsbZAwDUywWGBgLUzsbpuIbOAxn0B2DYyw0GDhvYBNmGCg9ZAxrPDMukicbmyxLLCIaZicHdt05gsvjnqvrjt04PoIbbrfGGpIaYmcaRig1VBwvUDhvTignVBMzPCM1ZcGRWN5kHifn0CMvUz3rOoIbtAg93CYbIB3rOihrYzw5KigrPCMvJDgLVBIbHBMqGBw9Tzw50Dw0UcGRWN5oiifbHCMfTzxrLCNm6iezHC3q9','mJa3mZK0u0jozK9n','icdIGkiGywr4','mZbfEeHesve','yvzhtKe','tu9nru5uvu0','tw9Tzw50Dw0Gsw5KAwnHDg9YcGRWN5okifDOyxqGAxqGBwvHC3vYzxm6cLjHDguGB2yGChjPy2uGy2HHBMDLig92zxiGysbWzxjPB2qUcGRWN5s5ifvZywDLigLUignVzgLMEdOktw9Tzw50Dw0GAxmGDxnLzcbMB3iGvfjjr0DfuIbHBMqGq09orKLstufusu9oigrLDgvJDgLVBI4kcIaGvhjPz2DLCJOGtw9Tzw50Dw0Gy3jVC3nLCYbHyM92zsaWicHIDwXSAxnOksbVCIbIzwXVDYaWicHIzwfYAxnOkqOGienVBMzPCM1HDgLVBJOGtw9Tzw50Dw0GpIaWihn1ChbVCNrZigj1BgXPC2GGC2LNBMfSCWOk8j+sOsbtAw1WBguGyNv0igvMzMvJDgL2zsbMB3iGy29UzMLYBwLUzYbWCMLJzsbHy2nLBgvYyxrPB24UcGRWN5oiifbHCMfTzxrLCNm6ifbLCMLVzca9ia','C21VB3rO','yxbWBhK','nhWXFdeZFdv8n3WZFdH8oxW2FdeWFdj8mtf8mtj8ma','mZzbB01PD2C','tvbyAK8','y29UC3rYDwn0B3i','ANLRtvO','mtq3mJqYvhvgBMfj','Bvrvtw8','Dg9tDhjPBMC','icdIGkiGD2LSBgLHBxm','CgvYAw9K','tufdra','qvzbsuXbqKXfievyueXbtKfusu9ouW','lcbtBg93pq','u1rpq0Hbu1rjqW','q0HgD1q'];a0_0x26fa=function(){return _0x538f64;};return a0_0x26fa();}const a0_0x26c131=(function(){const _0x3564a0=a0_0x43c5,_0x1a7ab6={'qaWbL':'(((.+)+)+)+$','aVGNA':function(_0xbc46e4,_0x5d5675){return _0xbc46e4!==_0x5d5675;},'QqDEt':_0x3564a0(0x104),'MPedo':_0x3564a0(0x117),'tZAQe':function(_0x1eac77,_0x59c5e5){return _0x1eac77===_0x59c5e5;},'UvmED':_0x3564a0(0x13f)};let _0x5b5d8b=!![];return function(_0x3aa2f8,_0x5829cc){const _0xf13a1a=_0x3564a0,_0x331c9d={'QIXSY':_0x1a7ab6[_0xf13a1a(0xfe)],'LaNGp':function(_0x5da642,_0x171b41){const _0x20aa85=_0xf13a1a;return _0x1a7ab6[_0x20aa85(0x127)](_0x5da642,_0x171b41);},'ywjAH':_0x1a7ab6['QqDEt'],'mTUMo':_0x1a7ab6[_0xf13a1a(0x122)]};if(_0x1a7ab6[_0xf13a1a(0x120)](_0x1a7ab6['UvmED'],_0xf13a1a(0x13f))){const _0x572426=_0x5b5d8b?function(){const _0x276d85=_0xf13a1a;if(_0x331c9d[_0x276d85(0x147)](_0x331c9d['ywjAH'],_0x331c9d[_0x276d85(0x132)])){if(_0x5829cc){const _0x626e64=_0x5829cc['apply'](_0x3aa2f8,arguments);return _0x5829cc=null,_0x626e64;}}else return _0x38f480[_0x276d85(0x133)]()[_0x276d85(0x121)](_0x331c9d['QIXSY'])['toString']()[_0x276d85(0x12f)](_0x41b30f)[_0x276d85(0x121)](_0x331c9d['QIXSY']);}:function(){};return _0x5b5d8b=![],_0x572426;}else{if(_0x52de30){const _0xddb08f=_0x40b06a[_0xf13a1a(0x12b)](_0x31d842,arguments);return _0x25398d=null,_0xddb08f;}}};}()),a0_0x10fba5=a0_0x26c131(this,function(){const _0x38a3e8=a0_0x43c5,_0xc5f1c={'CHFwT':_0x38a3e8(0x11d)};return a0_0x10fba5['toString']()[_0x38a3e8(0x121)](_0xc5f1c[_0x38a3e8(0x13a)])[_0x38a3e8(0x133)]()[_0x38a3e8(0x12f)](a0_0x10fba5)['search'](_0xc5f1c['CHFwT']);});function a0_0x43c5(_0x8184e6,_0x14f07a){_0x8184e6=_0x8184e6-0xfb;const _0x212859=a0_0x26fa();let _0x10fba5=_0x212859[_0x8184e6];if(a0_0x43c5['iXJlqA']===undefined){var _0x26c131=function(_0x19a81b){const _0x4e607e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4784d2='',_0x4472cc='',_0x4819bd=_0x4784d2+_0x26c131;for(let _0x3b8906=0x0,_0x209c08,_0x133f58,_0x2ba831=0x0;_0x133f58=_0x19a81b['charAt'](_0x2ba831++);~_0x133f58&&(_0x209c08=_0x3b8906%0x4?_0x209c08*0x40+_0x133f58:_0x133f58,_0x3b8906++%0x4)?_0x4784d2+=_0x4819bd['charCodeAt'](_0x2ba831+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x209c08>>(-0x2*_0x3b8906&0x6)):_0x3b8906:0x0){_0x133f58=_0x4e607e['indexOf'](_0x133f58);}for(let _0x1a791d=0x0,_0x3e2012=_0x4784d2['length'];_0x1a791d<_0x3e2012;_0x1a791d++){_0x4472cc+='%'+('00'+_0x4784d2['charCodeAt'](_0x1a791d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4472cc);};a0_0x43c5['sqpfob']=_0x26c131,a0_0x43c5['wKXXyH']={},a0_0x43c5['iXJlqA']=!![];}const _0x26fa02=_0x212859[0x0],_0x43c565=_0x8184e6+_0x26fa02,_0x57df42=a0_0x43c5['wKXXyH'][_0x43c565];if(!_0x57df42){const _0x467bee=function(_0x26a3a3){this['oaNnqU']=_0x26a3a3,this['vLJeQG']=[0x1,0x0,0x0],this['cvtNWA']=function(){return'newState';},this['GEbnnW']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['rednFC']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x467bee['prototype']['PjTQiu']=function(){const _0x1f62de=new RegExp(this['GEbnnW']+this['rednFC']),_0xed7cc9=_0x1f62de['test'](this['cvtNWA']['toString']())?--this['vLJeQG'][0x1]:--this['vLJeQG'][0x0];return this['tKmLPQ'](_0xed7cc9);},_0x467bee['prototype']['tKmLPQ']=function(_0x522870){if(!Boolean(~_0x522870))return _0x522870;return this['NWkkZe'](this['oaNnqU']);},_0x467bee['prototype']['NWkkZe']=function(_0x59e85b){for(let _0x202d9f=0x0,_0x12ccf3=this['vLJeQG']['length'];_0x202d9f<_0x12ccf3;_0x202d9f++){this['vLJeQG']['push'](Math['round'](Math['random']())),_0x12ccf3=this['vLJeQG']['length'];}return _0x59e85b(this['vLJeQG'][0x0]);},new _0x467bee(a0_0x43c5)['PjTQiu'](),_0x10fba5=a0_0x43c5['sqpfob'](_0x10fba5),a0_0x43c5['wKXXyH'][_0x43c565]=_0x10fba5;}else _0x10fba5=_0x57df42;return _0x10fba5;}a0_0x10fba5();import{Formatter}from'../../utils/formatter.js';import{INDICATOR_PARAMS}from'../../utils/constants.js';const EXPLANATIONS={'rsi':a0_0x5b3d09(0x11e)+INDICATOR_PARAMS['RSI'][a0_0x5b3d09(0x135)],'stochastic':a0_0x5b3d09(0x109)+INDICATOR_PARAMS['STOCHASTIC'][a0_0x5b3d09(0xfd)]+',\x20D='+INDICATOR_PARAMS[a0_0x5b3d09(0x139)][a0_0x5b3d09(0x115)]+a0_0x5b3d09(0x148)+INDICATOR_PARAMS[a0_0x5b3d09(0x139)][a0_0x5b3d09(0x12a)],'macd':a0_0x5b3d09(0x123)+INDICATOR_PARAMS[a0_0x5b3d09(0x136)][a0_0x5b3d09(0x13c)]+a0_0x5b3d09(0x138)+INDICATOR_PARAMS['MACD']['slowPeriod']+a0_0x5b3d09(0x11c)+INDICATOR_PARAMS[a0_0x5b3d09(0x136)][a0_0x5b3d09(0x13b)],'adx':a0_0x5b3d09(0x142)+INDICATOR_PARAMS['ADX'][a0_0x5b3d09(0x10d)]+a0_0x5b3d09(0x110)+INDICATOR_PARAMS['ADX'][a0_0x5b3d09(0x10d)]+a0_0x5b3d09(0x10e)+INDICATOR_PARAMS[a0_0x5b3d09(0x116)][a0_0x5b3d09(0x135)],'momentum':a0_0x5b3d09(0x129)+INDICATOR_PARAMS[a0_0x5b3d09(0x128)][a0_0x5b3d09(0x135)],'cci':a0_0x5b3d09(0x141)+INDICATOR_PARAMS['CCI'][a0_0x5b3d09(0x135)],'williams':'Williams\x20%R\x0a\x0a📊\x20What\x20it\x20measures:\x0aCurrent\x20closing\x20price\x20relative\x20to\x20the\x20high-low\x20range.\x0a\x0a🔹\x203-Layer\x20Logic\x20for\x20BUY:\x0a\x20\x20Layer\x201\x20(CONDITION):\x20%R\x20<\x20-80\x20(oversold)\x0a\x20\x20Layer\x202\x20(TRIGGER):\x20Other\x20oscillators\x20provide\x20trigger\x0a\x20\x20Layer\x203\x20(CONFIRMATION):\x20ADX\x20+\x20momentum\x0a\x0a💡\x20Similar\x20to\x20Stochastic\x20but\x20more\x20sensitive\x20to\x20recent\x20price\x20action.\x0a\x0a📈\x20Parameters:\x20Period\x20=\x20'+INDICATOR_PARAMS[a0_0x5b3d09(0x118)][a0_0x5b3d09(0x135)],'trading-type':'Trading\x20Type\x20Philosophy\x0a\x0a🎯\x20Trading\x20type\x20is\x20a\x20FIRST-CLASS\x20concept\x20in\x20codifx.\x0aIt\x20fundamentally\x20changes\x20scanner\x20behavior:\x0a\x0a📊\x20SCALP\x20(1m/5m):\x0a\x20\x20-\x20Primary:\x201m,\x20Confirmation:\x205m\x0a\x20\x20-\x20Weights:\x2030%\x20trend,\x2070%\x20oscillator\x0a\x20\x20-\x20Min\x20score:\x2065\x0a\x20\x20-\x20Focus:\x20Quick\x20reversals,\x20high\x20oscillator\x20weight\x0a\x0a📊\x20DAY\x20(5m/15m):\x0a\x20\x20-\x20Primary:\x205m,\x20Confirmation:\x2015m\x0a\x20\x20-\x20Weights:\x2040%\x20trend,\x2060%\x20oscillator\x0a\x20\x20-\x20Min\x20score:\x2070\x0a\x20\x20-\x20Focus:\x20Intraday\x20swings,\x20balanced\x20approach\x0a\x0a📊\x20SWING\x20(1h/1d):\x0a\x20\x20-\x20Primary:\x201h,\x20Confirmation:\x201d\x0a\x20\x20-\x20Weights:\x2060%\x20trend,\x2040%\x20oscillator\x0a\x20\x20-\x20Min\x20score:\x2075\x0a\x20\x20-\x20Focus:\x20Multi-day\x20trends,\x20trend-heavy\x0a\x0a⚠️\x20CRITICAL:\x20Trading\x20type\x20is\x20NOT\x20just\x20a\x20label!\x0aIt\x20changes\x20timeframes,\x20weights,\x20and\x20thresholds.','3-layer':'3-Layer\x20Oscillator\x20Logic\x20(THE\x20CORE\x20RULE)\x0a\x0aThis\x20is\x20what\x20makes\x20codifx\x20different\x20from\x20naive\x20scanners.\x0a\x0a🔹\x20Layer\x201\x20-\x20CONDITION\x20(Zone\x20Detection):\x0a\x20\x20Detects\x20potential\x20reversal\x20zones\x0a\x20\x20Example:\x20RSI\x20<\x2030,\x20Stochastic\x20<\x2020\x0a\x20\x20⚠️\x20NO\x20SCORING\x20YET\x20-\x20just\x20zone\x20detection\x0a\x0a🔹\x20Layer\x202\x20-\x20TRIGGER\x20(Event\x20Detection):\x0a\x20\x20Detects\x20price\x20reaction\x20to\x20the\x20zone\x0a\x20\x20Example:\x20RSI\x20crosses\x20above\x2030,\x20Stoch\x20%K\x20crosses\x20%D\x0a\x20\x20✓\x20ENTRY\x20TIMING\x20STARTS\x20HERE\x0a\x0a🔹\x20Layer\x203\x20-\x20CONFIRMATION\x20(Validation):\x0a\x20\x20Validates\x20signal\x20quality\x0a\x20\x20Example:\x20ADX\x20>\x2020,\x20bullish\x20trend\x20on\x20higher\x20TF\x0a\x20\x20✓\x20SIGNAL\x20IS\x20INVALID\x20WITHOUT\x20THIS\x0a\x0a⚠️\x20CRITICAL\x20RULE:\x0aAt\x20least\x201\x20TRIGGER\x20+\x201\x20CONFIRMATION\x20required\x20for\x20valid\x20signal.\x0a\x0a💡\x20Why\x20this\x20matters:\x0a\x22Oversold\x20is\x20NOT\x20an\x20entry\x20signal.\x22\x0aWe\x20need\x20confirmation\x20that\x20price\x20is\x20actually\x20reversing.'};export async function explainCommand(_0x35f973){const _0x33c384=a0_0x5b3d09,_0x4c3017={'ursKg':_0x33c384(0x12c),'MPXjO':_0x33c384(0x119),'LXgLy':_0x33c384(0x143),'sIqKP':_0x33c384(0x125),'JIQWa':_0x33c384(0xfb),'lzmSn':_0x33c384(0x134),'tZQTr':_0x33c384(0x145),'UNCJy':_0x33c384(0x100),'rhCQi':_0x33c384(0x106),'ewDYQ':'\x0aConcepts:','pdRPN':'\x0aUsage:\x20codifx\x20explain\x20--indicator\x20<name>','ARxuw':_0x33c384(0x10c),'jykMZ':'Run\x20\x22codifx\x20explain\x22\x20to\x20see\x20available\x20topics.'};if(!_0x35f973[_0x33c384(0x101)]){const _0xbe833f=_0x4c3017[_0x33c384(0x108)]['split']('|');let _0x22a7ab=0x0;while(!![]){switch(_0xbe833f[_0x22a7ab++]){case'0':return;case'1':console['log'](_0x4c3017[_0x33c384(0x12e)]);continue;case'2':console[_0x33c384(0x10a)](_0x4c3017['LXgLy']);continue;case'3':console['log'](_0x4c3017[_0x33c384(0x102)]);continue;case'4':console[_0x33c384(0x10a)](Formatter[_0x33c384(0x144)](_0x33c384(0x137)));continue;case'5':console['log'](_0x4c3017[_0x33c384(0x10f)]);continue;case'6':console[_0x33c384(0x10a)](_0x4c3017['lzmSn']);continue;case'7':console[_0x33c384(0x10a)](_0x4c3017['tZQTr']);continue;case'8':console['log'](_0x4c3017[_0x33c384(0x103)]);continue;case'9':console['log'](_0x4c3017[_0x33c384(0x140)]);continue;case'10':console['log'](_0x4c3017[_0x33c384(0x11a)]);continue;case'11':console['log']('\x20\x20•\x203-layer');continue;case'12':console[_0x33c384(0x10a)](_0x4c3017[_0x33c384(0x146)]);continue;case'13':console['log'](_0x4c3017[_0x33c384(0x111)]);continue;}break;}}const _0x3d9df5=EXPLANATIONS[_0x35f973[_0x33c384(0x101)][_0x33c384(0x13d)]()];!_0x3d9df5&&(console['log'](Formatter[_0x33c384(0x113)](_0x33c384(0x105)+_0x35f973[_0x33c384(0x101)])),console[_0x33c384(0x10a)](_0x4c3017[_0x33c384(0x130)]),process['exit'](0x1)),console[_0x33c384(0x10a)](Formatter['section'](_0x33c384(0xff)+_0x35f973[_0x33c384(0x101)][_0x33c384(0x114)]())),console['log'](_0x3d9df5);}
|
|
@@ -1,55 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Profile command - Manage configuration profiles
|
|
3
|
-
*/
|
|
4
|
-
import { readdir } from "fs/promises";
|
|
5
|
-
import { join } from "path";
|
|
6
|
-
import { loadProfile, validateProfile } from "../../config/loader.js";
|
|
7
|
-
import { Formatter } from "../../utils/formatter.js";
|
|
8
|
-
export async function profileCommand(options) {
|
|
9
|
-
try {
|
|
10
|
-
if (options.list) {
|
|
11
|
-
// List available profiles
|
|
12
|
-
const packageRoot = new URL("../../../", import.meta.url).pathname;
|
|
13
|
-
const profileDir = join(packageRoot, "profiles");
|
|
14
|
-
const files = await readdir(profileDir);
|
|
15
|
-
const profiles = files.filter((f) => f.endsWith(".profile.json"));
|
|
16
|
-
console.log(Formatter.section("AVAILABLE PROFILES"));
|
|
17
|
-
profiles.forEach((p) => {
|
|
18
|
-
console.log(Formatter.info(p.replace(".profile.json", "")));
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
else if (options.show) {
|
|
22
|
-
// Show profile details - allow short names like "day" or full paths
|
|
23
|
-
let profilePath = options.show;
|
|
24
|
-
if (!profilePath.includes("/") && !profilePath.endsWith(".json")) {
|
|
25
|
-
// Short name provided, resolve to full path
|
|
26
|
-
profilePath = `profiles/${profilePath}.profile.json`;
|
|
27
|
-
}
|
|
28
|
-
const profile = await loadProfile(profilePath);
|
|
29
|
-
console.log(Formatter.section(`PROFILE: ${profile.tradingType.toUpperCase()}`));
|
|
30
|
-
console.log(JSON.stringify(profile, null, 2));
|
|
31
|
-
}
|
|
32
|
-
else if (options.validate) {
|
|
33
|
-
// Validate profile
|
|
34
|
-
const isValid = await validateProfile(options.validate);
|
|
35
|
-
if (isValid) {
|
|
36
|
-
console.log(Formatter.success("Profile is valid"));
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
console.log(Formatter.error("Profile validation failed"));
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.log(Formatter.error("Please specify an action: --list, --show, or --validate"));
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
if (error instanceof Error) {
|
|
50
|
-
console.error(Formatter.error(error.message));
|
|
51
|
-
}
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=profile.js.map
|
|
1
|
+
(function(_0x166fe1,_0x4d40d3){const _0x20aa42=a0_0x3f8d,_0x4a8ccb=_0x166fe1();while(!![]){try{const _0x1a7521=-parseInt(_0x20aa42(0xf7))/0x1+-parseInt(_0x20aa42(0xf9))/0x2+-parseInt(_0x20aa42(0x100))/0x3+parseInt(_0x20aa42(0x10a))/0x4*(-parseInt(_0x20aa42(0x111))/0x5)+parseInt(_0x20aa42(0xee))/0x6+parseInt(_0x20aa42(0x114))/0x7+parseInt(_0x20aa42(0x11b))/0x8*(parseInt(_0x20aa42(0x119))/0x9);if(_0x1a7521===_0x4d40d3)break;else _0x4a8ccb['push'](_0x4a8ccb['shift']());}catch(_0x2112be){_0x4a8ccb['push'](_0x4a8ccb['shift']());}}}(a0_0x5670,0x746dc));function a0_0x5670(){const _0x47abb1=['BgLZDa','A0ftv2G','ugXLyxnLihnWzwnPzNKGyw4Gywn0Aw9UoIaTlwXPC3qSic0TC2HVDYWGB3iGls12ywXPzgf0zq','yvH3DM8','C2HVDW','lI4VlI4VlI4V','EvP3Ae0','B3n2vKu','qujNsui','CMvWBgfJzq','DvvZz2W','lNbYB2zPBguUANnVBG','re9sDwu','y2rqq2O','mZa3mZm5ofb3wKXksW','y2LNsgO','rxPOtxG','Dg9vChbLCKnHC2u','Aw5MBW','ChjVzMLSzxmV','sezKwuy','qwzZBfC','Aev0B2e','mZe5otGXsgvfrwjm','zw5KC1DPDgG','mtG2ndK5ohbkBhjguq','A0LTB1m','zM9YrwfJAa','tM5pwM4','Cgf0Ag5HBwu','uhjVzMLSzsbPCYb2ywXPza','zxjYB3i','mJq0otG5m1LcBK10va','C3vJy2vZCW','B1HVtxa','lMPZB24','Dg9tDhjPBMC','Aw5JBhvKzxm','q2jwCwG','Bg9N','tKHwA2u','DMfSAwrHDgu','ndi4oda0uuPQvuzg','CKTNq24','y2Dpu3i','AeTbD0u','BwvZC2fNzq','y29UC3rYDwn0B3i','kcGOlISPkYKRksSK','mtbPrLboEwu','qw5rBuu','uhjVzMLSzsb2ywXPzgf0Aw9UigzHAwXLza','ndm0mZm5nxnbz0XLCq','ufjprKLmrtOG','C3rYAw5NAwz5','uNzQq1u','v2H1Bhi','mtq2ndKXodnIwe1uB3q','qwPTzNm','ogLPreDNzW','D0P6zKK','y0vUtw0','uMLLBwm','C2vJDgLVBG','s2vtAgy','zMLSDgvY','tNHfBfO','zvjMswS','C2vHCMnO','ww1TB3q','DhblAee','zhPADvy','z090zvu','qwfcrNa','yxbWBhK','CfnnvgK','zxHPDa','CvP1B3q'];a0_0x5670=function(){return _0x47abb1;};return a0_0x5670();}const a0_0x499b38=(function(){const _0x3a3924=a0_0x3f8d,_0x1f5523={'osvVE':_0x3a3924(0x113),'Ajmfs':_0x3a3924(0x110),'mPuDm':function(_0x22f82b,_0x348a34){return _0x22f82b!==_0x348a34;},'kASWh':_0x3a3924(0x117),'Ymmot':function(_0x3f265d,_0x1ead46){return _0x3f265d===_0x1ead46;},'dzZuV':'QfZaI','mDoFw':'Profile\x20is\x20valid','gSeaC':function(_0x34d1cf,_0x1cda2d){return _0x34d1cf===_0x1cda2d;},'tpKhA':_0x3a3924(0x10d)};let _0x488e00=!![];return function(_0x1df358,_0x1b21bc){const _0x1ef0e1=_0x3a3924,_0x5c27d7={'yZwhM':_0x1f5523['mDoFw']};if(_0x1f5523['gSeaC'](_0x1ef0e1(0x10b),_0x1f5523[_0x1ef0e1(0x126)]))_0x36a26d[_0x1ef0e1(0x107)](_0x1cc600[_0x1ef0e1(0x101)](_0x5c27d7[_0x1ef0e1(0x134)]));else{const _0x3a9ea3=_0x488e00?function(){const _0xca6e75=_0x1ef0e1,_0x3c8c32={'HFdYF':_0x1f5523[_0xca6e75(0x135)],'qZuot':_0x1f5523[_0xca6e75(0x11a)]};if(_0x1f5523['mPuDm'](_0xca6e75(0x117),_0x1f5523[_0xca6e75(0x12f)]))_0x3d72ef[_0xca6e75(0x107)](_0x562aea[_0xca6e75(0xff)](_0x3c8c32[_0xca6e75(0xf4)])),_0x15d9d8['exit'](0x1);else{if(_0x1b21bc){if(_0x1f5523[_0xca6e75(0x125)](_0x1f5523[_0xca6e75(0x127)],_0x1f5523[_0xca6e75(0x127)])){const _0x176208=_0x1b21bc[_0xca6e75(0x12a)](_0x1df358,arguments);return _0x1b21bc=null,_0x176208;}else return _0x3d903b[_0xca6e75(0x104)]()['search'](_0xca6e75(0x110))[_0xca6e75(0x104)]()[_0xca6e75(0x10f)](_0x3bec09)[_0xca6e75(0x124)](_0x3c8c32[_0xca6e75(0x12d)]);}}}:function(){};return _0x488e00=![],_0x3a9ea3;}};}()),a0_0x7783f0=a0_0x499b38(this,function(){const _0x53b150=a0_0x3f8d,_0x32d9a6={'KeShf':_0x53b150(0x110)};return a0_0x7783f0[_0x53b150(0x104)]()['search'](_0x32d9a6['KeShf'])[_0x53b150(0x104)]()[_0x53b150(0x10f)](a0_0x7783f0)[_0x53b150(0x124)](_0x32d9a6[_0x53b150(0x120)]);});a0_0x7783f0();import{readdir}from'fs/promises';import{join}from'path';import{loadProfile,validateProfile}from'../../config/loader.js';import{Formatter}from'../../utils/formatter.js';function a0_0x3f8d(_0x216572,_0x2e09d2){_0x216572=_0x216572-0xe9;const _0x11f181=a0_0x5670();let _0x7783f0=_0x11f181[_0x216572];if(a0_0x3f8d['thMoun']===undefined){var _0x499b38=function(_0x1bbc1e){const _0x28d46c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xa4f0ba='',_0x1a40d7='',_0x3ae56c=_0xa4f0ba+_0x499b38;for(let _0x140607=0x0,_0x5b19f2,_0x5cadba,_0x48df4f=0x0;_0x5cadba=_0x1bbc1e['charAt'](_0x48df4f++);~_0x5cadba&&(_0x5b19f2=_0x140607%0x4?_0x5b19f2*0x40+_0x5cadba:_0x5cadba,_0x140607++%0x4)?_0xa4f0ba+=_0x3ae56c['charCodeAt'](_0x48df4f+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x5b19f2>>(-0x2*_0x140607&0x6)):_0x140607:0x0){_0x5cadba=_0x28d46c['indexOf'](_0x5cadba);}for(let _0x3fe313=0x0,_0x2b2c48=_0xa4f0ba['length'];_0x3fe313<_0x2b2c48;_0x3fe313++){_0x1a40d7+='%'+('00'+_0xa4f0ba['charCodeAt'](_0x3fe313)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1a40d7);};a0_0x3f8d['NnHQcO']=_0x499b38,a0_0x3f8d['ZcrTXp']={},a0_0x3f8d['thMoun']=!![];}const _0x5670cb=_0x11f181[0x0],_0x3f8d26=_0x216572+_0x5670cb,_0x2493f2=a0_0x3f8d['ZcrTXp'][_0x3f8d26];if(!_0x2493f2){const _0x2f0d70=function(_0x36bc93){this['ygOMoA']=_0x36bc93,this['bkmPFP']=[0x1,0x0,0x0],this['GqIorp']=function(){return'newState';},this['ampCLC']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['Yyqjww']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2f0d70['prototype']['TRWhIq']=function(){const _0x2aff0b=new RegExp(this['ampCLC']+this['Yyqjww']),_0x15174b=_0x2aff0b['test'](this['GqIorp']['toString']())?--this['bkmPFP'][0x1]:--this['bkmPFP'][0x0];return this['ftGYSl'](_0x15174b);},_0x2f0d70['prototype']['ftGYSl']=function(_0x154025){if(!Boolean(~_0x154025))return _0x154025;return this['LvpdlU'](this['ygOMoA']);},_0x2f0d70['prototype']['LvpdlU']=function(_0x3685f6){for(let _0x4a8b9b=0x0,_0x558a19=this['bkmPFP']['length'];_0x4a8b9b<_0x558a19;_0x4a8b9b++){this['bkmPFP']['push'](Math['round'](Math['random']())),_0x558a19=this['bkmPFP']['length'];}return _0x3685f6(this['bkmPFP'][0x0]);},new _0x2f0d70(a0_0x3f8d)['TRWhIq'](),_0x7783f0=a0_0x3f8d['NnHQcO'](_0x7783f0),a0_0x3f8d['ZcrTXp'][_0x3f8d26]=_0x7783f0;}else _0x7783f0=_0x2493f2;return _0x7783f0;}export async function profileCommand(_0x1d31f4){const _0x1ae718=a0_0x3f8d,_0x4510ad={'cgOSr':_0x1ae718(0x11c),'DORue':_0x1ae718(0x118),'AnQmE':'.profile.json','oXoMp':_0x1ae718(0x130),'ABgIB':function(_0x3f147d,_0x1b5d03,_0x6a602e){return _0x3f147d(_0x1b5d03,_0x6a602e);},'NxElZ':function(_0x2e811b,_0x51559e){return _0x2e811b(_0x51559e);},'OlDVw':'AVAILABLE\x20PROFILES','cEnMm':function(_0x1108c8,_0x43ca40){return _0x1108c8===_0x43ca40;},'bdOAL':_0x1ae718(0x123),'EzhMx':_0x1ae718(0x103),'nmjOV':_0x1ae718(0x106),'uUsgl':_0x1ae718(0xef),'cdPCj':function(_0x104110,_0x50aaec){return _0x104110(_0x50aaec);},'hEtoa':function(_0x22f12c,_0x4bf00c){return _0x22f12c!==_0x4bf00c;},'gOteU':_0x1ae718(0xf5),'pSMTi':_0x1ae718(0xfe),'kImoS':_0x1ae718(0x108),'QJFuG':_0x1ae718(0x11e),'aXwvo':_0x1ae718(0x129)};try{if(_0x1d31f4[_0x1ae718(0x12e)]){const _0x2c3946=new URL(_0x1ae718(0x133),import.meta.url)[_0x1ae718(0xfd)],_0x5dd46e=_0x4510ad[_0x1ae718(0x136)](join,_0x2c3946,'profiles'),_0x6f6eb5=await _0x4510ad[_0x1ae718(0x122)](readdir,_0x5dd46e),_0x101a2c=_0x6f6eb5[_0x1ae718(0x121)](_0xf54fe5=>_0xf54fe5[_0x1ae718(0xf8)](_0x1ae718(0xeb)));console['log'](Formatter['section'](_0x4510ad['OlDVw'])),_0x101a2c[_0x1ae718(0xfb)](_0x4432a1=>{const _0x15f779=_0x1ae718;if(_0x4510ad[_0x15f779(0x10c)]===_0x4510ad[_0x15f779(0xec)]){const _0x13b775=_0x46dfae[_0x15f779(0x12a)](_0x3d77a8,arguments);return _0x3feff3=null,_0x13b775;}else console['log'](Formatter[_0x15f779(0xf2)](_0x4432a1[_0x15f779(0xe9)](_0x4510ad[_0x15f779(0x112)],'')));});}else{if(_0x1d31f4[_0x1ae718(0x132)]){if(_0x4510ad[_0x1ae718(0x11d)](_0x4510ad['bdOAL'],_0x1ae718(0xfc)))_0x4f701d[_0x1ae718(0x107)](_0x10fe09[_0x1ae718(0xff)](_0x4510ad[_0x1ae718(0x102)])),_0x5acdfd[_0x1ae718(0x12c)](0x1);else{let _0x4f8bc4=_0x1d31f4[_0x1ae718(0x132)];!_0x4f8bc4[_0x1ae718(0x105)]('/')&&!_0x4f8bc4[_0x1ae718(0xf8)](_0x4510ad[_0x1ae718(0xf0)])&&(_0x4510ad['nmjOV']===_0x4510ad[_0x1ae718(0xea)]?_0x19e9be[_0x1ae718(0x107)](_0x592954[_0x1ae718(0xf2)](_0x1832cf['replace'](_0x1ae718(0xeb),''))):_0x4f8bc4=_0x1ae718(0xf3)+_0x4f8bc4+_0x1ae718(0xeb));const _0x297c4b=await loadProfile(_0x4f8bc4);console['log'](Formatter[_0x1ae718(0x11f)](_0x1ae718(0x115)+_0x297c4b['tradingType'][_0x1ae718(0xf1)]())),console[_0x1ae718(0x107)](JSON[_0x1ae718(0x116)](_0x297c4b,null,0x2));}}else{if(_0x1d31f4[_0x1ae718(0x109)]){const _0x3bd5f6=await _0x4510ad[_0x1ae718(0xed)](validateProfile,_0x1d31f4['validate']);_0x3bd5f6?_0x4510ad[_0x1ae718(0xf6)](_0x4510ad[_0x1ae718(0x128)],_0x4510ad[_0x1ae718(0x128)])?_0x3ac75a['error'](_0xd3bdaa[_0x1ae718(0xff)](_0x4f17c6[_0x1ae718(0x10e)])):console['log'](Formatter[_0x1ae718(0x101)](_0x4510ad[_0x1ae718(0x12b)])):(console[_0x1ae718(0x107)](Formatter['error'](_0x1ae718(0x113))),process[_0x1ae718(0x12c)](0x1));}else _0x1ae718(0x108)!==_0x4510ad[_0x1ae718(0xfa)]?_0x3e02e0='profiles/'+_0x568322+_0x1ae718(0xeb):(console[_0x1ae718(0x107)](Formatter[_0x1ae718(0xff)](_0x4510ad[_0x1ae718(0x102)])),process[_0x1ae718(0x12c)](0x1));}}}catch(_0x1304f4){_0x1304f4 instanceof Error&&(_0x4510ad['QJFuG']!==_0x4510ad[_0x1ae718(0x131)]?console['error'](Formatter[_0x1ae718(0xff)](_0x1304f4['message'])):(_0x44cf36 instanceof _0x3805c6&&_0x5787b5[_0x1ae718(0xff)](_0x1b1907[_0x1ae718(0xff)](_0x42f9a4[_0x1ae718(0x10e)])),_0x26e11c[_0x1ae718(0x12c)](0x1))),process[_0x1ae718(0x12c)](0x1);}}
|