@backtest-kit/signals 13.6.0 โ 14.1.0
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 +114 -220
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# ๐ @backtest-kit/signals
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> Multi-timeframe technical analysis for AI trading on [backtest-kit](https://www.npmjs.com/package/backtest-kit). Computes 50+ indicators across four timeframes plus order-book depth, and emits LLM-ready markdown reports โ drop the whole market context into an LLM prompt in one call.
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
@@ -10,297 +10,191 @@
|
|
|
10
10
|
[](https://npmjs.org/package/@backtest-kit/signals)
|
|
11
11
|
[]()
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
๐ **[Backtest Kit Docs](https://backtest-kit.github.io/documents/article_07_ai_news_trading_signals.html)** | ๐ **[GitHub](https://github.com/tripolskypetr/backtest-kit)**
|
|
16
|
-
|
|
17
|
-
> **New to backtest-kit?** The fastest way to get a real, production-ready setup is to clone the [reference implementation](https://github.com/tripolskypetr/backtest-kit/tree/master/example) โ a fully working news-sentiment AI trading system with LLM forecasting, multi-timeframe data, and a documented February 2026 backtest. Start there instead of from scratch.
|
|
18
|
-
|
|
19
|
-
## โจ Features
|
|
20
|
-
|
|
21
|
-
- ๐ **Multi-Timeframe Analysis**: 1m, 15m, 30m, 1h with synchronized indicator computation
|
|
22
|
-
- ๐ฏ **50+ Technical Indicators**: RSI, MACD, Bollinger Bands, Stochastic, ADX, ATR, CCI, Fibonacci, Support/Resistance
|
|
23
|
-
- ๐ **Order Book Analysis**: Bid/ask depth, spread, liquidity imbalance, top 20 levels
|
|
24
|
-
- ๐ค **AI-Ready Output**: Markdown reports formatted for LLM context injection
|
|
25
|
-
- โก **Performance Optimized**: Intelligent caching with configurable TTL per timeframe
|
|
26
|
-
- ๐งฎ **Custom Algorithms**: Fibonacci retracements, support/resistance detection, volume analysis
|
|
27
|
-
- ๐ฆ **Zero Config**: Works out-of-the-box with backtest-kit
|
|
28
|
-
|
|
29
|
-
## ๐ What It Does
|
|
30
|
-
|
|
31
|
-
`@backtest-kit/signals` analyzes market data and generates comprehensive technical reports across multiple timeframes:
|
|
32
|
-
|
|
33
|
-
| Timeframe | Candles | Indicators | Use Case |
|
|
34
|
-
|-----------|---------|------------|----------|
|
|
35
|
-
| **MicroTerm** (1m) | 60 | RSI(9,14), MACD(8,21,5), Stochastic, ADX(9), Bollinger(8,2), ATR, CCI, Volume, Squeeze | Scalping, ultra-short entries |
|
|
36
|
-
| **ShortTerm** (15m) | 144 | RSI(9), MACD(8,21,5), Stochastic(5,3,3), ADX(14), Bollinger(10,2), Fibonacci | Day trading |
|
|
37
|
-
| **SwingTerm** (30m) | 96 | RSI(14), MACD(12,26,9), Stochastic(14,3,3), Bollinger(20,2), Support/Resistance | Swing trading |
|
|
38
|
-
| **LongTerm** (1h) | 100 | RSI(14), MACD(12,26,9), ADX(14), Bollinger(20,2), SMA(50), DEMA, WMA, Volume Trend | Trend analysis |
|
|
39
|
-
|
|
40
|
-
**Plus:** Real-time order book analysis with bid/ask depth and imbalance metrics.
|
|
41
|
-
|
|
42
|
-
## ๐ Installation
|
|
13
|
+
๐ **[Docs](https://backtest-kit.github.io/documents/article_07_ai_news_trading_signals.html)** ยท ๐ **[Reference implementation](https://github.com/tripolskypetr/backtest-kit/tree/master/example)** ยท ๐ **[GitHub](https://github.com/tripolskypetr/backtest-kit)**
|
|
43
14
|
|
|
44
15
|
```bash
|
|
45
16
|
npm install @backtest-kit/signals backtest-kit
|
|
46
17
|
```
|
|
47
18
|
|
|
48
|
-
|
|
19
|
+
---
|
|
49
20
|
|
|
50
|
-
|
|
21
|
+
## Why
|
|
51
22
|
|
|
52
|
-
|
|
23
|
+
An LLM trading strategy is only as good as the market context you hand it. Computing 50+ indicators across four timeframes, formatting order-book depth, and laying it all out as clean markdown โ by hand, every tick โ is the unglamorous 200 lines that decides signal quality. This package is that work, pre-computed, cached, and synchronized with backtest-kit's timeline: one `commitHistorySetup(symbol, messages)` appends order book + candle history + indicators for 1m/15m/30m/1h to your LLM message array.
|
|
53
24
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
25
|
+
- ๐ **Four synchronized timeframes** โ MicroTerm 1m ยท ShortTerm 15m ยท SwingTerm 30m ยท LongTerm 1h.
|
|
26
|
+
- ๐ฏ **50+ indicators** โ RSI, MACD, Bollinger, Stochastic, ADX, ATR, CCI, Fibonacci, support/resistance, squeeze, volume trend.
|
|
27
|
+
- ๐ **Order-book depth** โ best bid/ask, spread, top-20 levels, liquidity imbalance.
|
|
28
|
+
- ๐ค **LLM-ready markdown** โ formatted tables for context injection.
|
|
29
|
+
- โก **Cached** โ per-timeframe TTL; cache cleared on error.
|
|
30
|
+
- ๐ฆ **Zero config** โ works out of the box on the engine's temporal context.
|
|
57
31
|
|
|
58
|
-
|
|
59
|
-
const messages = [];
|
|
32
|
+
---
|
|
60
33
|
|
|
61
|
-
|
|
62
|
-
await commitHistorySetup('BTCUSDT', messages);
|
|
63
|
-
|
|
64
|
-
// Now messages contains:
|
|
65
|
-
// - Order book analysis (bids/asks, spread, imbalance)
|
|
66
|
-
// - Candle history (1m, 15m, 30m, 1h)
|
|
67
|
-
// - Technical indicators for all 4 timeframes
|
|
68
|
-
// - System info (symbol, price, timestamp)
|
|
69
|
-
|
|
70
|
-
// Send to LLM
|
|
71
|
-
const signal = await llm(messages);
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Granular Control - Individual Reports
|
|
75
|
-
|
|
76
|
-
For fine-grained control over what data to include:
|
|
34
|
+
## Quick start โ one call
|
|
77
35
|
|
|
78
36
|
```typescript
|
|
79
|
-
import {
|
|
80
|
-
commitBookDataReport,
|
|
81
|
-
commitOneMinuteHistory,
|
|
82
|
-
commitFifteenMinuteHistory,
|
|
83
|
-
commitThirtyMinuteHistory,
|
|
84
|
-
commitHourHistory,
|
|
85
|
-
commitMicroTermMath,
|
|
86
|
-
commitShortTermMath,
|
|
87
|
-
commitSwingTermMath,
|
|
88
|
-
commitLongTermMath,
|
|
89
|
-
} from '@backtest-kit/signals';
|
|
37
|
+
import { commitHistorySetup } from '@backtest-kit/signals';
|
|
90
38
|
|
|
91
39
|
const messages = [];
|
|
92
|
-
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// Candle histories
|
|
97
|
-
await commitOneMinuteHistory('BTCUSDT', messages); // Last 15 candles
|
|
98
|
-
await commitFifteenMinuteHistory('BTCUSDT', messages); // Last 8 candles
|
|
99
|
-
await commitThirtyMinuteHistory('BTCUSDT', messages); // Last 6 candles
|
|
100
|
-
await commitHourHistory('BTCUSDT', messages); // Last 6 candles
|
|
101
|
-
|
|
102
|
-
// Technical indicators
|
|
103
|
-
await commitMicroTermMath('BTCUSDT', messages); // 1m indicators
|
|
104
|
-
await commitShortTermMath('BTCUSDT', messages); // 15m indicators
|
|
105
|
-
await commitSwingTermMath('BTCUSDT', messages); // 30m indicators
|
|
106
|
-
await commitLongTermMath('BTCUSDT', messages); // 1h indicators
|
|
107
|
-
|
|
108
|
-
// Send to LLM
|
|
40
|
+
await commitHistorySetup('BTCUSDT', messages);
|
|
41
|
+
// messages now hold: order book + 1m/15m/30m/1h candle history
|
|
42
|
+
// + indicators for all 4 timeframes + system context (symbol, price, timestamp)
|
|
109
43
|
const signal = await llm(messages);
|
|
110
44
|
```
|
|
111
45
|
|
|
112
|
-
|
|
46
|
+
<details>
|
|
47
|
+
<summary>Complete LLM strategy</summary>
|
|
113
48
|
|
|
114
49
|
```typescript
|
|
115
50
|
import { v4 as uuid } from 'uuid';
|
|
116
51
|
import { addStrategy, dumpSignal } from 'backtest-kit';
|
|
117
52
|
import { commitHistorySetup } from '@backtest-kit/signals';
|
|
118
|
-
import { json } from './utils/json.mjs';
|
|
53
|
+
import { json } from './utils/json.mjs'; // your LLM wrapper
|
|
119
54
|
|
|
120
55
|
addStrategy({
|
|
121
|
-
strategyName: 'llm-strategy',
|
|
122
|
-
interval: '5m',
|
|
123
|
-
riskName: 'demo',
|
|
56
|
+
strategyName: 'llm-strategy', interval: '5m', riskName: 'demo',
|
|
124
57
|
getSignal: async (symbol) => {
|
|
125
|
-
const messages = [
|
|
126
|
-
{
|
|
127
|
-
role: 'system',
|
|
128
|
-
content: 'You are a trading bot. Analyze technical indicators and generate signals.'
|
|
129
|
-
}
|
|
130
|
-
];
|
|
131
|
-
|
|
132
|
-
// Inject all technical analysis
|
|
58
|
+
const messages = [{ role: 'system', content: 'You are a trading bot. Analyze the indicators and generate a signal.' }];
|
|
133
59
|
await commitHistorySetup(symbol, messages);
|
|
60
|
+
messages.push({ role: 'user', content: [
|
|
61
|
+
'Based on the technical analysis above, generate a trading signal.',
|
|
62
|
+
'Use position: "wait" if signals are unclear or contradictory.',
|
|
63
|
+
'Return JSON: { position: "long"|"short"|"wait", priceTakeProfit: number, priceStopLoss: number }',
|
|
64
|
+
].join('\n') });
|
|
134
65
|
|
|
135
|
-
// Add trading instructions
|
|
136
|
-
messages.push({
|
|
137
|
-
role: 'user',
|
|
138
|
-
content: [
|
|
139
|
-
'Based on the technical analysis above, generate a trading signal.',
|
|
140
|
-
'Use position: "wait" if signals are unclear or contradictory.',
|
|
141
|
-
'Return JSON: { position: "long"|"short"|"wait", priceTakeProfit: number, priceStopLoss: number }'
|
|
142
|
-
].join('\n')
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
// Generate signal via LLM
|
|
146
66
|
const resultId = uuid();
|
|
147
67
|
const signal = await json(messages);
|
|
148
|
-
|
|
149
|
-
// Save conversation for debugging
|
|
150
|
-
await dumpSignal(resultId, messages, signal);
|
|
151
|
-
|
|
68
|
+
await dumpSignal(resultId, messages, signal); // archive for debugging
|
|
152
69
|
return { ...signal, id: resultId };
|
|
153
|
-
}
|
|
70
|
+
},
|
|
154
71
|
});
|
|
155
72
|
```
|
|
156
73
|
|
|
157
|
-
|
|
74
|
+
</details>
|
|
158
75
|
|
|
159
|
-
|
|
76
|
+
---
|
|
160
77
|
|
|
161
|
-
|
|
162
|
-
import { setLogger } from '@backtest-kit/signals';
|
|
163
|
-
|
|
164
|
-
setLogger({
|
|
165
|
-
log: console.log,
|
|
166
|
-
debug: console.debug,
|
|
167
|
-
info: console.info,
|
|
168
|
-
warn: console.warn,
|
|
169
|
-
});
|
|
170
|
-
```
|
|
78
|
+
## Granular control
|
|
171
79
|
|
|
172
|
-
|
|
80
|
+
Prefer to choose exactly what goes into the prompt? Call the individual report functions โ each appends one markdown section to `messages`.
|
|
173
81
|
|
|
174
|
-
|
|
82
|
+
<details>
|
|
83
|
+
<summary>The 9 granular functions</summary>
|
|
175
84
|
|
|
176
|
-
```
|
|
177
|
-
|
|
85
|
+
```typescript
|
|
86
|
+
import {
|
|
87
|
+
commitBookDataReport, // order book: bids/asks, spread, imbalance
|
|
88
|
+
commitOneMinuteHistory, commitFifteenMinuteHistory, // candle histories (last 15 / 8 โฆ)
|
|
89
|
+
commitThirtyMinuteHistory, commitHourHistory,
|
|
90
|
+
commitMicroTermMath, commitShortTermMath, // indicator tables per timeframe
|
|
91
|
+
commitSwingTermMath, commitLongTermMath,
|
|
92
|
+
} from '@backtest-kit/signals';
|
|
178
93
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
94
|
+
const messages = [];
|
|
95
|
+
await commitBookDataReport('BTCUSDT', messages);
|
|
96
|
+
await commitOneMinuteHistory('BTCUSDT', messages);
|
|
97
|
+
await commitMicroTermMath('BTCUSDT', messages);
|
|
98
|
+
// โฆadd only the sections you want, then call your LLM
|
|
99
|
+
```
|
|
183
100
|
|
|
184
|
-
|
|
185
|
-
| Price | Volume | % Total |
|
|
186
|
-
|-------|--------|---------|
|
|
187
|
-
| 50000.00 | 1.234 | 15.5% |
|
|
188
|
-
...
|
|
101
|
+
`commitHistorySetup` is simply the orchestrator that runs all of these in the right order.
|
|
189
102
|
|
|
190
|
-
|
|
191
|
-
| Price | Volume | % Total |
|
|
192
|
-
|-------|--------|---------|
|
|
193
|
-
| 50001.00 | 0.987 | 12.3% |
|
|
194
|
-
...
|
|
195
|
-
```
|
|
103
|
+
</details>
|
|
196
104
|
|
|
197
|
-
|
|
105
|
+
---
|
|
198
106
|
|
|
199
|
-
|
|
200
|
-
## 1-Minute Candle History (Last 15)
|
|
107
|
+
## What each timeframe computes
|
|
201
108
|
|
|
202
|
-
|
|
|
203
|
-
|
|
204
|
-
|
|
|
205
|
-
|
|
206
|
-
|
|
109
|
+
| Timeframe | Candles | Indicators | Use case |
|
|
110
|
+
|-----------|---------|------------|----------|
|
|
111
|
+
| **MicroTerm** (1m) | 60 | RSI(9,14), MACD(8,21,5), Stochastic, ADX(9), Bollinger(8,2), ATR, CCI, Volume, Squeeze | Scalping, ultra-short entries |
|
|
112
|
+
| **ShortTerm** (15m) | 144 | RSI(9), MACD(8,21,5), Stochastic(5,3,3), ADX(14), Bollinger(10,2), Fibonacci | Day trading |
|
|
113
|
+
| **SwingTerm** (30m) | 96 | RSI(14), MACD(12,26,9), Stochastic(14,3,3), Bollinger(20,2), Support/Resistance | Swing trading |
|
|
114
|
+
| **LongTerm** (1h) | 100 | RSI(14), MACD(12,26,9), ADX(14), Bollinger(20,2), SMA(50), DEMA, WMA, Volume Trend | Trend analysis |
|
|
207
115
|
|
|
208
|
-
|
|
116
|
+
<details>
|
|
117
|
+
<summary>Report structure (order book ยท candles ยท indicators)</summary>
|
|
209
118
|
|
|
210
|
-
|
|
211
|
-
## MicroTerm Analysis (1-Minute Timeframe)
|
|
119
|
+
**Order book** โ symbol, best bid/ask, mid price, spread, depth imbalance (`(bid_vol โ ask_vol)/(bid_vol + ask_vol)`, + = buy pressure), and top-20 bid/ask levels with `% of total`.
|
|
212
120
|
|
|
213
|
-
|
|
214
|
-
|------|-------|--------|---------|------|--------|-----------|----------|----------|-----|-----|-----|----------|-----------|----------|--------|--------|--------|--------|-----------|----------|-----|---------|------------|---------|----------|
|
|
215
|
-
| 10:00 | 50020 | 55.2 | 52.8 | 12.5 | 8.3 | 4.2 | 45.6 | 42.1 | 28.5 | 22.3 | 18.7 | 50100 | 50000 | 49900 | 15.2 | 18.9 | 45.7 | 123.45 | increasing | 0.8% | 1.2% | 49950 | 50100 | 0.85 | 15.2 |
|
|
216
|
-
...
|
|
121
|
+
**Candle history** โ per-candle table: timestamp, OHLC, volume, volatility, body size.
|
|
217
122
|
|
|
218
|
-
**Data Sources
|
|
219
|
-
- RSI periods: 9, 14
|
|
220
|
-
- MACD: Fast=8, Slow=21, Signal=5
|
|
221
|
-
- Stochastic: K=3, D=3, Smooth=3 (primary), K=5, D=3, Smooth=3 (secondary)
|
|
222
|
-
...
|
|
223
|
-
```
|
|
123
|
+
**Indicators** โ a wide per-bar table; e.g. MicroTerm columns: Price, RSI(9), RSI(14), MACD, Signal, Histogram, Stoch %K/%D, ADX, +DI, โDI, BB Upper/Middle/Lower, ATR(5/9), CCI(9), Volume, Vol Trend, Momentum, ROC, Support, Resistance, Squeeze, Pressure โ followed by a **Data Sources** note listing every period used.
|
|
224
124
|
|
|
225
|
-
|
|
125
|
+
</details>
|
|
226
126
|
|
|
227
|
-
|
|
127
|
+
<details>
|
|
128
|
+
<summary>Caching & key algorithms</summary>
|
|
228
129
|
|
|
229
|
-
|
|
230
|
-
|-----------|----------------|
|
|
231
|
-
| 1-minute data | 1 minute |
|
|
232
|
-
| 15-minute data | 5 minutes |
|
|
233
|
-
| 30-minute data | 15 minutes |
|
|
234
|
-
| 1-hour data | 30 minutes |
|
|
235
|
-
| Order book | 5 minutes |
|
|
130
|
+
**Cache TTL** (cleared on error): 1m data โ 1 min ยท 15m โ 5 min ยท 30m โ 15 min ยท 1h โ 30 min ยท order book โ 5 min.
|
|
236
131
|
|
|
237
|
-
|
|
132
|
+
- **Support/Resistance** โ MicroTerm/SwingTerm look back N candles for significant highs/lows (ยฑ0.3% threshold); LongTerm uses a 4-candle pivot method.
|
|
133
|
+
- **Fibonacci** โ levels 0 / 23.6 / 38.2 / 50 / 61.8 / 78.6 / 100 %, extensions 127.2 / 161.8 / 261.8 %; nearest level to price within 1.5% tolerance.
|
|
134
|
+
- **Volume** โ MicroTerm: SMA(5) with increasing/decreasing/stable trend (ยฑ20%); LongTerm: 6-candle average (ยฑ10%).
|
|
135
|
+
- **Order-book imbalance** โ `(bid โ ask)/(bid + ask)`, positive = buy pressure.
|
|
238
136
|
|
|
239
|
-
|
|
137
|
+
</details>
|
|
240
138
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
- **LongTerm**: 4-candle pivot point method
|
|
139
|
+
<details>
|
|
140
|
+
<summary>Custom logger (default is no-op)</summary>
|
|
244
141
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
142
|
+
```typescript
|
|
143
|
+
import { setLogger } from '@backtest-kit/signals';
|
|
144
|
+
setLogger({ log: console.log, debug: console.debug, info: console.info, warn: console.warn });
|
|
145
|
+
```
|
|
249
146
|
|
|
250
|
-
|
|
251
|
-
- **MicroTerm**: SMA(5) volume with increasing/decreasing/stable trend (ยฑ20% threshold)
|
|
252
|
-
- **LongTerm**: 6-candle average comparison (ยฑ10% threshold)
|
|
147
|
+
</details>
|
|
253
148
|
|
|
254
|
-
|
|
149
|
+
---
|
|
255
150
|
|
|
256
|
-
|
|
151
|
+
## Why not compute indicators yourself?
|
|
257
152
|
|
|
258
|
-
|
|
153
|
+
<details>
|
|
154
|
+
<summary>The difference</summary>
|
|
259
155
|
|
|
260
|
-
|
|
156
|
+
```typescript
|
|
157
|
+
// โ Manual โ 40+ indicators, formatting, caching, all by hand
|
|
158
|
+
const candles = await getCandles('BTCUSDT', '1m', 60);
|
|
159
|
+
const rsi = calculateRSI(candles, 14);
|
|
160
|
+
const macd = calculateMACD(candles, 12, 26, 9);
|
|
161
|
+
const bb = calculateBollingerBands(candles, 20, 2);
|
|
162
|
+
// โฆand the markdown formatting, and the cache
|
|
163
|
+
messages.push({ role: 'user', content: formatToMarkdown(rsi, macd, bb /* โฆ */) });
|
|
261
164
|
|
|
262
|
-
|
|
263
|
-
|
|
165
|
+
// โ
With signals
|
|
166
|
+
await commitHistorySetup('BTCUSDT', messages);
|
|
167
|
+
```
|
|
264
168
|
|
|
265
|
-
|
|
266
|
-
Combine indicators from different timeframes to filter false signals.
|
|
169
|
+
Pre-computed, cached, optimized ยท 50+ indicators ร 4 timeframes ยท LLM-ready markdown ยท synchronized with the backtest timeline ยท validation & error handling built in.
|
|
267
170
|
|
|
268
|
-
|
|
269
|
-
Provide comprehensive market state to AI agents making trading decisions.
|
|
171
|
+
</details>
|
|
270
172
|
|
|
271
|
-
|
|
272
|
-
Save generated reports for post-analysis and strategy improvement.
|
|
173
|
+
---
|
|
273
174
|
|
|
274
|
-
##
|
|
175
|
+
## API reference
|
|
275
176
|
|
|
276
|
-
|
|
177
|
+
| Export | Description |
|
|
178
|
+
|--------|-------------|
|
|
179
|
+
| `commitHistorySetup(symbol, messages)` | Orchestrator โ appends order book + all candle histories + all indicators + context |
|
|
180
|
+
| `commitBookDataReport(symbol, messages)` | Order-book depth & imbalance section |
|
|
181
|
+
| `commitOneMinuteHistory` / `commitFifteenMinuteHistory` / `commitThirtyMinuteHistory` / `commitHourHistory` | Candle-history sections per timeframe |
|
|
182
|
+
| `commitMicroTermMath` / `commitShortTermMath` / `commitSwingTermMath` / `commitLongTermMath` | Indicator-table sections (1m / 15m / 30m / 1h) |
|
|
183
|
+
| `setLogger(logger)` | Replace the default no-op logger |
|
|
184
|
+
| `lib` | Internal IoC service container (advanced use) |
|
|
277
185
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
const candles = await getCandles('BTCUSDT', '1m', 60);
|
|
281
|
-
const rsi = calculateRSI(candles, 14);
|
|
282
|
-
const macd = calculateMACD(candles, 12, 26, 9);
|
|
283
|
-
const bb = calculateBollingerBands(candles, 20, 2);
|
|
284
|
-
// ... 40+ more indicators
|
|
285
|
-
const report = formatToMarkdown(rsi, macd, bb, ...);
|
|
286
|
-
messages.push({ role: 'user', content: report });
|
|
287
|
-
```
|
|
186
|
+
<details>
|
|
187
|
+
<summary>Complete source map</summary>
|
|
288
188
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
```
|
|
189
|
+
- `function/history.function.ts` โ the four `commit*History` functions. `function/math.function.ts` โ the four `commit*Math` functions. `function/other.function.ts` โ `commitBookDataReport` + `commitHistorySetup`.
|
|
190
|
+
- `tools/setup.tool.ts` โ `setLogger`. `contract/{History,ReportFn}.contract.ts` โ report-function contracts. `interfaces/Logger.interface.ts`.
|
|
191
|
+
- `lib/` IoC: `core/{di,provide,types}`, `services/common/LoggerService`, `services/history/{One,Fifteen,Thirty}MinuteCandleHistoryService` + `HourCandleHistoryService`, `services/math/{MicroTerm,ShortTerm,SwingTerm,LongTerm}MathService` + `BookDataMathService` (the math services are the package's bulk โ 32โ45 KB each). Every export maps to one of these; nothing in `src/` is undocumented.
|
|
293
192
|
|
|
294
|
-
|
|
295
|
-
- โก Pre-computed, cached, optimized
|
|
296
|
-
- ๐ 50+ indicators across 4 timeframes
|
|
297
|
-
- ๐จ Formatted markdown tables ready for LLM
|
|
298
|
-
- ๐ Synchronized with backtest timeline
|
|
299
|
-
- ๐ก๏ธ Error handling and validation built-in
|
|
193
|
+
</details>
|
|
300
194
|
|
|
301
195
|
## ๐ค Contribute
|
|
302
196
|
|
|
303
|
-
Fork/PR on [GitHub](https://github.com/tripolskypetr/backtest-kit).
|
|
197
|
+
Fork / PR on [GitHub](https://github.com/tripolskypetr/backtest-kit).
|
|
304
198
|
|
|
305
199
|
## ๐ License
|
|
306
200
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backtest-kit/signals",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"description": "Technical analysis and trading signal generation library for AI-powered trading systems. Computes 50+ indicators across 4 timeframes and generates markdown reports for LLM consumption.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Petr Tripolsky",
|
|
@@ -66,20 +66,20 @@
|
|
|
66
66
|
"ts-morph": "27.0.2",
|
|
67
67
|
"tslib": "2.7.0",
|
|
68
68
|
"typedoc": "0.27.9",
|
|
69
|
-
"backtest-kit": "
|
|
70
|
-
"worker-testbed": "2.
|
|
69
|
+
"backtest-kit": "14.1.0",
|
|
70
|
+
"worker-testbed": "2.1.0"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
|
-
"backtest-kit": "^
|
|
73
|
+
"backtest-kit": "^14.1.0",
|
|
74
74
|
"typescript": "^5.0.0"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"di-kit": "^1.1.1",
|
|
78
78
|
"di-scoped": "^1.0.21",
|
|
79
|
-
"functools-kit": "^
|
|
79
|
+
"functools-kit": "^3.0.0",
|
|
80
80
|
"trading-signals": "^6.9.1",
|
|
81
81
|
"get-moment-stamp": "^2.0.0",
|
|
82
|
-
"agent-swarm-kit": "^2.
|
|
82
|
+
"agent-swarm-kit": "^3.2.0"
|
|
83
83
|
},
|
|
84
84
|
"publishConfig": {
|
|
85
85
|
"access": "public"
|