codifx 0.1.3 → 0.1.5
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/README.md +132 -75
- package/dist/cli/commands/scan.d.ts +2 -0
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +38 -4
- package/dist/cli/commands/scan.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/loader.d.ts +13 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +41 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/data/provider.d.ts +1 -1
- package/dist/data/provider.d.ts.map +1 -1
- package/dist/data/provider.js.map +1 -1
- package/dist/data/yahoo.d.ts +2 -1
- package/dist/data/yahoo.d.ts.map +1 -1
- package/dist/data/yahoo.js +16 -4
- package/dist/data/yahoo.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -62,6 +62,137 @@ codifx scan --symbols BBCA TLKM --html
|
|
|
62
62
|
codifx scan --symbols BBCA TLKM --log
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
### Custom Profiles & Watchlists
|
|
66
|
+
|
|
67
|
+
Create custom trading strategies with your own profiles and symbol lists.
|
|
68
|
+
|
|
69
|
+
#### Creating a Custom Profile
|
|
70
|
+
|
|
71
|
+
Create a JSON file (e.g., `my-strategy.profile.json`):
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"tradingType": "day",
|
|
76
|
+
"timeframes": {
|
|
77
|
+
"primary": "5m",
|
|
78
|
+
"confirmation": "15m"
|
|
79
|
+
},
|
|
80
|
+
"indicators": {
|
|
81
|
+
"trend": ["EMA10", "EMA20", "EMA50"],
|
|
82
|
+
"oscillators": ["RSI", "Stochastic", "MACD", "ADX"]
|
|
83
|
+
},
|
|
84
|
+
"weights": {
|
|
85
|
+
"trend": 40,
|
|
86
|
+
"oscillator": 60
|
|
87
|
+
},
|
|
88
|
+
"filters": {
|
|
89
|
+
"minVolume": 1000000,
|
|
90
|
+
"minADX": 20,
|
|
91
|
+
"atrMinPercent": 1.0,
|
|
92
|
+
"atrMaxPercent": 4.0
|
|
93
|
+
},
|
|
94
|
+
"scoring": {
|
|
95
|
+
"minScore": 70
|
|
96
|
+
},
|
|
97
|
+
"dataSource": {
|
|
98
|
+
"market": "IDX",
|
|
99
|
+
"provider": "yahoo"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Key Parameters:**
|
|
105
|
+
|
|
106
|
+
- `weights.trend` / `weights.oscillator` - Must total 100
|
|
107
|
+
- `scoring.minScore` - Higher = more selective (60-80 recommended)
|
|
108
|
+
- `filters.minVolume` - Daily volume threshold
|
|
109
|
+
- `filters.minADX` - Trend strength (15-25 typical)
|
|
110
|
+
|
|
111
|
+
#### Creating a Custom Watchlist
|
|
112
|
+
|
|
113
|
+
**Simple Array Format:**
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
["BBCA", "TLKM", "ASII", "UNVR", "ICBP"]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Object Format with Metadata:**
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"name": "Banking Sector",
|
|
124
|
+
"market": "IDX",
|
|
125
|
+
"symbols": ["BBCA", "BBNI", "BBRI", "BMRI", "BDMN", "BNGA"]
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Multi-Market Format:**
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
[
|
|
133
|
+
{
|
|
134
|
+
"name": "IDX Blue Chips",
|
|
135
|
+
"market": "IDX",
|
|
136
|
+
"symbols": ["BBCA", "TLKM", "ASII", "UNVR"]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"name": "US Tech",
|
|
140
|
+
"market": "NASDAQ",
|
|
141
|
+
"symbols": ["AAPL", "MSFT", "GOOGL", "NVDA"]
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### Usage Examples
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Use custom profile only
|
|
150
|
+
codifx scan --profile aggressive-day.json --symbols BBCA TLKM
|
|
151
|
+
|
|
152
|
+
# Use custom watchlist only
|
|
153
|
+
codifx scan --watchlist banking-sector.json --html
|
|
154
|
+
|
|
155
|
+
# Combine custom profile + watchlist
|
|
156
|
+
codifx scan \
|
|
157
|
+
--profile scalp.json \
|
|
158
|
+
--watchlist high-volume.json \
|
|
159
|
+
--date 2025-12-22 \
|
|
160
|
+
--html
|
|
161
|
+
|
|
162
|
+
# Built-in trade type + custom watchlist
|
|
163
|
+
codifx scan --trade-type swing --watchlist my-stocks.json
|
|
164
|
+
|
|
165
|
+
# All options combined
|
|
166
|
+
codifx scan \
|
|
167
|
+
--profile my-strategy.json \
|
|
168
|
+
--watchlist tech-stocks.json \
|
|
169
|
+
--direction buy \
|
|
170
|
+
--date 2025-12-20 \
|
|
171
|
+
--html \
|
|
172
|
+
--log
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Symbol Priority:** `--symbol` > `--symbols` > `--watchlist` > profile default
|
|
176
|
+
|
|
177
|
+
### Historical Backtesting
|
|
178
|
+
|
|
179
|
+
Test your strategy with historical data (max 7 days back):
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
# Scan as of specific date
|
|
183
|
+
codifx scan --symbols BBCA TLKM --date 2025-12-22
|
|
184
|
+
|
|
185
|
+
# Backtest with HTML dashboard
|
|
186
|
+
codifx scan --symbols BBCA --date 2025-12-20 --html --log
|
|
187
|
+
|
|
188
|
+
# Compare historical vs current
|
|
189
|
+
codifx scan --symbols BBCA --date 2025-12-20 --log
|
|
190
|
+
codifx scan --symbols BBCA --log # Today's scan
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Date Format**: `YYYY-MM-DD` (e.g., `2025-12-22`)
|
|
194
|
+
**Limitation**: Maximum 7 days back, cannot be in the future
|
|
195
|
+
|
|
65
196
|
### Profile Management
|
|
66
197
|
|
|
67
198
|
```bash
|
|
@@ -233,48 +364,6 @@ TLKM.JK ▼ SELL 74 SPECULATIVE Rp 3.470 Rp 3.430 Rp 3.470
|
|
|
233
364
|
- Volatility: PASS ✅
|
|
234
365
|
```
|
|
235
366
|
|
|
236
|
-
## 🔧 Configuration
|
|
237
|
-
|
|
238
|
-
### Profile Customization
|
|
239
|
-
|
|
240
|
-
Edit profile files in `profiles/` directory:
|
|
241
|
-
|
|
242
|
-
**File Structure:**
|
|
243
|
-
|
|
244
|
-
```
|
|
245
|
-
profiles/
|
|
246
|
-
├── day.profile.json
|
|
247
|
-
├── swing.profile.json
|
|
248
|
-
└── scalp.profile.json
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
**Customizable Parameters:**
|
|
252
|
-
|
|
253
|
-
1. **Timeframes**
|
|
254
|
-
|
|
255
|
-
- `primary`: 1m, 5m, 15m, 1h, 1d
|
|
256
|
-
- `confirmation`: 5m, 15m, 1h, 1d, 1w
|
|
257
|
-
|
|
258
|
-
2. **Weights** (must sum to 100)
|
|
259
|
-
|
|
260
|
-
- `trend`: 0-100
|
|
261
|
-
- `oscillator`: 0-100
|
|
262
|
-
|
|
263
|
-
3. **Filters**
|
|
264
|
-
|
|
265
|
-
- `minVolume`: Minimum average volume
|
|
266
|
-
- `minADX`: Minimum ADX for trend strength (0-100)
|
|
267
|
-
- `atrMinPercent`: Minimum ATR% for volatility
|
|
268
|
-
- `atrMaxPercent`: Maximum ATR% for volatility
|
|
269
|
-
|
|
270
|
-
4. **Scoring**
|
|
271
|
-
|
|
272
|
-
- `minScore`: Minimum score threshold (0-100)
|
|
273
|
-
|
|
274
|
-
5. **Indicators**
|
|
275
|
-
- `trend`: ["SMA20", "EMA10", "EMA20", "EMA50", "HMA9", "VWMA20"]
|
|
276
|
-
- `oscillators`: ["RSI", "MACD", "Stochastic", "ADX", "CCI", "Williams"]
|
|
277
|
-
|
|
278
367
|
## 🎯 Scoring System
|
|
279
368
|
|
|
280
369
|
### Base Score Calculation
|
|
@@ -295,39 +384,7 @@ Final Score = (Trend × Weight_Trend) + (Oscillator × Weight_Oscillator) + Bonu
|
|
|
295
384
|
- **BUY/SELL**: Score ≥ 75
|
|
296
385
|
- **SPECULATIVE**: Score ≥ 65 (or profile minScore)
|
|
297
386
|
|
|
298
|
-
##
|
|
299
|
-
|
|
300
|
-
### Core Components
|
|
301
|
-
|
|
302
|
-
```
|
|
303
|
-
src/
|
|
304
|
-
├── cli/ # Command-line interface
|
|
305
|
-
│ ├── index.ts # CLI entry point
|
|
306
|
-
│ └── commands/ # Command implementations
|
|
307
|
-
│ ├── scan.ts # Main scanning logic
|
|
308
|
-
│ ├── profile.ts # Profile management
|
|
309
|
-
│ └── validate.ts# Validation tools
|
|
310
|
-
├── core/ # Analysis engines
|
|
311
|
-
│ ├── engine.ts # Main scanner engine
|
|
312
|
-
│ ├── trend-engine.ts # Trend analysis
|
|
313
|
-
│ ├── oscillator-engine.ts# Oscillator analysis
|
|
314
|
-
│ ├── scoring.ts # Scoring & rating system
|
|
315
|
-
│ └── filters.ts # Volume & volatility filters
|
|
316
|
-
├── indicators/ # Technical indicators
|
|
317
|
-
│ ├── trend/ # SMA, EMA, HMA, VWMA
|
|
318
|
-
│ └── oscillator/ # RSI, MACD, Stochastic, ADX, CCI, Williams
|
|
319
|
-
├── data/ # Data providers
|
|
320
|
-
│ ├── yahoo.ts # Yahoo Finance integration
|
|
321
|
-
│ └── provider.ts # Base data provider
|
|
322
|
-
├── utils/ # Utilities
|
|
323
|
-
│ ├── html-generator.ts # HTML dashboard generator
|
|
324
|
-
│ ├── logger.ts # Detailed logging
|
|
325
|
-
│ ├── formatter.ts # Output formatting
|
|
326
|
-
│ └── levels.ts # Trading levels calculator
|
|
327
|
-
└── types/ # TypeScript types
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
## 📝 Advanced Usage
|
|
387
|
+
## Advanced Usage
|
|
331
388
|
|
|
332
389
|
### Custom Scan with All Options
|
|
333
390
|
|
|
@@ -6,6 +6,7 @@ import { type Market } from "../../utils/symbols.js";
|
|
|
6
6
|
export declare function scanCommand(options: {
|
|
7
7
|
tradeType?: TradingType;
|
|
8
8
|
profile?: string;
|
|
9
|
+
watchlist?: string;
|
|
9
10
|
symbol?: string;
|
|
10
11
|
symbols?: string[];
|
|
11
12
|
market?: Market;
|
|
@@ -13,5 +14,6 @@ export declare function scanCommand(options: {
|
|
|
13
14
|
verbose?: boolean;
|
|
14
15
|
log?: string | boolean;
|
|
15
16
|
html?: string | boolean;
|
|
17
|
+
date?: string;
|
|
16
18
|
}): Promise<void>;
|
|
17
19
|
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAOvD,OAAO,EAAoB,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAMtE,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACvC,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAOvD,OAAO,EAAoB,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAMtE,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACvC,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,iBAyXA"}
|
|
@@ -15,6 +15,27 @@ import { HTMLGenerator } from "../../utils/html-generator.js";
|
|
|
15
15
|
export async function scanCommand(options) {
|
|
16
16
|
const spinner = ora("Initializing scanner").start();
|
|
17
17
|
try {
|
|
18
|
+
// Validate and parse date parameter
|
|
19
|
+
let targetDate;
|
|
20
|
+
if (options.date) {
|
|
21
|
+
targetDate = new Date(options.date);
|
|
22
|
+
// Validate date format
|
|
23
|
+
if (isNaN(targetDate.getTime())) {
|
|
24
|
+
throw new Error("Invalid date format. Use YYYY-MM-DD (e.g., 2025-12-22)");
|
|
25
|
+
}
|
|
26
|
+
// Validate max 7 days back
|
|
27
|
+
const today = new Date();
|
|
28
|
+
today.setHours(0, 0, 0, 0); // Reset to start of day
|
|
29
|
+
targetDate.setHours(23, 59, 59, 999); // Set to end of day
|
|
30
|
+
const daysDiff = Math.floor((today.getTime() - targetDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
31
|
+
if (daysDiff < 0) {
|
|
32
|
+
throw new Error("Date cannot be in the future");
|
|
33
|
+
}
|
|
34
|
+
if (daysDiff > 7) {
|
|
35
|
+
throw new Error("Date cannot be more than 7 days back");
|
|
36
|
+
}
|
|
37
|
+
spinner.info(`Historical scan for date: ${options.date}`);
|
|
38
|
+
}
|
|
18
39
|
// Validate direction parameter
|
|
19
40
|
const directionFilter = options.direction?.toLowerCase() || "both";
|
|
20
41
|
if (!["buy", "sell", "both"].includes(directionFilter)) {
|
|
@@ -40,13 +61,28 @@ export async function scanCommand(options) {
|
|
|
40
61
|
}
|
|
41
62
|
spinner.succeed("Data provider ready");
|
|
42
63
|
// Get symbols to scan
|
|
64
|
+
// Priority: --symbol > --symbols > --watchlist > profile.dataSource
|
|
43
65
|
let symbols = [];
|
|
66
|
+
let market = options.market || profile.dataSource?.market || "NASDAQ";
|
|
44
67
|
if (options.symbol) {
|
|
45
68
|
symbols = [options.symbol];
|
|
46
69
|
}
|
|
47
70
|
else if (options.symbols) {
|
|
48
71
|
symbols = options.symbols;
|
|
49
72
|
}
|
|
73
|
+
else if (options.watchlist) {
|
|
74
|
+
// Load from watchlist file
|
|
75
|
+
const { loadWatchlist } = await import("../../config/loader.js");
|
|
76
|
+
const watchlist = await loadWatchlist(options.watchlist);
|
|
77
|
+
symbols = watchlist.symbols;
|
|
78
|
+
// Use market from watchlist if not specified via --market
|
|
79
|
+
if (!options.market && watchlist.market) {
|
|
80
|
+
market = watchlist.market;
|
|
81
|
+
}
|
|
82
|
+
if (watchlist.name) {
|
|
83
|
+
spinner.info(`Loaded watchlist: ${watchlist.name} (${symbols.length} symbols)`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
50
86
|
else {
|
|
51
87
|
// Use default symbols from profile or fallback
|
|
52
88
|
symbols = profile.dataSource?.defaultSymbols || [
|
|
@@ -59,8 +95,6 @@ export async function scanCommand(options) {
|
|
|
59
95
|
if (!symbols || symbols.length === 0) {
|
|
60
96
|
symbols = ["AAPL", "MSFT", "GOOGL", "AMZN", "TSLA"];
|
|
61
97
|
}
|
|
62
|
-
// Get market from options or profile
|
|
63
|
-
const market = options.market || profile.dataSource?.market || "NASDAQ";
|
|
64
98
|
// Normalize symbols with market suffix
|
|
65
99
|
symbols = normalizeSymbols(symbols, market);
|
|
66
100
|
if (market !== "NASDAQ") {
|
|
@@ -109,8 +143,8 @@ export async function scanCommand(options) {
|
|
|
109
143
|
progressBar.update(i, { status: `Analyzing ${symbol}...` });
|
|
110
144
|
try {
|
|
111
145
|
// Fetch data
|
|
112
|
-
const primaryData = await provider.fetchOHLCV(symbol, primaryTF, dataCount);
|
|
113
|
-
const confirmationData = await provider.fetchOHLCV(symbol, confirmationTF, dataCount);
|
|
146
|
+
const primaryData = await provider.fetchOHLCV(symbol, primaryTF, dataCount, targetDate);
|
|
147
|
+
const confirmationData = await provider.fetchOHLCV(symbol, confirmationTF, dataCount, targetDate);
|
|
114
148
|
// Analyze
|
|
115
149
|
const analysis = await ScannerEngine.analyze(symbol, primaryData, confirmationData, profile);
|
|
116
150
|
if (analysis.signal) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAe,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAUjC;IACG,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAA;IAEnD,IAAI,CAAC;QACD,+BAA+B;QAC/B,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,MAAM,CAAA;QAClE,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACX,sBAAsB,OAAO,CAAC,SAAS,oCAAoC,CAC9E,CAAA;QACL,CAAC;QAED,eAAe;QACf,IAAI,WAA+B,CAAA;QACnC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,WAAW,GAAG,OAAO,CAAC,OAAO,CAAA;QACjC,CAAC;aAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACzD,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAChC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAA;QAC9C,OAAO,CAAC,OAAO,CAAC,mBAAmB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QAEzD,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAA;QAE3C,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACzD,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QAEtC,sBAAsB;QACtB,IAAI,OAAO,GAAa,EAAE,CAAA;QAC1B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC7B,CAAC;aAAM,CAAC;YACJ,+CAA+C;YAC/C,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,cAAc,IAAI;gBAC5C,MAAM;gBACN,MAAM;gBACN,OAAO;aACV,CAAA;QACL,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACvD,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAA;QAEvE,uCAAuC;QACvC,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC3C,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAA;QACpD,CAAC;QAED,8BAA8B;QAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,mBAAmB,CAClD,OAAO,CAAC,WAAW,CACtB,CAAA;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,wBAAwB,CAC5D,OAAO,CAAC,WAAW,CACtB,CAAA;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEf,iCAAiC;QACjC,IAAI,MAAM,GAAsB,IAAI,CAAA;QACpC,IAAI,OAAO,GAAkB,IAAI,CAAA;QAEjC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;YACzB,OAAO;gBACH,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;oBAC3B,CAAC,CAAC,OAAO,CAAC,GAAG;oBACb,CAAC,CAAC,iBAAiB,EAAE,CAAA;YAC7B,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,CAAC,QAAQ,CACX,OAAO,CAAC,WAAW,EACnB;oBACI,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;oBACnC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY;iBAChD,EACD,OAAO,CACV,CAAA;YACL,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,MAAM,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAA;QACnC,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEhC,sBAAsB;QACtB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QAChD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;YAC1C,MAAM,EAAE,wEAAwE;YAChF,eAAe,EAAE,QAAQ;YACzB,iBAAiB,EAAE,QAAQ;YAC3B,UAAU,EAAE,IAAI;SACnB,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAEzB,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,MAAM,KAAK,EAAE,CAAC,CAAA;YAE3D,IAAI,CAAC;gBACD,aAAa;gBACb,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,UAAU,CACzC,MAAM,EACN,SAAS,EACT,SAAS,CACZ,CAAA;gBACD,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAC9C,MAAM,EACN,cAAc,EACd,SAAS,CACZ,CAAA;gBAED,UAAU;gBACV,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CACxC,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,OAAO,CACV,CAAA;gBAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClB,mCAAmC;oBACnC,MAAM,aAAa,GACf,eAAe,KAAK,MAAM;wBAC1B,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;4BACnC,eAAe,CAAA;oBAEvB,IAAI,aAAa,EAAE,CAAC;wBAChB,WAAW,EAAE,CAAA;wBACb,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;4BACtB,MAAM,EAAE,KAAK,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,SAAS,gBAAgB;yBACpE,CAAC,CAAA;wBACF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;wBAE7B,IAAI,MAAM,EAAE,CAAC;4BACT,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;wBACrC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;4BACtB,MAAM,EAAE,GAAG,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,SAAS,aAAa;yBAC/D,CAAC,CAAA;oBACN,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;wBACtB,MAAM,EAAE,GAAG,MAAM,aAAa;qBACjC,CAAC,CAAA;oBAEF,IAAI,MAAM,EAAE,CAAC;wBACT,MAAM,CAAC,WAAW,CACd,MAAM,EACN,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC9B,oBAAoB,EACxB;4BACI,UAAU,EAAE,QAAQ,CAAC,UAAU;4BAC/B,eAAe,EAAE,QAAQ,CAAC,eAAe;4BACzC,UAAU,EAAE,QAAQ,CAAC,UAAU;4BAC/B,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;4BAC7C,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,eAAe,EAAE,QAAQ,CAAC,eAAe;4BACzC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;4BAC7C,aAAa,EAAE,QAAQ,CAAC,aAAa;4BACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;yBAC1C,CACJ,CAAA;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBACzB,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;wBACtB,MAAM,EAAE,KAAK,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE;qBAC1C,CAAC,CAAA;oBAEF,IAAI,MAAM,EAAE,CAAC;wBACT,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;oBAC1C,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;QAC1D,WAAW,CAAC,IAAI,EAAE,CAAA;QAElB,oBAAoB;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;QACjD,MAAM,eAAe,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAE1D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,eAAe,GAAG,CAAC,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,IAAI,YAAY,EAAE,CAAC,CAAA;QAClE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CACP,sBAAsB,CAClB,CAAC,WAAW,GAAG,YAAY,CAAC;gBAC5B,GAAG,CACN,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAClB,CAAA;QACL,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;YACtD,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,MAAM,CAAC,UAAU,CACnB,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;oBAC3B,CAAC,CAAC,OAAO,CAAC,GAAG;oBACb,CAAC,CAAC,iBAAiB,EAAE,CAC5B,CAAA;YACL,CAAC;YACD,OAAM;QACV,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAE5B,oCAAoC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAE9B,OAAO,CAAC,GAAG,CACP,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE,CAC9F,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAE5B,gCAAgC;QAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACvC,MAAM,SAAS,GAAG,CACd,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAClD,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAEvC,gBAAgB;YAChB,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;gBAClC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAChB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAA;gBAC5D,CAAC;gBACD,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;YACnC,CAAC,CAAA;YAED,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACtD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAC5D,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACpD,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAE9C,OAAO,CAAC,GAAG,CACP,GAAG,MAAM,IAAI,SAAS,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,IAAI,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAC7G,CAAA;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,4CAA4C;QAC5C,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAA;YAC7D,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,CAAC;QAED,oDAAoD;QACpD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC;gBACD,MAAM,QAAQ,GACV,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;oBACnD,CAAC,CAAC,OAAO,CAAC,IAAI;oBACd,CAAC,CAAC,SAAS,CAAA;gBAEnB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,iBAAiB,CACpD,OAAO,EACP,QAAQ,CACX,CAAA;gBAED,MAAM,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,4CAA4C;YAChD,CAAC;QACL,CAAC;QAED,sBAAsB;QACtB,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YACjD,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC3B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -29,8 +29,12 @@ program
|
|
|
29
29
|
.description("Scan live market data for trading signals")
|
|
30
30
|
.option("-s, --symbol <symbol>", "Single symbol to scan")
|
|
31
31
|
.option("-l, --symbols <symbols...>", "Multiple symbols to scan")
|
|
32
|
+
.option("-t, --trade-type <type>", "Trading type: scalp, day, or swing")
|
|
33
|
+
.option("-p, --profile <path>", "Path to custom profile configuration")
|
|
34
|
+
.option("-w, --watchlist <path>", "Path to custom watchlist JSON file")
|
|
32
35
|
.option("-m, --market <market>", "Market: IDX, NASDAQ, NYSE, CRYPTO", "IDX")
|
|
33
36
|
.option("-d, --direction <direction>", "Filter by signal direction: buy, sell, or both", "both")
|
|
37
|
+
.option("--date <date>", "Historical date for backtesting (YYYY-MM-DD, max 7 days back)")
|
|
34
38
|
.option("--log [filepath]", "Save detailed scan log to file (auto-location if no path specified)")
|
|
35
39
|
.option("--html [filepath]", "Generate HTML dashboard and open in browser")
|
|
36
40
|
.action(async (options) => {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/loader.d.ts
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
* Configuration profile loader
|
|
3
3
|
*/
|
|
4
4
|
import type { Profile } from "../types/index.js";
|
|
5
|
+
export interface WatchlistFile {
|
|
6
|
+
name?: string;
|
|
7
|
+
market?: string;
|
|
8
|
+
symbols: string[];
|
|
9
|
+
}
|
|
5
10
|
/**
|
|
6
11
|
* Load and validate a configuration profile
|
|
7
12
|
*/
|
|
@@ -14,4 +19,12 @@ export declare function validateProfile(profilePath: string): Promise<boolean>;
|
|
|
14
19
|
* Get profile path by trading type
|
|
15
20
|
*/
|
|
16
21
|
export declare function getProfilePathByType(tradingType: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Load watchlist from JSON file
|
|
24
|
+
* Supports multiple formats:
|
|
25
|
+
* - Simple array: ["BBCA", "TLKM"]
|
|
26
|
+
* - Object: { "market": "IDX", "symbols": [...] }
|
|
27
|
+
* - Multi-market array: [{ "market": "IDX", "symbols": [...] }, ...]
|
|
28
|
+
*/
|
|
29
|
+
export declare function loadWatchlist(path: string): Promise<WatchlistFile>;
|
|
17
30
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB;AAKD;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4DxE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwCxE"}
|
package/dist/config/loader.js
CHANGED
|
@@ -80,4 +80,45 @@ export function getProfilePathByType(tradingType) {
|
|
|
80
80
|
const packageRoot = new URL("../../", import.meta.url).pathname;
|
|
81
81
|
return join(packageRoot, PROFILE_DIR, `${tradingType}.profile.json`);
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Load watchlist from JSON file
|
|
85
|
+
* Supports multiple formats:
|
|
86
|
+
* - Simple array: ["BBCA", "TLKM"]
|
|
87
|
+
* - Object: { "market": "IDX", "symbols": [...] }
|
|
88
|
+
* - Multi-market array: [{ "market": "IDX", "symbols": [...] }, ...]
|
|
89
|
+
*/
|
|
90
|
+
export async function loadWatchlist(path) {
|
|
91
|
+
try {
|
|
92
|
+
const content = await readFile(path, "utf-8");
|
|
93
|
+
const data = JSON.parse(content);
|
|
94
|
+
// Simple array format
|
|
95
|
+
if (Array.isArray(data) && typeof data[0] === "string") {
|
|
96
|
+
return { symbols: data };
|
|
97
|
+
}
|
|
98
|
+
// Multi-market array (use first watchlist)
|
|
99
|
+
if (Array.isArray(data) && data[0]?.symbols) {
|
|
100
|
+
const first = data[0];
|
|
101
|
+
return {
|
|
102
|
+
name: first.name,
|
|
103
|
+
market: first.market,
|
|
104
|
+
symbols: first.symbols,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// Single watchlist object
|
|
108
|
+
if (data.symbols && Array.isArray(data.symbols)) {
|
|
109
|
+
return {
|
|
110
|
+
name: data.name,
|
|
111
|
+
market: data.market,
|
|
112
|
+
symbols: data.symbols,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
throw new Error("Invalid watchlist format. Expected array of symbols or object with 'symbols' property");
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (error instanceof Error) {
|
|
119
|
+
throw new Error(`Failed to load watchlist from ${path}: ${error.message}`);
|
|
120
|
+
}
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
83
124
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/data/provider.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { DataProvider };
|
|
|
8
8
|
*/
|
|
9
9
|
export declare abstract class BaseDataProvider implements DataProvider {
|
|
10
10
|
abstract name: string;
|
|
11
|
-
abstract fetchOHLCV(symbol: string, timeframe: Timeframe, limit: number): Promise<OHLCV[]>;
|
|
11
|
+
abstract fetchOHLCV(symbol: string, timeframe: Timeframe, limit: number, targetDate?: Date): Promise<OHLCV[]>;
|
|
12
12
|
abstract isAvailable(): Promise<boolean>;
|
|
13
13
|
/**
|
|
14
14
|
* Validate OHLCV data integrity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/data/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB;;GAEG;AACH,8BAAsB,gBAAiB,YAAW,YAAY;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,QAAQ,CAAC,UAAU,CACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/data/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB;;GAEG;AACH,8BAAsB,gBAAiB,YAAW,YAAY;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,QAAQ,CAAC,UAAU,CACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,IAAI,GAClB,OAAO,CAAC,KAAK,EAAE,CAAC;IAEnB,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAExC;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO;IAe9C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;CAG7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/data/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,OAAgB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/data/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,OAAgB,gBAAgB;IAYlC;;OAEG;IACO,YAAY,CAAC,IAAa;QAChC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAE5C,OAAO,IAAI,CAAC,KAAK,CACb,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,SAAS,GAAG,CAAC;YACpB,MAAM,CAAC,IAAI,GAAG,CAAC;YACf,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;YAC1B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK;YAC3B,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI;YACzB,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK;YAC1B,MAAM,CAAC,MAAM,IAAI,CAAC,CACzB,CAAA;IACL,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,IAAa;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;IACzD,CAAC;CACJ"}
|
package/dist/data/yahoo.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { BaseDataProvider } from "./provider.js";
|
|
|
6
6
|
export declare class YahooFinanceProvider extends BaseDataProvider {
|
|
7
7
|
name: string;
|
|
8
8
|
private baseUrl;
|
|
9
|
-
fetchOHLCV(symbol: string, timeframe: Timeframe, limit?: number): Promise<OHLCV[]>;
|
|
9
|
+
fetchOHLCV(symbol: string, timeframe: Timeframe, limit?: number, targetDate?: Date): Promise<OHLCV[]>;
|
|
10
10
|
isAvailable(): Promise<boolean>;
|
|
11
11
|
/**
|
|
12
12
|
* Convert our timeframe format to Yahoo Finance interval
|
|
@@ -14,6 +14,7 @@ export declare class YahooFinanceProvider extends BaseDataProvider {
|
|
|
14
14
|
private convertTimeframe;
|
|
15
15
|
/**
|
|
16
16
|
* Calculate appropriate period range based on timeframe and limit
|
|
17
|
+
* If targetDate is provided, calculate from that date instead of today
|
|
17
18
|
*/
|
|
18
19
|
private calculatePeriod;
|
|
19
20
|
}
|
package/dist/data/yahoo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yahoo.d.ts","sourceRoot":"","sources":["../../src/data/yahoo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,qBAAa,oBAAqB,SAAQ,gBAAgB;IACtD,IAAI,SAAU;IACd,OAAO,CAAC,OAAO,CAAsD;IAE/D,UAAU,CACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,KAAK,GAAE,MAAY,
|
|
1
|
+
{"version":3,"file":"yahoo.d.ts","sourceRoot":"","sources":["../../src/data/yahoo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,qBAAa,oBAAqB,SAAQ,gBAAgB;IACtD,IAAI,SAAU;IACd,OAAO,CAAC,OAAO,CAAsD;IAE/D,UAAU,CACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,KAAK,GAAE,MAAY,EACnB,UAAU,CAAC,EAAE,IAAI,GAClB,OAAO,CAAC,KAAK,EAAE,CAAC;IA0Db,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAarC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;IACH,OAAO,CAAC,eAAe;CA0D1B"}
|
package/dist/data/yahoo.js
CHANGED
|
@@ -6,10 +6,10 @@ import { BaseDataProvider } from "./provider.js";
|
|
|
6
6
|
export class YahooFinanceProvider extends BaseDataProvider {
|
|
7
7
|
name = "yahoo";
|
|
8
8
|
baseUrl = "https://query1.finance.yahoo.com/v8/finance/chart";
|
|
9
|
-
async fetchOHLCV(symbol, timeframe, limit = 200) {
|
|
9
|
+
async fetchOHLCV(symbol, timeframe, limit = 200, targetDate) {
|
|
10
10
|
try {
|
|
11
11
|
const interval = this.convertTimeframe(timeframe);
|
|
12
|
-
const period = this.calculatePeriod(timeframe, limit);
|
|
12
|
+
const period = this.calculatePeriod(timeframe, limit, targetDate);
|
|
13
13
|
const url = `${this.baseUrl}/${symbol}`;
|
|
14
14
|
const response = await axios.get(url, {
|
|
15
15
|
params: {
|
|
@@ -30,10 +30,15 @@ export class YahooFinanceProvider extends BaseDataProvider {
|
|
|
30
30
|
volume: quote.volume[index],
|
|
31
31
|
}));
|
|
32
32
|
// Filter out null values and validate
|
|
33
|
-
|
|
33
|
+
let validData = data.filter((candle) => candle.open !== null &&
|
|
34
34
|
candle.high !== null &&
|
|
35
35
|
candle.low !== null &&
|
|
36
36
|
candle.close !== null);
|
|
37
|
+
// Filter by targetDate if provided
|
|
38
|
+
if (targetDate) {
|
|
39
|
+
const maxTimestamp = targetDate.getTime();
|
|
40
|
+
validData = validData.filter((candle) => candle.timestamp <= maxTimestamp);
|
|
41
|
+
}
|
|
37
42
|
if (!this.validateData(validData)) {
|
|
38
43
|
throw new Error("Invalid data received from Yahoo Finance");
|
|
39
44
|
}
|
|
@@ -74,8 +79,9 @@ export class YahooFinanceProvider extends BaseDataProvider {
|
|
|
74
79
|
}
|
|
75
80
|
/**
|
|
76
81
|
* Calculate appropriate period range based on timeframe and limit
|
|
82
|
+
* If targetDate is provided, calculate from that date instead of today
|
|
77
83
|
*/
|
|
78
|
-
calculatePeriod(timeframe, limit) {
|
|
84
|
+
calculatePeriod(timeframe, limit, targetDate) {
|
|
79
85
|
// Estimate trading hours per day (Indonesian market: ~6.5 hours)
|
|
80
86
|
const tradingHoursPerDay = 6.5;
|
|
81
87
|
// Calculate approximate days needed based on timeframe
|
|
@@ -106,6 +112,12 @@ export class YahooFinanceProvider extends BaseDataProvider {
|
|
|
106
112
|
}
|
|
107
113
|
// Add 50% buffer for weekends, holidays, and data gaps
|
|
108
114
|
daysNeeded = Math.ceil(daysNeeded * 1.5);
|
|
115
|
+
// If targetDate provided, add days from targetDate to today
|
|
116
|
+
if (targetDate) {
|
|
117
|
+
const today = new Date();
|
|
118
|
+
const daysSinceTarget = Math.floor((today.getTime() - targetDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
119
|
+
daysNeeded += daysSinceTarget;
|
|
120
|
+
}
|
|
109
121
|
// Map to Yahoo Finance period strings
|
|
110
122
|
if (daysNeeded <= 1)
|
|
111
123
|
return "1d";
|
package/dist/data/yahoo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yahoo.js","sourceRoot":"","sources":["../../src/data/yahoo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,OAAO,oBAAqB,SAAQ,gBAAgB;IACtD,IAAI,GAAG,OAAO,CAAA;IACN,OAAO,GAAG,mDAAmD,CAAA;IAErE,KAAK,CAAC,UAAU,CACZ,MAAc,EACd,SAAoB,EACpB,QAAgB,GAAG;
|
|
1
|
+
{"version":3,"file":"yahoo.js","sourceRoot":"","sources":["../../src/data/yahoo.ts"],"names":[],"mappings":"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"}
|