@backtest-kit/cli 3.8.0 → 5.0.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 +81 -56
- package/build/index.cjs +65 -209
- package/build/index.mjs +67 -211
- package/package.json +13 -13
- package/template/average-buy.mustache +6 -1
- package/template/breakeven.mustache +7 -3
- package/template/cancelled.mustache +5 -1
- package/template/closed.mustache +7 -2
- package/template/opened.mustache +5 -1
- package/template/partial-loss.mustache +6 -2
- package/template/partial-profit.mustache +6 -2
- package/template/risk.mustache +5 -5
- package/template/scheduled.mustache +5 -1
- package/template/signal-close.mustache +21 -0
- package/template/signal-open.mustache +21 -0
- package/template/trailing-stop.mustache +5 -2
- package/template/trailing-take.mustache +5 -2
- package/types.d.ts +10 -41
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
**📭 Order Filled (Close)**
|
|
2
|
+
|
|
3
|
+
**Symbol:** `{{symbol}}` ({{position}})
|
|
4
|
+
|
|
5
|
+
**Reason:** `{{closeReason}}`
|
|
6
|
+
**Current:** `{{currentPrice}}`
|
|
7
|
+
**Entry:** `{{priceOpen}}`
|
|
8
|
+
**Orig Entry:** `{{originalPriceOpen}}`
|
|
9
|
+
**Take Profit:** `{{priceTakeProfit}}`
|
|
10
|
+
**Stop Loss:** `{{priceStopLoss}}`
|
|
11
|
+
**Orig TP:** `{{originalPriceTakeProfit}}`
|
|
12
|
+
**Orig SL:** `{{originalPriceStopLoss}}`
|
|
13
|
+
**DCA Entries:** `{{totalEntries}}`
|
|
14
|
+
**Partials Done:** `{{totalPartials}}`
|
|
15
|
+
**PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
|
|
16
|
+
**Signal ID:** `{{signalId}}`
|
|
17
|
+
**Time:** `{{timestamp}}`
|
|
18
|
+
|
|
19
|
+
{{#backtest}}
|
|
20
|
+
_🧪 Backtest_
|
|
21
|
+
{{/backtest}}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
**📬 Order Filled (Open)**
|
|
2
|
+
|
|
3
|
+
**Symbol:** `{{symbol}}` ({{position}})
|
|
4
|
+
|
|
5
|
+
**Current:** `{{currentPrice}}`
|
|
6
|
+
**Entry:** `{{priceOpen}}`
|
|
7
|
+
**Orig Entry:** `{{originalPriceOpen}}`
|
|
8
|
+
**Cost:** `{{cost}}`
|
|
9
|
+
**Take Profit:** `{{priceTakeProfit}}`
|
|
10
|
+
**Stop Loss:** `{{priceStopLoss}}`
|
|
11
|
+
**Orig TP:** `{{originalPriceTakeProfit}}`
|
|
12
|
+
**Orig SL:** `{{originalPriceStopLoss}}`
|
|
13
|
+
**DCA Entries:** `{{totalEntries}}`
|
|
14
|
+
**Partials Done:** `{{totalPartials}}`
|
|
15
|
+
**PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
|
|
16
|
+
**Signal ID:** `{{signalId}}`
|
|
17
|
+
**Time:** `{{timestamp}}`
|
|
18
|
+
|
|
19
|
+
{{#backtest}}
|
|
20
|
+
_🧪 Backtest_
|
|
21
|
+
{{/backtest}}
|
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
**Current:** `{{currentPrice}}`
|
|
6
6
|
**Entry:** `{{priceOpen}}`
|
|
7
|
+
**Orig Entry:** `{{originalPriceOpen}}`
|
|
7
8
|
**Take Profit:** `{{priceTakeProfit}}`
|
|
9
|
+
**Orig TP:** `{{originalPriceTakeProfit}}`
|
|
8
10
|
**Old Stop Loss:** `{{originalPriceStopLoss}}`
|
|
9
11
|
**New Stop Loss:** `{{priceStopLoss}}` ({{percentShift}}%)
|
|
10
|
-
**Orig Entry:** `{{originalPriceOpen}}`
|
|
11
12
|
**DCA Entries:** `{{totalEntries}}`
|
|
13
|
+
**Partials Done:** `{{totalPartials}}`
|
|
14
|
+
**PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
|
|
12
15
|
**Signal ID:** `{{signalId}}`
|
|
13
16
|
**Time:** `{{timestamp}}`
|
|
14
17
|
|
|
15
18
|
{{#backtest}}
|
|
16
19
|
_🧪 Backtest_
|
|
17
|
-
{{/backtest}}
|
|
20
|
+
{{/backtest}}
|
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
**Current:** `{{currentPrice}}`
|
|
6
6
|
**Entry:** `{{priceOpen}}`
|
|
7
|
+
**Orig Entry:** `{{originalPriceOpen}}`
|
|
7
8
|
**Old Take Profit:** `{{originalPriceTakeProfit}}`
|
|
8
9
|
**New Take Profit:** `{{priceTakeProfit}}` ({{percentShift}}%)
|
|
9
10
|
**Stop Loss:** `{{priceStopLoss}}`
|
|
10
|
-
**Orig
|
|
11
|
+
**Orig SL:** `{{originalPriceStopLoss}}`
|
|
11
12
|
**DCA Entries:** `{{totalEntries}}`
|
|
13
|
+
**Partials Done:** `{{totalPartials}}`
|
|
14
|
+
**PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
|
|
12
15
|
**Signal ID:** `{{signalId}}`
|
|
13
16
|
**Time:** `{{timestamp}}`
|
|
14
17
|
|
|
15
18
|
{{#backtest}}
|
|
16
19
|
_🧪 Backtest_
|
|
17
|
-
{{/backtest}}
|
|
20
|
+
{{/backtest}}
|
package/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as functools_kit from 'functools-kit';
|
|
2
2
|
import * as BacktestKit from 'backtest-kit';
|
|
3
|
-
import { CandleInterval, TrailingTakeCommit, TrailingStopCommit, BreakevenCommit, PartialProfitCommit, PartialLossCommit, IStrategyTickResultScheduled, IStrategyTickResultCancelled, IStrategyTickResultOpened, IStrategyTickResultClosed, RiskContract, AverageBuyCommit } from 'backtest-kit';
|
|
3
|
+
import { CandleInterval, TrailingTakeCommit, TrailingStopCommit, BreakevenCommit, PartialProfitCommit, PartialLossCommit, IStrategyTickResultScheduled, IStrategyTickResultCancelled, IStrategyTickResultOpened, IStrategyTickResultClosed, RiskContract, AverageBuyCommit, SignalOpenContract, SignalCloseContract } from 'backtest-kit';
|
|
4
4
|
import * as BacktestKitUi from '@backtest-kit/ui';
|
|
5
5
|
import * as BacktestKitGraph from '@backtest-kit/graph';
|
|
6
6
|
import * as BacktestKitOllama from '@backtest-kit/ollama';
|
|
@@ -31,6 +31,7 @@ declare class PaperMainService {
|
|
|
31
31
|
private symbolSchemaService;
|
|
32
32
|
private frontendProviderService;
|
|
33
33
|
private telegramProviderService;
|
|
34
|
+
private moduleConnectionService;
|
|
34
35
|
run: ((payload: {
|
|
35
36
|
entryPoint: string;
|
|
36
37
|
symbol: string;
|
|
@@ -48,7 +49,7 @@ declare class LiveMainService {
|
|
|
48
49
|
private symbolSchemaService;
|
|
49
50
|
private frontendProviderService;
|
|
50
51
|
private telegramProviderService;
|
|
51
|
-
private
|
|
52
|
+
private moduleConnectionService;
|
|
52
53
|
run: ((payload: {
|
|
53
54
|
entryPoint: string;
|
|
54
55
|
symbol: string;
|
|
@@ -68,6 +69,7 @@ declare class BacktestMainService {
|
|
|
68
69
|
private cacheLogicService;
|
|
69
70
|
private frontendProviderService;
|
|
70
71
|
private telegramProviderService;
|
|
72
|
+
private moduleConnectionService;
|
|
71
73
|
run: ((payload: {
|
|
72
74
|
entryPoint: string;
|
|
73
75
|
symbol: string;
|
|
@@ -197,6 +199,8 @@ declare class TelegramLogicService {
|
|
|
197
199
|
private notifyClosed;
|
|
198
200
|
private notifyRisk;
|
|
199
201
|
private notifyAverageBuy;
|
|
202
|
+
private notifySignalOpen;
|
|
203
|
+
private notifySignalClose;
|
|
200
204
|
connect: (() => () => void) & functools_kit.ISingleshotClearable;
|
|
201
205
|
}
|
|
202
206
|
|
|
@@ -214,49 +218,15 @@ declare class TelegramTemplateService {
|
|
|
214
218
|
getClosedMarkdown: (event: IStrategyTickResultClosed) => Promise<string>;
|
|
215
219
|
getRiskMarkdown: (event: RiskContract) => Promise<string>;
|
|
216
220
|
getAverageBuyMarkdown: (event: AverageBuyCommit) => Promise<string>;
|
|
221
|
+
getSignalOpenMarkdown: (event: SignalOpenContract) => Promise<string>;
|
|
222
|
+
getSignalCloseMarkdown: (event: SignalCloseContract) => Promise<string>;
|
|
217
223
|
}
|
|
218
224
|
|
|
219
|
-
interface ILiveModule {
|
|
220
|
-
onTrailingTake(event: TrailingTakeCommit): Promise<void> | void;
|
|
221
|
-
onTrailingStop(event: TrailingStopCommit): Promise<void> | void;
|
|
222
|
-
onBreakeven(event: BreakevenCommit): Promise<void> | void;
|
|
223
|
-
onPartialProfit(event: PartialProfitCommit): Promise<void> | void;
|
|
224
|
-
onPartialLoss(event: PartialLossCommit): Promise<void> | void;
|
|
225
|
-
onScheduled(event: IStrategyTickResultScheduled): Promise<void> | void;
|
|
226
|
-
onCancelled(event: IStrategyTickResultCancelled): Promise<void> | void;
|
|
227
|
-
onOpened(event: IStrategyTickResultOpened): Promise<void> | void;
|
|
228
|
-
onClosed(event: IStrategyTickResultClosed): Promise<void> | void;
|
|
229
|
-
onRisk(event: RiskContract): Promise<void> | void;
|
|
230
|
-
onAverageBuy(event: AverageBuyCommit): Promise<void> | void;
|
|
231
|
-
}
|
|
232
|
-
type LiveModule = Partial<ILiveModule>;
|
|
233
|
-
type BaseModule = LiveModule;
|
|
234
|
-
type TBaseModuleCtor = new () => BaseModule;
|
|
235
|
-
|
|
236
225
|
declare class ModuleConnectionService {
|
|
237
226
|
readonly loggerService: LoggerService;
|
|
238
227
|
readonly resolveService: ResolveService;
|
|
239
228
|
readonly babelService: BabelService;
|
|
240
|
-
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
declare class LiveProviderService {
|
|
244
|
-
readonly loggerService: LoggerService;
|
|
245
|
-
readonly moduleConnectionService: ModuleConnectionService;
|
|
246
|
-
private handleTrailingTake;
|
|
247
|
-
private handleTrailingStop;
|
|
248
|
-
private handleBreakeven;
|
|
249
|
-
private handlePartialProfit;
|
|
250
|
-
private handlePartialLoss;
|
|
251
|
-
private handleScheduled;
|
|
252
|
-
private handleCancelled;
|
|
253
|
-
private handleOpened;
|
|
254
|
-
private handleClosed;
|
|
255
|
-
private handleRisk;
|
|
256
|
-
private handleAverageBuy;
|
|
257
|
-
enable: (() => (...args: any[]) => any) & functools_kit.ISingleshotClearable;
|
|
258
|
-
disable: () => void;
|
|
259
|
-
connect: (() => Promise<() => void>) & functools_kit.ISingleshotClearable;
|
|
229
|
+
loadModule: (fileName: string) => Promise<boolean>;
|
|
260
230
|
}
|
|
261
231
|
|
|
262
232
|
declare const cli: {
|
|
@@ -264,7 +234,6 @@ declare const cli: {
|
|
|
264
234
|
telegramWebService: TelegramWebService;
|
|
265
235
|
frontendProviderService: FrontendProviderService;
|
|
266
236
|
telegramProviderService: TelegramProviderService;
|
|
267
|
-
liveProviderService: LiveProviderService;
|
|
268
237
|
exchangeSchemaService: ExchangeSchemaService;
|
|
269
238
|
symbolSchemaService: SymbolSchemaService;
|
|
270
239
|
frameSchemaService: FrameSchemaService;
|
|
@@ -299,4 +268,4 @@ type Mode = "backtest" | "live" | "paper";
|
|
|
299
268
|
type Args = Partial<PayloadBacktest> | Partial<PayloadPaper> | Partial<PayloadLive>;
|
|
300
269
|
declare function run(mode: Mode, args: Args): Promise<void>;
|
|
301
270
|
|
|
302
|
-
export {
|
|
271
|
+
export { ExchangeName, FrameName, type ILogger, cli, run, setLogger };
|