@backtest-kit/signals 0.0.1
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 +302 -0
- package/build/index.cjs +3004 -0
- package/build/index.mjs +2991 -0
- package/package.json +81 -0
- package/types.d.ts +294 -0
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@backtest-kit/signals",
|
|
3
|
+
"version": "0.0.1",
|
|
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
|
+
"author": {
|
|
6
|
+
"name": "Petr Tripolsky",
|
|
7
|
+
"email": "tripolskypetr@gmail.com",
|
|
8
|
+
"url": "https://github.com/tripolskypetr"
|
|
9
|
+
},
|
|
10
|
+
"funding": {
|
|
11
|
+
"type": "individual",
|
|
12
|
+
"url": "http://paypal.me/tripolskypetr"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"homepage": "https://backtest-kit.github.io/documents/example_02_first_backtest.html",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"backtesting",
|
|
18
|
+
"backtest",
|
|
19
|
+
"finance",
|
|
20
|
+
"trading",
|
|
21
|
+
"candles",
|
|
22
|
+
"indicators",
|
|
23
|
+
"multi value",
|
|
24
|
+
"multi symbol",
|
|
25
|
+
"framework"
|
|
26
|
+
],
|
|
27
|
+
"files": [
|
|
28
|
+
"build",
|
|
29
|
+
"types.d.ts",
|
|
30
|
+
"README.md"
|
|
31
|
+
],
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/tripolskypetr/backtest-kit",
|
|
35
|
+
"documentation": "https://github.com/tripolskypetr/backtest-kit/tree/master/docs"
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/tripolskypetr/backtest-kit/issues"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "rollup -c"
|
|
42
|
+
},
|
|
43
|
+
"main": "build/index.cjs",
|
|
44
|
+
"module": "build/index.mjs",
|
|
45
|
+
"source": "src/index.ts",
|
|
46
|
+
"types": "./types.d.ts",
|
|
47
|
+
"exports": {
|
|
48
|
+
"require": "./build/index.cjs",
|
|
49
|
+
"types": "./types.d.ts",
|
|
50
|
+
"import": "./build/index.mjs",
|
|
51
|
+
"default": "./build/index.cjs"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@rollup/plugin-typescript": "11.1.6",
|
|
55
|
+
"@types/node": "22.9.0",
|
|
56
|
+
"glob": "11.0.1",
|
|
57
|
+
"rimraf": "6.0.1",
|
|
58
|
+
"rollup": "3.29.5",
|
|
59
|
+
"rollup-plugin-dts": "6.1.1",
|
|
60
|
+
"rollup-plugin-peer-deps-external": "2.2.4",
|
|
61
|
+
"ts-morph": "27.0.2",
|
|
62
|
+
"tslib": "2.7.0",
|
|
63
|
+
"typedoc": "0.27.9",
|
|
64
|
+
"worker-testbed": "1.0.12"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"agent-swarm-kit": "^1.1.180",
|
|
68
|
+
"backtest-kit": "^1.11.10",
|
|
69
|
+
"typescript": "^5.0.0"
|
|
70
|
+
},
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"di-kit": "^1.0.18",
|
|
73
|
+
"di-scoped": "^1.0.20",
|
|
74
|
+
"functools-kit": "^1.0.95",
|
|
75
|
+
"trading-signals": "^6.9.1",
|
|
76
|
+
"get-moment-stamp": "^1.1.1"
|
|
77
|
+
},
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"access": "public"
|
|
80
|
+
}
|
|
81
|
+
}
|
package/types.d.ts
ADDED
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { IBaseMessage, IOutlineHistory } from 'agent-swarm-kit';
|
|
2
|
+
import { ICandleData } from 'backtest-kit';
|
|
3
|
+
|
|
4
|
+
type HistoryContract = IBaseMessage[] | IOutlineHistory;
|
|
5
|
+
|
|
6
|
+
type ReportFn = (symbol: string, history: HistoryContract) => Promise<void>;
|
|
7
|
+
|
|
8
|
+
declare const commitHourHistory: ReportFn;
|
|
9
|
+
declare const commitThirtyMinuteHistory: ReportFn;
|
|
10
|
+
declare const commitFifteenMinuteHistory: ReportFn;
|
|
11
|
+
declare const commitOneMinuteHistory: ReportFn;
|
|
12
|
+
|
|
13
|
+
declare const commitMicroTermMath: ReportFn;
|
|
14
|
+
declare const commitLongTermMath: ReportFn;
|
|
15
|
+
declare const commitShortTermMath: ReportFn;
|
|
16
|
+
declare const commitSwingTermMath: ReportFn;
|
|
17
|
+
|
|
18
|
+
declare const commitBookDataReport: ReportFn;
|
|
19
|
+
declare const commitHistorySetup: (symbol: string, history: HistoryContract) => Promise<void>;
|
|
20
|
+
|
|
21
|
+
interface ILogger {
|
|
22
|
+
log(topic: string, ...args: any[]): void;
|
|
23
|
+
debug(topic: string, ...args: any[]): void;
|
|
24
|
+
info(topic: string, ...args: any[]): void;
|
|
25
|
+
warn(topic: string, ...args: any[]): void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare const setLogger: (logger: ILogger) => void;
|
|
29
|
+
|
|
30
|
+
interface ISwingTermRow {
|
|
31
|
+
symbol: string;
|
|
32
|
+
rsi14: number | null;
|
|
33
|
+
stochasticRSI14: number | null;
|
|
34
|
+
macd12_26_9: number | null;
|
|
35
|
+
signal9: number | null;
|
|
36
|
+
bollingerUpper20_2: number | null;
|
|
37
|
+
bollingerMiddle20_2: number | null;
|
|
38
|
+
bollingerLower20_2: number | null;
|
|
39
|
+
bollingerWidth20_2: number | null;
|
|
40
|
+
stochasticK14_3_3: number | null;
|
|
41
|
+
stochasticD14_3_3: number | null;
|
|
42
|
+
adx14: number | null;
|
|
43
|
+
plusDI14: number | null;
|
|
44
|
+
minusDI14: number | null;
|
|
45
|
+
cci20: number | null;
|
|
46
|
+
atr14: number | null;
|
|
47
|
+
sma20: number | null;
|
|
48
|
+
ema13: number | null;
|
|
49
|
+
ema34: number | null;
|
|
50
|
+
dema21: number | null;
|
|
51
|
+
wma20: number | null;
|
|
52
|
+
momentum8: number | null;
|
|
53
|
+
support: number;
|
|
54
|
+
resistance: number;
|
|
55
|
+
currentPrice: number;
|
|
56
|
+
volume: number;
|
|
57
|
+
volatility: number | null;
|
|
58
|
+
priceMomentum6: number | null;
|
|
59
|
+
fibonacciNearestSupport: number | null;
|
|
60
|
+
fibonacciNearestResistance: number | null;
|
|
61
|
+
fibonacciCurrentLevel: string;
|
|
62
|
+
bodySize: number;
|
|
63
|
+
closePrice: number;
|
|
64
|
+
date: Date;
|
|
65
|
+
lookbackPeriod: string;
|
|
66
|
+
}
|
|
67
|
+
declare class SwingTermHistoryService {
|
|
68
|
+
private loggerService;
|
|
69
|
+
getData: (symbol: string, candles: ICandleData[]) => Promise<ISwingTermRow[]>;
|
|
70
|
+
getReport: (symbol: string) => Promise<string>;
|
|
71
|
+
generateHistoryTable: (symbol: string, rows: ISwingTermRow[]) => Promise<string>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface ILongTermRow {
|
|
75
|
+
symbol: string;
|
|
76
|
+
rsi14: number | null;
|
|
77
|
+
stochasticRSI14: number | null;
|
|
78
|
+
macd12_26_9: number | null;
|
|
79
|
+
signal9: number | null;
|
|
80
|
+
adx14: number | null;
|
|
81
|
+
pdi14: number | null;
|
|
82
|
+
ndi14: number | null;
|
|
83
|
+
atr14: number | null;
|
|
84
|
+
atr14_raw: number | null;
|
|
85
|
+
atr20: number | null;
|
|
86
|
+
cci20: number | null;
|
|
87
|
+
bollinger20_2_upper: number | null;
|
|
88
|
+
bollinger20_2_middle: number | null;
|
|
89
|
+
bollinger20_2_lower: number | null;
|
|
90
|
+
stochastic14_3_3_K: number | null;
|
|
91
|
+
stochastic14_3_3_D: number | null;
|
|
92
|
+
momentum10: number | null;
|
|
93
|
+
dema21: number | null;
|
|
94
|
+
wma20: number | null;
|
|
95
|
+
sma50: number | null;
|
|
96
|
+
ema20: number | null;
|
|
97
|
+
ema34: number | null;
|
|
98
|
+
currentPrice: number;
|
|
99
|
+
support: number;
|
|
100
|
+
resistance: number;
|
|
101
|
+
volumeTrend: string;
|
|
102
|
+
fibonacciNearestLevel: string;
|
|
103
|
+
fibonacciNearestPrice: number;
|
|
104
|
+
fibonacciDistance: number;
|
|
105
|
+
bodySize: number;
|
|
106
|
+
closePrice: number;
|
|
107
|
+
date: Date;
|
|
108
|
+
lookbackPeriod: string;
|
|
109
|
+
}
|
|
110
|
+
declare class LongTermHistoryService {
|
|
111
|
+
private loggerService;
|
|
112
|
+
getData: (symbol: string, candles: ICandleData[]) => Promise<ILongTermRow[]>;
|
|
113
|
+
getReport: (symbol: string) => Promise<string>;
|
|
114
|
+
generateHistoryTable: (symbol: string, rows: ILongTermRow[]) => Promise<string>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
interface IShortTermRow {
|
|
118
|
+
symbol: string;
|
|
119
|
+
rsi9: number | null;
|
|
120
|
+
stochasticRSI9: number | null;
|
|
121
|
+
macd8_21_5: number | null;
|
|
122
|
+
signal5: number | null;
|
|
123
|
+
bollingerUpper10_2: number | null;
|
|
124
|
+
bollingerMiddle10_2: number | null;
|
|
125
|
+
bollingerLower10_2: number | null;
|
|
126
|
+
bollingerWidth10_2: number | null;
|
|
127
|
+
stochasticK5_3_3: number | null;
|
|
128
|
+
stochasticD5_3_3: number | null;
|
|
129
|
+
adx14: number | null;
|
|
130
|
+
plusDI14: number | null;
|
|
131
|
+
minusDI14: number | null;
|
|
132
|
+
atr9: number | null;
|
|
133
|
+
cci14: number | null;
|
|
134
|
+
sma50: number | null;
|
|
135
|
+
ema8: number | null;
|
|
136
|
+
ema21: number | null;
|
|
137
|
+
dema21: number | null;
|
|
138
|
+
wma20: number | null;
|
|
139
|
+
momentum8: number | null;
|
|
140
|
+
roc5: number | null;
|
|
141
|
+
roc10: number | null;
|
|
142
|
+
volumeTrend: string;
|
|
143
|
+
support: number;
|
|
144
|
+
resistance: number;
|
|
145
|
+
currentPrice: number;
|
|
146
|
+
fibonacciNearestLevel: string;
|
|
147
|
+
fibonacciNearestPrice: number;
|
|
148
|
+
fibonacciDistance: number;
|
|
149
|
+
bodySize: number;
|
|
150
|
+
closePrice: number;
|
|
151
|
+
date: Date;
|
|
152
|
+
lookbackPeriod: string;
|
|
153
|
+
}
|
|
154
|
+
declare class ShortTermHistoryService {
|
|
155
|
+
private loggerService;
|
|
156
|
+
getData: (symbol: string, candles: ICandleData[]) => Promise<IShortTermRow[]>;
|
|
157
|
+
getReport: (symbol: string) => Promise<string>;
|
|
158
|
+
generateHistoryTable: (symbol: string, rows: IShortTermRow[]) => Promise<string>;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
interface IMicroTermRow {
|
|
162
|
+
symbol: string;
|
|
163
|
+
rsi9: number | null;
|
|
164
|
+
rsi14: number | null;
|
|
165
|
+
stochasticRSI9: number | null;
|
|
166
|
+
stochasticRSI14: number | null;
|
|
167
|
+
macd8_21_5: number | null;
|
|
168
|
+
signal5: number | null;
|
|
169
|
+
macdHistogram: number | null;
|
|
170
|
+
bollingerUpper8_2: number | null;
|
|
171
|
+
bollingerMiddle8_2: number | null;
|
|
172
|
+
bollingerLower8_2: number | null;
|
|
173
|
+
bollingerWidth8_2: number | null;
|
|
174
|
+
bollingerPosition: number | null;
|
|
175
|
+
stochasticK3_3_3: number | null;
|
|
176
|
+
stochasticD3_3_3: number | null;
|
|
177
|
+
stochasticK5_3_3: number | null;
|
|
178
|
+
stochasticD5_3_3: number | null;
|
|
179
|
+
adx9: number | null;
|
|
180
|
+
plusDI9: number | null;
|
|
181
|
+
minusDI9: number | null;
|
|
182
|
+
atr5: number | null;
|
|
183
|
+
atr9: number | null;
|
|
184
|
+
cci9: number | null;
|
|
185
|
+
momentum5: number | null;
|
|
186
|
+
momentum10: number | null;
|
|
187
|
+
roc1: number | null;
|
|
188
|
+
roc3: number | null;
|
|
189
|
+
roc5: number | null;
|
|
190
|
+
ema3: number | null;
|
|
191
|
+
ema8: number | null;
|
|
192
|
+
ema13: number | null;
|
|
193
|
+
ema21: number | null;
|
|
194
|
+
sma8: number | null;
|
|
195
|
+
dema8: number | null;
|
|
196
|
+
wma5: number | null;
|
|
197
|
+
volumeSma5: number | null;
|
|
198
|
+
volumeRatio: number | null;
|
|
199
|
+
volumeTrend: string;
|
|
200
|
+
currentPrice: number;
|
|
201
|
+
priceChange1m: number | null;
|
|
202
|
+
priceChange3m: number | null;
|
|
203
|
+
priceChange5m: number | null;
|
|
204
|
+
volatility5: number | null;
|
|
205
|
+
trueRange: number | null;
|
|
206
|
+
support: number;
|
|
207
|
+
resistance: number;
|
|
208
|
+
squeezeMomentum: number | null;
|
|
209
|
+
pressureIndex: number | null;
|
|
210
|
+
closePrice: number;
|
|
211
|
+
date: Date;
|
|
212
|
+
lookbackPeriod: string;
|
|
213
|
+
}
|
|
214
|
+
declare class MicroTermHistoryService {
|
|
215
|
+
private loggerService;
|
|
216
|
+
getData: (symbol: string, candles: ICandleData[]) => Promise<IMicroTermRow[]>;
|
|
217
|
+
getReport: (symbol: string) => Promise<string>;
|
|
218
|
+
generateHistoryTable: (symbol: string, rows: IMicroTermRow[]) => Promise<string>;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
declare class FifteenMinuteCandleHistoryService {
|
|
222
|
+
private loggerService;
|
|
223
|
+
getData: (symbol: string) => Promise<ICandleData[]>;
|
|
224
|
+
generateReport: (symbol: string, candles: ICandleData[]) => Promise<string>;
|
|
225
|
+
getReport: (symbol: string) => Promise<string>;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
declare class HourCandleHistoryService {
|
|
229
|
+
private loggerService;
|
|
230
|
+
getData: (symbol: string) => Promise<ICandleData[]>;
|
|
231
|
+
generateReport: (symbol: string, candles: ICandleData[]) => Promise<string>;
|
|
232
|
+
getReport: (symbol: string) => Promise<string>;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
declare class OneMinuteCandleHistoryService {
|
|
236
|
+
private loggerService;
|
|
237
|
+
getData: (symbol: string) => Promise<ICandleData[]>;
|
|
238
|
+
generateReport: (symbol: string, candles: ICandleData[]) => Promise<string>;
|
|
239
|
+
getReport: (symbol: string) => Promise<string>;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
declare class ThirtyMinuteCandleHistoryService {
|
|
243
|
+
private loggerService;
|
|
244
|
+
getData: (symbol: string) => Promise<ICandleData[]>;
|
|
245
|
+
generateReport: (symbol: string, candles: ICandleData[]) => Promise<string>;
|
|
246
|
+
getReport: (symbol: string) => Promise<string>;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
interface IOrderBookEntry {
|
|
250
|
+
price: number;
|
|
251
|
+
quantity: number;
|
|
252
|
+
percentage: number;
|
|
253
|
+
}
|
|
254
|
+
interface IBookDataAnalysis {
|
|
255
|
+
symbol: string;
|
|
256
|
+
timestamp: string;
|
|
257
|
+
bids: IOrderBookEntry[];
|
|
258
|
+
asks: IOrderBookEntry[];
|
|
259
|
+
bestBid: number;
|
|
260
|
+
bestAsk: number;
|
|
261
|
+
midPrice: number;
|
|
262
|
+
spread: number;
|
|
263
|
+
depthImbalance: number;
|
|
264
|
+
}
|
|
265
|
+
declare class BookDataMathService {
|
|
266
|
+
private loggerService;
|
|
267
|
+
generateReport: (symbol: string, bookData: IBookDataAnalysis) => Promise<string>;
|
|
268
|
+
getReport: (symbol: string) => Promise<string>;
|
|
269
|
+
getData: (symbol: string) => Promise<IBookDataAnalysis>;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
declare class LoggerService implements ILogger {
|
|
273
|
+
private _commonLogger;
|
|
274
|
+
log: (topic: string, ...args: any[]) => Promise<void>;
|
|
275
|
+
debug: (topic: string, ...args: any[]) => Promise<void>;
|
|
276
|
+
info: (topic: string, ...args: any[]) => Promise<void>;
|
|
277
|
+
warn: (topic: string, ...args: any[]) => Promise<void>;
|
|
278
|
+
setLogger: (logger: ILogger) => void;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
declare const signal: {
|
|
282
|
+
fifteenMinuteCandleHistoryService: FifteenMinuteCandleHistoryService;
|
|
283
|
+
hourCandleHistoryService: HourCandleHistoryService;
|
|
284
|
+
oneMinuteCandleHistoryService: OneMinuteCandleHistoryService;
|
|
285
|
+
thirtyMinuteCandleHistoryService: ThirtyMinuteCandleHistoryService;
|
|
286
|
+
swingTermMathService: SwingTermHistoryService;
|
|
287
|
+
longTermMathService: LongTermHistoryService;
|
|
288
|
+
shortTermMathService: ShortTermHistoryService;
|
|
289
|
+
microTermMathService: MicroTermHistoryService;
|
|
290
|
+
bookDataMathService: BookDataMathService;
|
|
291
|
+
loggerService: LoggerService;
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
export { commitBookDataReport, commitFifteenMinuteHistory, commitHistorySetup, commitHourHistory, commitLongTermMath, commitMicroTermMath, commitOneMinuteHistory, commitShortTermMath, commitSwingTermMath, commitThirtyMinuteHistory, signal as lib, setLogger };
|