@backtest-kit/cli 8.4.2 โ†’ 8.5.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/package.json CHANGED
@@ -1,126 +1,126 @@
1
- {
2
- "name": "@backtest-kit/cli",
3
- "version": "8.4.2",
4
- "description": "Zero-boilerplate CLI runner for backtest-kit strategies. Run backtests, paper trading, and live bots with candle cache warming, web dashboard, and Telegram notifications โ€” no setup code required.",
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/article_07_ai_news_trading_signals.html",
16
- "keywords": [
17
- "backtest",
18
- "backtesting",
19
- "trading",
20
- "cli",
21
- "cryptocurrency",
22
- "crypto",
23
- "live-trading",
24
- "paper-trading",
25
- "telegram",
26
- "binance",
27
- "ccxt",
28
- "candle-cache",
29
- "strategy",
30
- "typescript",
31
- "monorepo"
32
- ],
33
- "files": [
34
- "build",
35
- "types.d.ts",
36
- "template",
37
- "config",
38
- "docker",
39
- "README.md"
40
- ],
41
- "repository": {
42
- "type": "git",
43
- "url": "https://github.com/tripolskypetr/backtest-kit",
44
- "documentation": "https://github.com/tripolskypetr/backtest-kit/tree/master/docs"
45
- },
46
- "bugs": {
47
- "url": "https://github.com/tripolskypetr/backtest-kit/issues"
48
- },
49
- "scripts": {
50
- "build": "rollup -c",
51
- "start": "npm run build && node build/index.mjs ./math/test.pine --pine --symbol BTCUSDT --timeframe 15m --limit 180"
52
- },
53
- "main": "build/index.cjs",
54
- "module": "build/index.mjs",
55
- "source": "src/index.ts",
56
- "types": "./types.d.ts",
57
- "exports": {
58
- "require": "./build/index.cjs",
59
- "types": "./types.d.ts",
60
- "import": "./build/index.mjs",
61
- "default": "./build/index.cjs"
62
- },
63
- "devDependencies": {
64
- "@babel/plugin-transform-modules-umd": "7.27.1",
65
- "@babel/standalone": "7.29.1",
66
- "@backtest-kit/graph": "8.4.0",
67
- "@backtest-kit/ollama": "8.4.0",
68
- "@backtest-kit/pinets": "8.4.0",
69
- "@backtest-kit/signals": "8.4.0",
70
- "@backtest-kit/ui": "8.4.0",
71
- "@rollup/plugin-replace": "6.0.3",
72
- "@rollup/plugin-typescript": "11.1.6",
73
- "@types/image-size": "0.7.0",
74
- "@types/jsdom": "21.1.7",
75
- "@types/mustache": "4.2.6",
76
- "@types/node": "22.9.0",
77
- "@types/stack-trace": "0.0.33",
78
- "backtest-kit": "8.4.0",
79
- "glob": "11.0.1",
80
- "markdown-it": "14.1.1",
81
- "rimraf": "6.0.1",
82
- "rollup": "3.29.5",
83
- "rollup-plugin-dts": "6.1.1",
84
- "rollup-plugin-peer-deps-external": "2.2.4",
85
- "ts-morph": "27.0.2",
86
- "tslib": "2.7.0",
87
- "typedoc": "0.27.9",
88
- "worker-testbed": "2.0.0"
89
- },
90
- "peerDependencies": {
91
- "@babel/plugin-transform-modules-umd": "^7.27.1",
92
- "@babel/standalone": "^7.29.1",
93
- "@backtest-kit/graph": "^8.4.0",
94
- "@backtest-kit/ollama": "^8.4.0",
95
- "@backtest-kit/pinets": "^8.4.0",
96
- "@backtest-kit/signals": "^8.4.0",
97
- "@backtest-kit/ui": "^8.4.0",
98
- "backtest-kit": "^8.4.0",
99
- "markdown-it": "^14.1.1",
100
- "typescript": "^5.0.0"
101
- },
102
- "dependencies": {
103
- "ccxt": "4.5.39",
104
- "di-kit": "1.1.1",
105
- "di-scoped": "1.0.21",
106
- "dotenv": "17.3.1",
107
- "functools-kit": "2.3.0",
108
- "get-moment-stamp": "1.1.2",
109
- "image-size": "1.1.1",
110
- "jsdom": "26.1.0",
111
- "markdownlint": "0.38.0",
112
- "mustache": "4.2.0",
113
- "open": "11.0.0",
114
- "quickchart-js": "3.1.3",
115
- "resize-image-buffer": "1.0.0",
116
- "sanitize-html": "2.17.0",
117
- "stack-trace": "0.0.10",
118
- "telegraf": "4.15.3"
119
- },
120
- "bin": {
121
- "backtest-kit": "./build/index.mjs"
122
- },
123
- "publishConfig": {
124
- "access": "public"
125
- }
126
- }
1
+ {
2
+ "name": "@backtest-kit/cli",
3
+ "version": "8.5.0",
4
+ "description": "Zero-boilerplate CLI runner for backtest-kit strategies. Run backtests, paper trading, and live bots with candle cache warming, web dashboard, and Telegram notifications โ€” no setup code required.",
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/article_07_ai_news_trading_signals.html",
16
+ "keywords": [
17
+ "backtest",
18
+ "backtesting",
19
+ "trading",
20
+ "cli",
21
+ "cryptocurrency",
22
+ "crypto",
23
+ "live-trading",
24
+ "paper-trading",
25
+ "telegram",
26
+ "binance",
27
+ "ccxt",
28
+ "candle-cache",
29
+ "strategy",
30
+ "typescript",
31
+ "monorepo"
32
+ ],
33
+ "files": [
34
+ "build",
35
+ "types.d.ts",
36
+ "template",
37
+ "config",
38
+ "docker",
39
+ "README.md"
40
+ ],
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/tripolskypetr/backtest-kit",
44
+ "documentation": "https://github.com/tripolskypetr/backtest-kit/tree/master/docs"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/tripolskypetr/backtest-kit/issues"
48
+ },
49
+ "scripts": {
50
+ "build": "rollup -c",
51
+ "start": "npm run build && node build/index.mjs ./math/test.pine --pine --symbol BTCUSDT --timeframe 15m --limit 180"
52
+ },
53
+ "main": "build/index.cjs",
54
+ "module": "build/index.mjs",
55
+ "source": "src/index.ts",
56
+ "types": "./types.d.ts",
57
+ "exports": {
58
+ "require": "./build/index.cjs",
59
+ "types": "./types.d.ts",
60
+ "import": "./build/index.mjs",
61
+ "default": "./build/index.cjs"
62
+ },
63
+ "devDependencies": {
64
+ "@babel/plugin-transform-modules-umd": "7.27.1",
65
+ "@babel/standalone": "7.29.1",
66
+ "@backtest-kit/graph": "8.5.0",
67
+ "@backtest-kit/ollama": "8.5.0",
68
+ "@backtest-kit/pinets": "8.5.0",
69
+ "@backtest-kit/signals": "8.5.0",
70
+ "@backtest-kit/ui": "8.5.0",
71
+ "@rollup/plugin-replace": "6.0.3",
72
+ "@rollup/plugin-typescript": "11.1.6",
73
+ "@types/image-size": "0.7.0",
74
+ "@types/jsdom": "21.1.7",
75
+ "@types/mustache": "4.2.6",
76
+ "@types/node": "22.9.0",
77
+ "@types/stack-trace": "0.0.33",
78
+ "backtest-kit": "8.5.0",
79
+ "glob": "11.0.1",
80
+ "markdown-it": "14.1.1",
81
+ "rimraf": "6.0.1",
82
+ "rollup": "3.29.5",
83
+ "rollup-plugin-dts": "6.1.1",
84
+ "rollup-plugin-peer-deps-external": "2.2.4",
85
+ "ts-morph": "27.0.2",
86
+ "tslib": "2.7.0",
87
+ "typedoc": "0.27.9",
88
+ "worker-testbed": "2.0.0"
89
+ },
90
+ "peerDependencies": {
91
+ "@babel/plugin-transform-modules-umd": "^7.27.1",
92
+ "@babel/standalone": "^7.29.1",
93
+ "@backtest-kit/graph": "^8.5.0",
94
+ "@backtest-kit/ollama": "^8.5.0",
95
+ "@backtest-kit/pinets": "^8.5.0",
96
+ "@backtest-kit/signals": "^8.5.0",
97
+ "@backtest-kit/ui": "^8.5.0",
98
+ "backtest-kit": "^8.5.0",
99
+ "markdown-it": "^14.1.1",
100
+ "typescript": "^5.0.0"
101
+ },
102
+ "dependencies": {
103
+ "ccxt": "4.5.39",
104
+ "di-kit": "1.1.1",
105
+ "di-scoped": "1.0.21",
106
+ "dotenv": "17.3.1",
107
+ "functools-kit": "2.3.0",
108
+ "get-moment-stamp": "1.1.2",
109
+ "image-size": "1.1.1",
110
+ "jsdom": "26.1.0",
111
+ "markdownlint": "0.38.0",
112
+ "mustache": "4.2.0",
113
+ "open": "11.0.0",
114
+ "quickchart-js": "3.1.3",
115
+ "resize-image-buffer": "1.0.0",
116
+ "sanitize-html": "2.17.0",
117
+ "stack-trace": "0.0.10",
118
+ "telegraf": "4.15.3"
119
+ },
120
+ "bin": {
121
+ "backtest-kit": "./build/index.mjs"
122
+ },
123
+ "publishConfig": {
124
+ "access": "public"
125
+ }
126
+ }
@@ -1,23 +1,23 @@
1
- **๐Ÿช“ Averaging Entry (DCA)**
2
-
3
- **Symbol:** `{{symbol}}` ({{position}})
4
-
5
- **Current:** `{{currentPrice}}`
6
- **New Avg Entry:** `{{effectivePriceOpen}}`
7
- **Orig Entry:** `{{originalPriceOpen}}`
8
- **Cost:** `{{cost}}`
9
- **DCA Entries:** `{{totalEntries}}`
10
- **Partials Done:** `{{totalPartials}}`
11
- **Take Profit:** `{{priceTakeProfit}}`
12
- **Stop Loss:** `{{priceStopLoss}}`
13
- **Orig TP:** `{{originalPriceTakeProfit}}`
14
- **Orig SL:** `{{originalPriceStopLoss}}`
15
- **PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
16
- **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
17
- **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
18
- **Signal ID:** `{{signalId}}`
19
- **Time:** `{{timestamp}}`
20
-
21
- {{#backtest}}
22
- _๐Ÿงช Backtest_
1
+ **๐Ÿช“ Averaging Entry (DCA)**
2
+
3
+ **Symbol:** `{{symbol}}` ({{position}})
4
+
5
+ **Current:** `{{currentPrice}}`
6
+ **New Avg Entry:** `{{effectivePriceOpen}}`
7
+ **Orig Entry:** `{{originalPriceOpen}}`
8
+ **Cost:** `{{cost}}`
9
+ **DCA Entries:** `{{totalEntries}}`
10
+ **Partials Done:** `{{totalPartials}}`
11
+ **Take Profit:** `{{priceTakeProfit}}`
12
+ **Stop Loss:** `{{priceStopLoss}}`
13
+ **Orig TP:** `{{originalPriceTakeProfit}}`
14
+ **Orig SL:** `{{originalPriceStopLoss}}`
15
+ **PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
16
+ **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
17
+ **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
18
+ **Signal ID:** `{{signalId}}`
19
+ **Time:** `{{timestamp}}`
20
+
21
+ {{#backtest}}
22
+ _๐Ÿงช Backtest_
23
23
  {{/backtest}}
@@ -1,22 +1,22 @@
1
- **โš–๏ธ Breakeven**
2
-
3
- **Symbol:** `{{symbol}}` ({{position}})
4
-
5
- **Current:** `{{currentPrice}}`
6
- **Entry:** `{{priceOpen}}`
7
- **Orig Entry:** `{{originalPriceOpen}}`
8
- **DCA Entries:** `{{totalEntries}}`
9
- **Partials Done:** `{{totalPartials}}`
10
- **Take Profit:** `{{priceTakeProfit}}`
11
- **Stop Loss:** `{{priceStopLoss}}`
12
- **Orig TP:** `{{originalPriceTakeProfit}}`
13
- **Orig SL:** `{{originalPriceStopLoss}}`
14
- **PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
15
- **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
16
- **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
17
- **Signal ID:** `{{signalId}}`
18
- **Time:** `{{timestamp}}`
19
-
20
- {{#backtest}}
21
- _๐Ÿงช Backtest_
1
+ **โš–๏ธ Breakeven**
2
+
3
+ **Symbol:** `{{symbol}}` ({{position}})
4
+
5
+ **Current:** `{{currentPrice}}`
6
+ **Entry:** `{{priceOpen}}`
7
+ **Orig Entry:** `{{originalPriceOpen}}`
8
+ **DCA Entries:** `{{totalEntries}}`
9
+ **Partials Done:** `{{totalPartials}}`
10
+ **Take Profit:** `{{priceTakeProfit}}`
11
+ **Stop Loss:** `{{priceStopLoss}}`
12
+ **Orig TP:** `{{originalPriceTakeProfit}}`
13
+ **Orig SL:** `{{originalPriceStopLoss}}`
14
+ **PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
15
+ **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
16
+ **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
17
+ **Signal ID:** `{{signalId}}`
18
+ **Time:** `{{timestamp}}`
19
+
20
+ {{#backtest}}
21
+ _๐Ÿงช Backtest_
22
22
  {{/backtest}}
@@ -1,15 +1,15 @@
1
- **๐Ÿšซ Cancel Scheduled**
2
-
3
- **Symbol:** `{{symbol}}`
4
-
5
- **Orig Entry:** `{{originalPriceOpen}}`
6
- **DCA Entries:** `{{totalEntries}}`
7
- **Partials Done:** `{{totalPartials}}`
8
- {{#cancelId}}**Cancel ID:** `{{cancelId}}`
9
- {{/cancelId}}
10
- **Signal ID:** `{{signalId}}`
11
- **Time:** `{{timestamp}}`
12
-
13
- {{#backtest}}
14
- _๐Ÿงช Backtest_
1
+ **๐Ÿšซ Cancel Scheduled**
2
+
3
+ **Symbol:** `{{symbol}}`
4
+
5
+ **Orig Entry:** `{{originalPriceOpen}}`
6
+ **DCA Entries:** `{{totalEntries}}`
7
+ **Partials Done:** `{{totalPartials}}`
8
+ {{#cancelId}}**Cancel ID:** `{{cancelId}}`
9
+ {{/cancelId}}
10
+ **Signal ID:** `{{signalId}}`
11
+ **Time:** `{{timestamp}}`
12
+
13
+ {{#backtest}}
14
+ _๐Ÿงช Backtest_
15
15
  {{/backtest}}
@@ -1,22 +1,22 @@
1
- **๐Ÿšซ Signal Cancelled**
2
-
3
- **Symbol:** `{{symbol}}` ({{signal.position}})
4
-
5
- **Reason:** `{{reason}}`
6
- **Entry:** `{{signal.priceOpen}}`
7
- **Current:** `{{currentPrice}}`
8
- **Orig Entry:** `{{signal.originalPriceOpen}}`
9
- **Orig TP:** `{{signal.originalPriceTakeProfit}}`
10
- **Orig SL:** `{{signal.originalPriceStopLoss}}`
11
- **DCA Entries:** `{{signal.totalEntries}}`
12
- **Partials Done:** `{{signal.totalPartials}}`
13
- **Partial Executed:** {{signal.partialExecuted}}%
14
- **Peak Profit:** {{signal.peakProfit.pnlPercentage}}% ({{signal.peakProfit.pnlCost}} / {{signal.peakProfit.pnlEntries}})
15
- **Max Drawdown:** {{signal.maxDrawdown.pnlPercentage}}% ({{signal.maxDrawdown.pnlCost}} / {{signal.maxDrawdown.pnlEntries}})
16
- **Signal ID:** `{{signal.id}}`
17
- {{#cancelId}}**Cancel ID:** `{{cancelId}}`
18
- {{/cancelId}}**Time:** `{{createdAt}}`
19
-
20
- {{#backtest}}
21
- _๐Ÿงช Backtest_
1
+ **๐Ÿšซ Signal Cancelled**
2
+
3
+ **Symbol:** `{{symbol}}` ({{signal.position}})
4
+
5
+ **Reason:** `{{reason}}`
6
+ **Entry:** `{{signal.priceOpen}}`
7
+ **Current:** `{{currentPrice}}`
8
+ **Orig Entry:** `{{signal.originalPriceOpen}}`
9
+ **Orig TP:** `{{signal.originalPriceTakeProfit}}`
10
+ **Orig SL:** `{{signal.originalPriceStopLoss}}`
11
+ **DCA Entries:** `{{signal.totalEntries}}`
12
+ **Partials Done:** `{{signal.totalPartials}}`
13
+ **Partial Executed:** {{signal.partialExecuted}}%
14
+ **Peak Profit:** {{signal.peakProfit.pnlPercentage}}% ({{signal.peakProfit.pnlCost}} / {{signal.peakProfit.pnlEntries}})
15
+ **Max Drawdown:** {{signal.maxDrawdown.pnlPercentage}}% ({{signal.maxDrawdown.pnlCost}} / {{signal.maxDrawdown.pnlEntries}})
16
+ **Signal ID:** `{{signal.id}}`
17
+ {{#cancelId}}**Cancel ID:** `{{cancelId}}`
18
+ {{/cancelId}}**Time:** `{{createdAt}}`
19
+
20
+ {{#backtest}}
21
+ _๐Ÿงช Backtest_
22
22
  {{/backtest}}
@@ -1,17 +1,17 @@
1
- **๐Ÿ”’ Close Pending**
2
-
3
- **Symbol:** `{{symbol}}`
4
-
5
- **Orig Entry:** `{{originalPriceOpen}}`
6
- **DCA Entries:** `{{totalEntries}}`
7
- **Partials Done:** `{{totalPartials}}`
8
- {{#closeId}}**Close ID:** `{{closeId}}`
9
- {{/closeId}}**PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
10
- **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
11
- **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
12
- **Signal ID:** `{{signalId}}`
13
- **Time:** `{{timestamp}}`
14
-
15
- {{#backtest}}
16
- _๐Ÿงช Backtest_
1
+ **๐Ÿ”’ Close Pending**
2
+
3
+ **Symbol:** `{{symbol}}`
4
+
5
+ **Orig Entry:** `{{originalPriceOpen}}`
6
+ **DCA Entries:** `{{totalEntries}}`
7
+ **Partials Done:** `{{totalPartials}}`
8
+ {{#closeId}}**Close ID:** `{{closeId}}`
9
+ {{/closeId}}**PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
10
+ **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
11
+ **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
12
+ **Signal ID:** `{{signalId}}`
13
+ **Time:** `{{timestamp}}`
14
+
15
+ {{#backtest}}
16
+ _๐Ÿงช Backtest_
17
17
  {{/backtest}}
@@ -1,24 +1,24 @@
1
- **๐Ÿ Position Closed**
2
-
3
- **Symbol:** `{{symbol}}` ({{signal.position}})
4
-
5
- **Reason:** `{{closeReason}}`
6
- **Current:** `{{currentPrice}}`
7
- **Entry:** `{{pnl.priceOpen}}`
8
- **Exit:** `{{pnl.priceClose}}`
9
- **PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
10
- **Peak Profit:** {{signal.peakProfit.pnlPercentage}}% ({{signal.peakProfit.pnlCost}} / {{signal.peakProfit.pnlEntries}})
11
- **Max Drawdown:** {{signal.maxDrawdown.pnlPercentage}}% ({{signal.maxDrawdown.pnlCost}} / {{signal.maxDrawdown.pnlEntries}})
12
- **Orig Entry:** `{{signal.originalPriceOpen}}`
13
- **Orig TP:** `{{signal.originalPriceTakeProfit}}`
14
- **Orig SL:** `{{signal.originalPriceStopLoss}}`
15
- **DCA Entries:** `{{signal.totalEntries}}`
16
- **Partials Done:** `{{signal.totalPartials}}`
17
- **Partial Executed:** {{signal.partialExecuted}}%
18
- **Signal ID:** `{{signal.id}}`
19
- {{#closeId}}**Close ID:** `{{closeId}}`
20
- {{/closeId}}**Time:** `{{createdAt}}`
21
-
22
- {{#backtest}}
23
- _๐Ÿงช Backtest_
1
+ **๐Ÿ Position Closed**
2
+
3
+ **Symbol:** `{{symbol}}` ({{signal.position}})
4
+
5
+ **Reason:** `{{closeReason}}`
6
+ **Current:** `{{currentPrice}}`
7
+ **Entry:** `{{pnl.priceOpen}}`
8
+ **Exit:** `{{pnl.priceClose}}`
9
+ **PnL:** {{pnl.pnlPercentage}}% ({{pnl.pnlCost}} / {{pnl.pnlEntries}})
10
+ **Peak Profit:** {{signal.peakProfit.pnlPercentage}}% ({{signal.peakProfit.pnlCost}} / {{signal.peakProfit.pnlEntries}})
11
+ **Max Drawdown:** {{signal.maxDrawdown.pnlPercentage}}% ({{signal.maxDrawdown.pnlCost}} / {{signal.maxDrawdown.pnlEntries}})
12
+ **Orig Entry:** `{{signal.originalPriceOpen}}`
13
+ **Orig TP:** `{{signal.originalPriceTakeProfit}}`
14
+ **Orig SL:** `{{signal.originalPriceStopLoss}}`
15
+ **DCA Entries:** `{{signal.totalEntries}}`
16
+ **Partials Done:** `{{signal.totalPartials}}`
17
+ **Partial Executed:** {{signal.partialExecuted}}%
18
+ **Signal ID:** `{{signal.id}}`
19
+ {{#closeId}}**Close ID:** `{{closeId}}`
20
+ {{/closeId}}**Time:** `{{createdAt}}`
21
+
22
+ {{#backtest}}
23
+ _๐Ÿงช Backtest_
24
24
  {{/backtest}}
@@ -1,23 +1,23 @@
1
- **๐Ÿš€ Position Opened**
2
-
3
- **Symbol:** `{{symbol}}` ({{signal.position}})
4
-
5
- **Current:** `{{currentPrice}}`
6
- **Entry:** `{{signal.priceOpen}}`
7
- **Take Profit:** `{{signal.priceTakeProfit}}`
8
- **Stop Loss:** `{{signal.priceStopLoss}}`
9
- **Orig Entry:** `{{signal.originalPriceOpen}}`
10
- **Orig TP:** `{{signal.originalPriceTakeProfit}}`
11
- **Orig SL:** `{{signal.originalPriceStopLoss}}`
12
- **Cost:** `{{signal.cost}}`
13
- **DCA Entries:** `{{signal.totalEntries}}`
14
- **Partials Done:** `{{signal.totalPartials}}`
15
- **TTL:** {{signal.minuteEstimatedTime}} min
16
- **Peak Profit:** {{signal.peakProfit.pnlPercentage}}% ({{signal.peakProfit.pnlCost}} / {{signal.peakProfit.pnlEntries}})
17
- **Max Drawdown:** {{signal.maxDrawdown.pnlPercentage}}% ({{signal.maxDrawdown.pnlCost}} / {{signal.maxDrawdown.pnlEntries}})
18
- **Signal ID:** `{{signal.id}}`
19
- **Time:** `{{createdAt}}`
20
-
21
- {{#backtest}}
22
- _๐Ÿงช Backtest_
1
+ **๐Ÿš€ Position Opened**
2
+
3
+ **Symbol:** `{{symbol}}` ({{signal.position}})
4
+
5
+ **Current:** `{{currentPrice}}`
6
+ **Entry:** `{{signal.priceOpen}}`
7
+ **Take Profit:** `{{signal.priceTakeProfit}}`
8
+ **Stop Loss:** `{{signal.priceStopLoss}}`
9
+ **Orig Entry:** `{{signal.originalPriceOpen}}`
10
+ **Orig TP:** `{{signal.originalPriceTakeProfit}}`
11
+ **Orig SL:** `{{signal.originalPriceStopLoss}}`
12
+ **Cost:** `{{signal.cost}}`
13
+ **DCA Entries:** `{{signal.totalEntries}}`
14
+ **Partials Done:** `{{signal.totalPartials}}`
15
+ **TTL:** {{signal.minuteEstimatedTime}} min
16
+ **Peak Profit:** {{signal.peakProfit.pnlPercentage}}% ({{signal.peakProfit.pnlCost}} / {{signal.peakProfit.pnlEntries}})
17
+ **Max Drawdown:** {{signal.maxDrawdown.pnlPercentage}}% ({{signal.maxDrawdown.pnlCost}} / {{signal.maxDrawdown.pnlEntries}})
18
+ **Signal ID:** `{{signal.id}}`
19
+ **Time:** `{{createdAt}}`
20
+
21
+ {{#backtest}}
22
+ _๐Ÿงช Backtest_
23
23
  {{/backtest}}
@@ -1,23 +1,23 @@
1
- **๐Ÿ”ป Partial Loss**
2
-
3
- **Symbol:** `{{symbol}}` ({{position}})
4
-
5
- **Current:** `{{currentPrice}}`
6
- **Entry:** `{{priceOpen}}`
7
- **Orig Entry:** `{{originalPriceOpen}}`
8
- **Closed:** {{percentToClose}}%
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
- **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
17
- **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
18
- **Signal ID:** `{{signalId}}`
19
- **Time:** `{{timestamp}}`
20
-
21
- {{#backtest}}
22
- _๐Ÿงช Backtest_
1
+ **๐Ÿ”ป Partial Loss**
2
+
3
+ **Symbol:** `{{symbol}}` ({{position}})
4
+
5
+ **Current:** `{{currentPrice}}`
6
+ **Entry:** `{{priceOpen}}`
7
+ **Orig Entry:** `{{originalPriceOpen}}`
8
+ **Closed:** {{percentToClose}}%
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
+ **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
17
+ **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
18
+ **Signal ID:** `{{signalId}}`
19
+ **Time:** `{{timestamp}}`
20
+
21
+ {{#backtest}}
22
+ _๐Ÿงช Backtest_
23
23
  {{/backtest}}
@@ -1,23 +1,23 @@
1
- **๐Ÿ’š Partial Profit**
2
-
3
- **Symbol:** `{{symbol}}` ({{position}})
4
-
5
- **Current:** `{{currentPrice}}`
6
- **Entry:** `{{priceOpen}}`
7
- **Orig Entry:** `{{originalPriceOpen}}`
8
- **Closed:** {{percentToClose}}%
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
- **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
17
- **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
18
- **Signal ID:** `{{signalId}}`
19
- **Time:** `{{timestamp}}`
20
-
21
- {{#backtest}}
22
- _๐Ÿงช Backtest_
1
+ **๐Ÿ’š Partial Profit**
2
+
3
+ **Symbol:** `{{symbol}}` ({{position}})
4
+
5
+ **Current:** `{{currentPrice}}`
6
+ **Entry:** `{{priceOpen}}`
7
+ **Orig Entry:** `{{originalPriceOpen}}`
8
+ **Closed:** {{percentToClose}}%
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
+ **Peak Profit:** {{peakProfit.pnlPercentage}}% ({{peakProfit.pnlCost}} / {{peakProfit.pnlEntries}})
17
+ **Max Drawdown:** {{maxDrawdown.pnlPercentage}}% ({{maxDrawdown.pnlCost}} / {{maxDrawdown.pnlEntries}})
18
+ **Signal ID:** `{{signalId}}`
19
+ **Time:** `{{timestamp}}`
20
+
21
+ {{#backtest}}
22
+ _๐Ÿงช Backtest_
23
23
  {{/backtest}}