@continuumdao/continuum-node-sdk 1.3.29 → 1.3.31
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/dist/agent-host-catalog.json +3 -0
- package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -1
- package/dist/core/chart/analysis/analysis-agent-view.js +17 -0
- package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
- package/dist/core/chart/analysis/analysis-catalog.d.ts +19 -13
- package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
- package/dist/core/chart/analysis/analysis-catalog.js +120 -98
- package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
- package/dist/core/chart/analysis/analyze-tools.d.ts +47 -0
- package/dist/core/chart/analysis/analyze-tools.d.ts.map +1 -1
- package/dist/core/chart/analysis/analyze-tools.js +28 -9
- package/dist/core/chart/analysis/analyze-tools.js.map +1 -1
- package/dist/core/chart/analysis/candlestick-patterns-tools.d.ts +2 -0
- package/dist/core/chart/analysis/candlestick-patterns-tools.d.ts.map +1 -1
- package/dist/core/chart/analysis/candlestick-patterns-tools.js +16 -2
- package/dist/core/chart/analysis/candlestick-patterns-tools.js.map +1 -1
- package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts +1 -0
- package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts.map +1 -1
- package/dist/core/chart/analysis/chart-patterns-tools.d.ts +2 -0
- package/dist/core/chart/analysis/chart-patterns-tools.d.ts.map +1 -1
- package/dist/core/chart/analysis/chart-patterns-tools.js +2 -0
- package/dist/core/chart/analysis/chart-patterns-tools.js.map +1 -1
- package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts +1 -0
- package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts.map +1 -1
- package/dist/core/chart/analysis/key-fib-drawings-tools.js +48 -3
- package/dist/core/chart/analysis/key-fib-drawings-tools.js.map +1 -1
- package/dist/core/chart/analysis/key-level-drawings-tools.d.ts.map +1 -1
- package/dist/core/chart/analysis/key-level-drawings-tools.js +12 -1
- package/dist/core/chart/analysis/key-level-drawings-tools.js.map +1 -1
- package/dist/core/chart/analysis/moving-averages-analyze-tools.d.ts +116 -0
- package/dist/core/chart/analysis/moving-averages-analyze-tools.d.ts.map +1 -0
- package/dist/core/chart/analysis/moving-averages-analyze-tools.js +205 -0
- package/dist/core/chart/analysis/moving-averages-analyze-tools.js.map +1 -0
- package/dist/core/chart/analysis/moving-averages-highlight.d.ts +30 -0
- package/dist/core/chart/analysis/moving-averages-highlight.d.ts.map +1 -0
- package/dist/core/chart/analysis/moving-averages-highlight.js +77 -0
- package/dist/core/chart/analysis/moving-averages-highlight.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts +10 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js +123 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/build-trade.d.ts +21 -0
- package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/build-trade.js +154 -17
- package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/chart-data-purpose.d.ts +20 -0
- package/dist/core/chart/analysis/trade-setups/chart-data-purpose.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/chart-data-purpose.js +207 -0
- package/dist/core/chart/analysis/trade-setups/chart-data-purpose.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/index.d.ts +2 -0
- package/dist/core/chart/analysis/trade-setups/index.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/index.js +2 -0
- package/dist/core/chart/analysis/trade-setups/index.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts +1 -0
- package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js +3 -1
- package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts +2 -0
- package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js +33 -18
- package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.d.ts +110 -0
- package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.js +330 -0
- package/dist/core/chart/analysis/trade-setups/moving-averages-trade-setup.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/shared.d.ts +1 -1
- package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/shared.js +2 -0
- package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts +13 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js +11 -0
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts +16 -0
- package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js +24 -0
- package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +11 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +28 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +13 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea.js +12 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +4 -0
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +11 -0
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts +122 -0
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js +231 -0
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js +12 -3
- package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts +41 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js +80 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js.map +1 -0
- package/dist/core/chart/analysis/trend-line-menu-summary.d.ts +9 -2
- package/dist/core/chart/analysis/trend-line-menu-summary.d.ts.map +1 -1
- package/dist/core/chart/analysis/trend-line-menu-summary.js +74 -6
- package/dist/core/chart/analysis/trend-line-menu-summary.js.map +1 -1
- package/dist/core/chart-patterns/recommendation.d.ts +1 -0
- package/dist/core/chart-patterns/recommendation.d.ts.map +1 -1
- package/dist/core/chart-patterns/recommendation.js +7 -1
- package/dist/core/chart-patterns/recommendation.js.map +1 -1
- package/dist/core/chart-patterns/scan.d.ts.map +1 -1
- package/dist/core/chart-patterns/scan.js +4 -1
- package/dist/core/chart-patterns/scan.js.map +1 -1
- package/dist/core/chart-patterns/types.d.ts +2 -0
- package/dist/core/chart-patterns/types.d.ts.map +1 -1
- package/dist/core/mpc/broadcast-sign-result.d.ts +1 -0
- package/dist/core/mpc/broadcast-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/broadcast-sign-result.js +66 -0
- package/dist/core/mpc/broadcast-sign-result.js.map +1 -1
- package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts +13 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts.map +1 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.js +93 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.js.map +1 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts +6 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts.map +1 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.js +59 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.js.map +1 -0
- package/dist/core/mpc/eip712-sign-request.d.ts +8 -0
- package/dist/core/mpc/eip712-sign-request.d.ts.map +1 -0
- package/dist/core/mpc/eip712-sign-request.js +65 -0
- package/dist/core/mpc/eip712-sign-request.js.map +1 -0
- package/dist/core/mpc/schemas.d.ts +4 -0
- package/dist/core/mpc/schemas.d.ts.map +1 -1
- package/dist/core/mpc/schemas.js +3 -0
- package/dist/core/mpc/schemas.js.map +1 -1
- package/dist/core/mpc/sign-request-utils.d.ts +6 -0
- package/dist/core/mpc/sign-request-utils.d.ts.map +1 -1
- package/dist/core/mpc/sign-request-utils.js +47 -0
- package/dist/core/mpc/sign-request-utils.js.map +1 -1
- package/dist/core/mpc/sign-result-summary.d.ts.map +1 -1
- package/dist/core/mpc/sign-result-summary.js +5 -1
- package/dist/core/mpc/sign-result-summary.js.map +1 -1
- package/dist/core/mpc/trigger-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/trigger-sign-result.js +15 -1
- package/dist/core/mpc/trigger-sign-result.js.map +1 -1
- package/dist/core/mpc/types.d.ts +4 -0
- package/dist/core/mpc/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/agent-environment-variables.js +1 -1
- package/dist/mcp/agent-environment-variables.js.map +1 -1
- package/dist/mcp/chart.d.ts.map +1 -1
- package/dist/mcp/chart.js +17 -4
- package/dist/mcp/chart.js.map +1 -1
- package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
- package/dist/mcp/deferred/tool-group-map.js +3 -0
- package/dist/mcp/deferred/tool-group-map.js.map +1 -1
- package/dist/mcp/defi/bitquery-api-key.d.ts +16 -0
- package/dist/mcp/defi/bitquery-api-key.d.ts.map +1 -0
- package/dist/mcp/defi/bitquery-api-key.js +86 -0
- package/dist/mcp/defi/bitquery-api-key.js.map +1 -0
- package/dist/mcp/defi/catalog-adapter.d.ts +3 -2
- package/dist/mcp/defi/catalog-adapter.d.ts.map +1 -1
- package/dist/mcp/defi/catalog-adapter.js +7 -2
- package/dist/mcp/defi/catalog-adapter.js.map +1 -1
- package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts +3 -0
- package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts.map +1 -1
- package/dist/mcp/defi/defi-protocol-fetch-meta.js +28 -18
- package/dist/mcp/defi/defi-protocol-fetch-meta.js.map +1 -1
- package/dist/mcp/defi/discovery.js +1 -1
- package/dist/mcp/defi/discovery.js.map +1 -1
- package/dist/mcp/defi/handler.d.ts.map +1 -1
- package/dist/mcp/defi/handler.js +20 -3
- package/dist/mcp/defi/handler.js.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.js +11 -1
- package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
- package/dist/mcp/defi/the-graph-api-key.d.ts +17 -0
- package/dist/mcp/defi/the-graph-api-key.d.ts.map +1 -0
- package/dist/mcp/defi/the-graph-api-key.js +82 -0
- package/dist/mcp/defi/the-graph-api-key.js.map +1 -0
- package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
- package/dist/mcp/defi/uniswap-api-key.js +3 -0
- package/dist/mcp/defi/uniswap-api-key.js.map +1 -1
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.d.ts +7 -0
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.d.ts.map +1 -0
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js +11 -0
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js.map +1 -0
- package/dist/mcp/mpc.js +2 -2
- package/dist/mcp/mpc.js.map +1 -1
- package/dist/mcp/resources/agent-cron-jobs.md +11 -1
- package/dist/mcp/resources/chart.md +3 -2
- package/dist/mcp/resources/uniswap-tpsl-monitor-cron.example.md +27 -0
- package/dist/mcp/trade-tools.d.ts.map +1 -1
- package/dist/mcp/trade-tools.js +192 -4
- package/dist/mcp/trade-tools.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const trendStructureSelectionSchema = z
|
|
3
|
+
.object({
|
|
4
|
+
kind: z.literal('trend_structure'),
|
|
5
|
+
trendLineNumber: z.number().int().min(1),
|
|
6
|
+
})
|
|
7
|
+
.strict();
|
|
8
|
+
const keyLevelsSelectionSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
kind: z.literal('key_levels'),
|
|
11
|
+
levelNumber: z.number().int().min(1),
|
|
12
|
+
framing: z.enum(['bounce', 'break']),
|
|
13
|
+
brokenLevelNumber: z.number().int().min(1).optional(),
|
|
14
|
+
})
|
|
15
|
+
.strict();
|
|
16
|
+
const keyLevelFibonacciSelectionSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
kind: z.literal('key_level_fibonacci'),
|
|
19
|
+
fibPairNumber: z.number().int().min(1),
|
|
20
|
+
side: z.enum(['long', 'short']),
|
|
21
|
+
lowLevelNumber: z.number().int().min(1),
|
|
22
|
+
highLevelNumber: z.number().int().min(1),
|
|
23
|
+
framing: z.enum(['retrace', 'break']).optional(),
|
|
24
|
+
brokenLevelNumber: z.number().int().min(1).optional(),
|
|
25
|
+
})
|
|
26
|
+
.strict();
|
|
27
|
+
const chartPatternSelectionSchema = z
|
|
28
|
+
.object({
|
|
29
|
+
kind: z.literal('chart_pattern'),
|
|
30
|
+
patternNumber: z.number().int().min(1),
|
|
31
|
+
patternId: z.string().min(1),
|
|
32
|
+
})
|
|
33
|
+
.strict();
|
|
34
|
+
const candlestickSelectionSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
kind: z.literal('candlestick'),
|
|
37
|
+
patternId: z.string().min(1),
|
|
38
|
+
barIndex: z.number().int().min(0),
|
|
39
|
+
})
|
|
40
|
+
.strict();
|
|
41
|
+
const bollingerSelectionSchema = z
|
|
42
|
+
.object({
|
|
43
|
+
kind: z.literal('bollinger_bands'),
|
|
44
|
+
period: z.number().int().min(1),
|
|
45
|
+
stdDev: z.number().positive(),
|
|
46
|
+
setupPurposeCode: z.string().min(1),
|
|
47
|
+
})
|
|
48
|
+
.strict();
|
|
49
|
+
const movingAveragesSelectionSchema = z
|
|
50
|
+
.object({
|
|
51
|
+
kind: z.literal('moving_averages'),
|
|
52
|
+
strategy: z.enum(['crossover', 'proximity_retest']),
|
|
53
|
+
fastPeriod: z.number().int().min(1),
|
|
54
|
+
slowPeriod: z.number().int().min(1),
|
|
55
|
+
maType: z.enum(['sma', 'ema']),
|
|
56
|
+
setupPurposeCode: z.string().min(1),
|
|
57
|
+
})
|
|
58
|
+
.strict();
|
|
59
|
+
const momentumSelectionSchema = z
|
|
60
|
+
.object({
|
|
61
|
+
kind: 'momentum',
|
|
62
|
+
rsiPeriod: z.number().int().min(1),
|
|
63
|
+
})
|
|
64
|
+
.strict();
|
|
65
|
+
const rangeVolatilitySelectionSchema = z
|
|
66
|
+
.object({
|
|
67
|
+
kind: z.literal('range_volatility'),
|
|
68
|
+
})
|
|
69
|
+
.strict();
|
|
70
|
+
export const TradeSetupSelectionSchema = z.discriminatedUnion('kind', [
|
|
71
|
+
trendStructureSelectionSchema,
|
|
72
|
+
keyLevelsSelectionSchema,
|
|
73
|
+
keyLevelFibonacciSelectionSchema,
|
|
74
|
+
chartPatternSelectionSchema,
|
|
75
|
+
candlestickSelectionSchema,
|
|
76
|
+
bollingerSelectionSchema,
|
|
77
|
+
movingAveragesSelectionSchema,
|
|
78
|
+
momentumSelectionSchema,
|
|
79
|
+
rangeVolatilitySelectionSchema,
|
|
80
|
+
]);
|
|
81
|
+
export function extractTradeSetupSelection(setup) {
|
|
82
|
+
switch (setup.kind) {
|
|
83
|
+
case 'trend_structure': {
|
|
84
|
+
const n = setup.setup.trendLineNumber;
|
|
85
|
+
return n != null && n >= 1 ? { kind: 'trend_structure', trendLineNumber: n } : undefined;
|
|
86
|
+
}
|
|
87
|
+
case 'key_levels': {
|
|
88
|
+
const s = setup.setup;
|
|
89
|
+
if (s.levelNumber == null || s.levelNumber < 1) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
const alt = s.breakRetestAlternative;
|
|
93
|
+
if (s.framing === 'break' && alt?.brokenLevelNumber != null) {
|
|
94
|
+
return {
|
|
95
|
+
kind: 'key_levels',
|
|
96
|
+
levelNumber: s.levelNumber,
|
|
97
|
+
framing: 'break',
|
|
98
|
+
brokenLevelNumber: alt.brokenLevelNumber,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
kind: 'key_levels',
|
|
103
|
+
levelNumber: s.levelNumber,
|
|
104
|
+
framing: s.framing,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
case 'key_level_fibonacci': {
|
|
108
|
+
const s = setup.setup;
|
|
109
|
+
const alt = s.breakRetestAlternative;
|
|
110
|
+
if (alt?.brokenLevelNumber != null) {
|
|
111
|
+
return {
|
|
112
|
+
kind: 'key_level_fibonacci',
|
|
113
|
+
fibPairNumber: s.fibPairNumber,
|
|
114
|
+
side: s.side === 'long' || s.side === 'short' ? s.side : 'long',
|
|
115
|
+
lowLevelNumber: s.lowLevelNumber,
|
|
116
|
+
highLevelNumber: s.highLevelNumber,
|
|
117
|
+
framing: 'break',
|
|
118
|
+
brokenLevelNumber: alt.brokenLevelNumber,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
kind: 'key_level_fibonacci',
|
|
123
|
+
fibPairNumber: s.fibPairNumber,
|
|
124
|
+
side: s.side === 'long' || s.side === 'short' ? s.side : 'long',
|
|
125
|
+
lowLevelNumber: s.lowLevelNumber,
|
|
126
|
+
highLevelNumber: s.highLevelNumber,
|
|
127
|
+
framing: 'retrace',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
case 'chart_pattern':
|
|
131
|
+
return {
|
|
132
|
+
kind: 'chart_pattern',
|
|
133
|
+
patternNumber: setup.setup.patternNumber,
|
|
134
|
+
patternId: setup.setup.patternId,
|
|
135
|
+
};
|
|
136
|
+
case 'candlestick':
|
|
137
|
+
return {
|
|
138
|
+
kind: 'candlestick',
|
|
139
|
+
patternId: setup.setup.patternId,
|
|
140
|
+
barIndex: setup.setup.barIndex,
|
|
141
|
+
};
|
|
142
|
+
case 'bollinger_bands': {
|
|
143
|
+
const s = setup.setup;
|
|
144
|
+
if (!s.setupPurposeCode) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
kind: 'bollinger_bands',
|
|
149
|
+
period: s.period,
|
|
150
|
+
stdDev: s.stdDev,
|
|
151
|
+
setupPurposeCode: s.setupPurposeCode,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
case 'moving_averages': {
|
|
155
|
+
const s = setup.setup;
|
|
156
|
+
return {
|
|
157
|
+
kind: 'moving_averages',
|
|
158
|
+
strategy: s.strategy,
|
|
159
|
+
fastPeriod: s.fastPeriod,
|
|
160
|
+
slowPeriod: s.slowPeriod,
|
|
161
|
+
maType: s.maType,
|
|
162
|
+
setupPurposeCode: s.setupPurposeCode,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
case 'momentum':
|
|
166
|
+
return {
|
|
167
|
+
kind: 'momentum',
|
|
168
|
+
rsiPeriod: setup.setup.rsiPeriod,
|
|
169
|
+
};
|
|
170
|
+
case 'range_volatility':
|
|
171
|
+
return { kind: 'range_volatility' };
|
|
172
|
+
default:
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/** Partial analyze_* tool args to re-bind the same menu/geometry on refresh. */
|
|
177
|
+
export function analyzeArgsFromTradeSetupSelection(selection) {
|
|
178
|
+
if (!selection) {
|
|
179
|
+
return {};
|
|
180
|
+
}
|
|
181
|
+
switch (selection.kind) {
|
|
182
|
+
case 'trend_structure':
|
|
183
|
+
return { tradeTrendLineNumber: selection.trendLineNumber };
|
|
184
|
+
case 'key_levels':
|
|
185
|
+
return {
|
|
186
|
+
tradeLevelNumber: selection.levelNumber,
|
|
187
|
+
...(selection.framing === 'break' && selection.brokenLevelNumber != null
|
|
188
|
+
? { tradeBrokenLevelNumber: selection.brokenLevelNumber }
|
|
189
|
+
: {}),
|
|
190
|
+
};
|
|
191
|
+
case 'key_level_fibonacci':
|
|
192
|
+
return {
|
|
193
|
+
fibPairNumber: selection.fibPairNumber,
|
|
194
|
+
tradeFibSide: selection.side,
|
|
195
|
+
};
|
|
196
|
+
case 'chart_pattern':
|
|
197
|
+
return { tradePatternNumber: selection.patternNumber };
|
|
198
|
+
case 'candlestick':
|
|
199
|
+
return {
|
|
200
|
+
tradePatternId: selection.patternId,
|
|
201
|
+
tradeBarIndex: selection.barIndex,
|
|
202
|
+
};
|
|
203
|
+
case 'bollinger_bands':
|
|
204
|
+
return {
|
|
205
|
+
period: selection.period,
|
|
206
|
+
stdDev: selection.stdDev,
|
|
207
|
+
};
|
|
208
|
+
case 'moving_averages':
|
|
209
|
+
return {
|
|
210
|
+
fastPeriod: selection.fastPeriod,
|
|
211
|
+
slowPeriod: selection.slowPeriod,
|
|
212
|
+
maType: selection.maType,
|
|
213
|
+
};
|
|
214
|
+
case 'momentum':
|
|
215
|
+
return { rsiPeriod: selection.rsiPeriod };
|
|
216
|
+
case 'range_volatility':
|
|
217
|
+
return {};
|
|
218
|
+
default:
|
|
219
|
+
return {};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
export function tradeSetupSelectionForAnalysisType(ideas, analysisType) {
|
|
223
|
+
for (let i = ideas.length - 1; i >= 0; i -= 1) {
|
|
224
|
+
const idea = ideas[i];
|
|
225
|
+
if (idea.source.analysisType === analysisType && idea.tradeSetupSelection) {
|
|
226
|
+
return idea.tradeSetupSelection;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=trade-setup-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trade-setup-selection.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trade-setup-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trend-structure-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAwBF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,wBAAwB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"trend-structure-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAGlE,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IAC5C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAwBF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,wBAAwB,GAAG,IAAI,CAqGlC;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;EAoBhF"}
|
|
@@ -45,17 +45,26 @@ export function buildTrendStructureTradeSetup(input) {
|
|
|
45
45
|
else if (side === 'long' && line.kind !== 'support') {
|
|
46
46
|
unclearReason = 'Bullish bias expects a support trend line for a long limit entry.';
|
|
47
47
|
}
|
|
48
|
-
else if (side === 'short' && line.kind !== 'resistance') {
|
|
49
|
-
unclearReason = 'Bearish bias expects a resistance trend line for a short limit entry.';
|
|
48
|
+
else if (side === 'short' && line.kind !== 'resistance' && line.kind !== 'support') {
|
|
49
|
+
unclearReason = 'Bearish bias expects a resistance or broken-support trend line for a short limit entry.';
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
52
52
|
const linePrice = trendLinePriceAtLastBar(line, input.bars);
|
|
53
53
|
if (linePrice == null || !isFiniteTradePrice(linePrice)) {
|
|
54
54
|
unclearReason = 'Could not project trade trend line to the current bar.';
|
|
55
55
|
}
|
|
56
|
+
else if (side === 'short' && line.kind === 'support' && linePrice <= close * 1.001) {
|
|
57
|
+
unclearReason =
|
|
58
|
+
'Bearish short needs broken support above last close for a retest entry — support line sits at or below spot.';
|
|
59
|
+
}
|
|
56
60
|
else {
|
|
57
61
|
triggerPrice = linePrice;
|
|
58
|
-
|
|
62
|
+
if (side === 'short' && line.kind === 'support') {
|
|
63
|
+
triggerLabel = 'broken support retest';
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
triggerLabel = `${line.kind} trend retest`;
|
|
67
|
+
}
|
|
59
68
|
if (side === 'long' && input.swingLow) {
|
|
60
69
|
invalidationPrice = input.swingLow.price;
|
|
61
70
|
invalidationLabel = 'recent swing low';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trend-structure-trade-setup.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAyB/C,SAAS,YAAY,CAAC,IAAuC;IAC5D,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,SAAS;YACb,OAAO,MAAM,CAAC;QACf,KAAK,SAAS;YACb,OAAO,OAAO,CAAC;QAChB;YACC,OAAO,SAAS,CAAC;IACnB,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAsB,EAAE,SAAgD;IACpG,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,IAAI,EAAE,CAAC;QACV,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAChE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAU7C;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACpC,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC;IAElD,IAAI,YAAgC,CAAC;IACrC,IAAI,YAAgC,CAAC;IACrC,IAAI,iBAAqC,CAAC;IAC1C,IAAI,iBAAqC,CAAC;IAC1C,IAAI,WAA+B,CAAC;IACpC,IAAI,WAA+B,CAAC;IACpC,IAAI,aAAiC,CAAC;IAEtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,aAAa,GAAG,oEAAoE,CAAC;IACtF,CAAC;SAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,aAAa,GAAG,6DAA6D,CAAC;IAC/E,CAAC;SAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACvD,aAAa,GAAG,mEAAmE,CAAC;IACrF,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"trend-structure-trade-setup.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/trend-structure-trade-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TradeIdea } from './trade-idea.js';
|
|
2
|
+
import { type BuildTradeFromTradeIdeaInput } from './build-trade.js';
|
|
3
|
+
export type UniswapTpslTrigger = 'take_profit' | 'stop_loss';
|
|
4
|
+
export type UniswapTpslMonitorInput = {
|
|
5
|
+
side: 'long' | 'short';
|
|
6
|
+
lastPrice: number;
|
|
7
|
+
takeProfitPrice?: number;
|
|
8
|
+
stopLossPrice?: number;
|
|
9
|
+
};
|
|
10
|
+
export type UniswapTpslMonitorEvaluation = {
|
|
11
|
+
triggered: boolean;
|
|
12
|
+
trigger?: UniswapTpslTrigger;
|
|
13
|
+
lastPriceHuman: string;
|
|
14
|
+
takeProfitPriceHuman?: string;
|
|
15
|
+
stopLossPriceHuman?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function parseHumanPrice(value: string | undefined): number | null;
|
|
18
|
+
export declare function evaluateUniswapTpslMonitor(input: UniswapTpslMonitorInput): UniswapTpslMonitorEvaluation;
|
|
19
|
+
export declare function uniswapTpslPricesFromTradeIdea(idea: TradeIdea, input: BuildTradeFromTradeIdeaInput): {
|
|
20
|
+
takeProfitPrice?: number;
|
|
21
|
+
stopLossPrice?: number;
|
|
22
|
+
} | null;
|
|
23
|
+
export type UniswapTpslMonitorCronSpec = {
|
|
24
|
+
name: string;
|
|
25
|
+
tradeIdeaId: string;
|
|
26
|
+
chainId: number;
|
|
27
|
+
protocolId: 'uniswap';
|
|
28
|
+
sizeUsdHuman: string;
|
|
29
|
+
keyGenId: string;
|
|
30
|
+
pollEveryMinutes: number;
|
|
31
|
+
takeProfitPriceHuman?: string;
|
|
32
|
+
stopLossPriceHuman?: string;
|
|
33
|
+
side: 'long' | 'short';
|
|
34
|
+
};
|
|
35
|
+
export declare function buildUniswapTpslMonitorCronMessage(spec: UniswapTpslMonitorCronSpec): string;
|
|
36
|
+
export declare function uniswapTpslMonitorSchedule(pollEveryMinutes: number): {
|
|
37
|
+
kind: 'every';
|
|
38
|
+
everyMs: number;
|
|
39
|
+
};
|
|
40
|
+
export declare function uniswapTpslMonitorCronName(tradeIdeaId: string): string;
|
|
41
|
+
//# sourceMappingURL=uniswap-tpsl-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniswap-tpsl-monitor.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAA6C,KAAK,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AAE/G,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,WAAW,CAAC;AAE7D,MAAM,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKxE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,4BAA4B,CAwBvG;AAED,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,4BAA4B,GACjC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAS3D;AAED,MAAM,MAAM,0BAA0B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,0BAA0B,GAAG,MAAM,CA4B3F;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAGrG;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGtE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { formatHumanPrice, validateBuildTradePrices } from './build-trade.js';
|
|
2
|
+
export function parseHumanPrice(value) {
|
|
3
|
+
const trimmed = value?.trim();
|
|
4
|
+
if (!trimmed)
|
|
5
|
+
return null;
|
|
6
|
+
const n = Number.parseFloat(trimmed);
|
|
7
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
8
|
+
}
|
|
9
|
+
export function evaluateUniswapTpslMonitor(input) {
|
|
10
|
+
const { side, lastPrice, takeProfitPrice, stopLossPrice } = input;
|
|
11
|
+
const base = {
|
|
12
|
+
triggered: false,
|
|
13
|
+
lastPriceHuman: formatHumanPrice(lastPrice),
|
|
14
|
+
...(takeProfitPrice != null ? { takeProfitPriceHuman: formatHumanPrice(takeProfitPrice) } : {}),
|
|
15
|
+
...(stopLossPrice != null ? { stopLossPriceHuman: formatHumanPrice(stopLossPrice) } : {}),
|
|
16
|
+
};
|
|
17
|
+
if (side === 'long') {
|
|
18
|
+
if (takeProfitPrice != null && lastPrice >= takeProfitPrice) {
|
|
19
|
+
return { ...base, triggered: true, trigger: 'take_profit' };
|
|
20
|
+
}
|
|
21
|
+
if (stopLossPrice != null && lastPrice <= stopLossPrice) {
|
|
22
|
+
return { ...base, triggered: true, trigger: 'stop_loss' };
|
|
23
|
+
}
|
|
24
|
+
return base;
|
|
25
|
+
}
|
|
26
|
+
if (takeProfitPrice != null && lastPrice <= takeProfitPrice) {
|
|
27
|
+
return { ...base, triggered: true, trigger: 'take_profit' };
|
|
28
|
+
}
|
|
29
|
+
if (stopLossPrice != null && lastPrice >= stopLossPrice) {
|
|
30
|
+
return { ...base, triggered: true, trigger: 'stop_loss' };
|
|
31
|
+
}
|
|
32
|
+
return base;
|
|
33
|
+
}
|
|
34
|
+
export function uniswapTpslPricesFromTradeIdea(idea, input) {
|
|
35
|
+
const validated = validateBuildTradePrices(idea, input);
|
|
36
|
+
if (!validated.ok) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
...(validated.data.target != null ? { takeProfitPrice: validated.data.target } : {}),
|
|
41
|
+
...(validated.data.invalidation != null ? { stopLossPrice: validated.data.invalidation } : {}),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function buildUniswapTpslMonitorCronMessage(spec) {
|
|
45
|
+
const yamlBlock = [
|
|
46
|
+
'tradeTpslMonitor:',
|
|
47
|
+
'```yaml',
|
|
48
|
+
`protocolId: ${spec.protocolId}`,
|
|
49
|
+
`chainId: ${spec.chainId}`,
|
|
50
|
+
`tradeIdeaId: ${spec.tradeIdeaId}`,
|
|
51
|
+
`sizeUsdHuman: "${spec.sizeUsdHuman}"`,
|
|
52
|
+
`side: ${spec.side}`,
|
|
53
|
+
`pollEveryMinutes: ${spec.pollEveryMinutes}`,
|
|
54
|
+
...(spec.takeProfitPriceHuman ? [`takeProfitPriceHuman: "${spec.takeProfitPriceHuman}"`] : []),
|
|
55
|
+
...(spec.stopLossPriceHuman ? [`stopLossPriceHuman: "${spec.stopLossPriceHuman}"`] : []),
|
|
56
|
+
'```',
|
|
57
|
+
].join('\n');
|
|
58
|
+
return `[Cron] Uniswap TP/SL monitor for trade idea ${spec.tradeIdeaId}
|
|
59
|
+
|
|
60
|
+
Each run:
|
|
61
|
+
1. \`load_defi_protocol({ protocolId: "uniswap-v4" })\`
|
|
62
|
+
2. Fetch current price via \`ctm_uniswap_v4_fetch_ohlcv\` (last candle close) or a small \`ctm_uniswap_v4_quote\` probe on chainId ${spec.chainId}.
|
|
63
|
+
3. Compare price to TP/SL levels in the YAML block below using long/short rules (long: TP when price >= TP, SL when price <= SL; short inverted).
|
|
64
|
+
4. If triggered: \`build_trade_from_trade_idea\` with protocolId uniswap, orderKind market, reversed exit side, sizeUsdHuman ${spec.sizeUsdHuman}, keyGenId ${spec.keyGenId}, chainId ${spec.chainId}. Purpose must note TP/SL exit.
|
|
65
|
+
5. If not triggered: reply \`monitor_ok\` with last price and distances.
|
|
66
|
+
6. If entry never filled and monitor is obsolete: \`deactivate_cron_job\` for this job.
|
|
67
|
+
|
|
68
|
+
Best-effort agent monitor — not exchange-grade resting TP/SL. Disable when filled or cancelled.
|
|
69
|
+
|
|
70
|
+
${yamlBlock}`;
|
|
71
|
+
}
|
|
72
|
+
export function uniswapTpslMonitorSchedule(pollEveryMinutes) {
|
|
73
|
+
const minutes = Math.max(1, Math.floor(pollEveryMinutes));
|
|
74
|
+
return { kind: 'every', everyMs: minutes * 60_000 };
|
|
75
|
+
}
|
|
76
|
+
export function uniswapTpslMonitorCronName(tradeIdeaId) {
|
|
77
|
+
const slug = tradeIdeaId.replace(/[^a-zA-Z0-9-]/g, '').slice(0, 24);
|
|
78
|
+
return `uniswap-tpsl-${slug || 'monitor'}`;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=uniswap-tpsl-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniswap-tpsl-monitor.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,14 @@ export type TrendLineTradePick = {
|
|
|
32
32
|
/** 1-based trendLineMenu number when a bias-aligned line exists. */
|
|
33
33
|
trendLineNumber: number | null;
|
|
34
34
|
};
|
|
35
|
-
/**
|
|
36
|
-
export declare function
|
|
35
|
+
/** Trade setup uses an explicit trendLineMenu # (operator or apply_trend_line_drawings). */
|
|
36
|
+
export declare function trendLineForTradeSetupByNumber(lines: TrendLine[], trendLineNumber?: number | null): TrendLineTradePick;
|
|
37
|
+
/** Whether projected line price is a valid limit-retest level for bias (OHLCV-only, no chart draw). */
|
|
38
|
+
export declare function trendLineValidForRetestTrade(bias: 'bullish' | 'bearish', line: TrendLine, priceAtLast: number, lastClose: number): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Auto-pick trend line for trade entry from OHLCV only: valid retest geometry at the last bar,
|
|
41
|
+
* then highest score, then nearest to last close. Does not use menu rank (#1) as a shortcut.
|
|
42
|
+
*/
|
|
43
|
+
export declare function pickTrendLineForTradeSetup(bias: 'bullish' | 'bearish' | 'neutral', lines: TrendLine[], bars?: Record<string, unknown>[], lastClose?: number | null): TrendLineTradePick;
|
|
37
44
|
export declare function trendLinePriceAtLastBar(line: TrendLine, bars: Record<string, unknown>[]): number | null;
|
|
38
45
|
//# sourceMappingURL=trend-line-menu-summary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trend-line-menu-summary.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAIxE,MAAM,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,EAAE;QACR,MAAM,EAAE,sBAAsB,CAAC;QAC/B,MAAM,EAAE,sBAAsB,CAAC;KAC/B,CAAC;CACF,CAAC;AA8BF,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,GACpB,uBAAuB,CAYzB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,kBAAkB,EAAE,CAkBtB;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,MAAM,GACrB,SAAS,GAAG,SAAS,CAKvB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,oEAAoE;IACpE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"trend-line-menu-summary.d.ts","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAIxE,MAAM,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,EAAE;QACR,MAAM,EAAE,sBAAsB,CAAC;QAC/B,MAAM,EAAE,sBAAsB,CAAC;KAC/B,CAAC;CACF,CAAC;AA8BF,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,GACpB,uBAAuB,CAYzB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC7B,kBAAkB,EAAE,CAkBtB;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,MAAM,GACrB,SAAS,GAAG,SAAS,CAKvB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,oEAAoE;IACpE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,kBAAkB,CAOpB;AASD,uGAAuG;AACvG,wBAAgB,4BAA4B,CAC3C,IAAI,EAAE,SAAS,GAAG,SAAS,EAC3B,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAiBT;AA0BD;;;GAGG;AACH,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACvC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAO,EACpC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,kBAAkB,CA+BpB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,CAUvG"}
|
|
@@ -68,17 +68,85 @@ export function pickTrendLineByNumber(lines, trendLineNumber) {
|
|
|
68
68
|
}
|
|
69
69
|
return lines[trendLineNumber - 1];
|
|
70
70
|
}
|
|
71
|
-
/**
|
|
72
|
-
export function
|
|
71
|
+
/** Trade setup uses an explicit trendLineMenu # (operator or apply_trend_line_drawings). */
|
|
72
|
+
export function trendLineForTradeSetupByNumber(lines, trendLineNumber) {
|
|
73
|
+
if (trendLineNumber == null || !Number.isFinite(trendLineNumber) || trendLineNumber < 1) {
|
|
74
|
+
return { line: null, trendLineNumber: null };
|
|
75
|
+
}
|
|
76
|
+
const n = Math.trunc(trendLineNumber);
|
|
77
|
+
const line = pickTrendLineByNumber(lines, n) ?? null;
|
|
78
|
+
return { line, trendLineNumber: line ? n : null };
|
|
79
|
+
}
|
|
80
|
+
/** Whether projected line price is a valid limit-retest level for bias (OHLCV-only, no chart draw). */
|
|
81
|
+
export function trendLineValidForRetestTrade(bias, line, priceAtLast, lastClose) {
|
|
82
|
+
if (!Number.isFinite(priceAtLast) || !Number.isFinite(lastClose) || lastClose <= 0) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
const eps = Math.max(Math.abs(lastClose) * 0.001, 1e-8);
|
|
86
|
+
if (bias === 'bearish') {
|
|
87
|
+
// Short limit waits for a rally into the line — retest must sit above spot.
|
|
88
|
+
if (priceAtLast <= lastClose + eps) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
return line.kind === 'resistance' || line.kind === 'support';
|
|
92
|
+
}
|
|
93
|
+
// Long limit waits for a dip into support — line at or slightly above spot (touch tolerance).
|
|
94
|
+
if (line.kind !== 'support') {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return priceAtLast <= lastClose + eps;
|
|
98
|
+
}
|
|
99
|
+
function collectTrendRetestCandidates(bias, lines, bars, lastClose) {
|
|
100
|
+
const out = [];
|
|
101
|
+
for (let index = 0; index < lines.length; index++) {
|
|
102
|
+
const line = lines[index];
|
|
103
|
+
const priceAtLast = trendLinePriceAtLastBar(line, bars);
|
|
104
|
+
if (priceAtLast == null || !trendLineValidForRetestTrade(bias, line, priceAtLast, lastClose)) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const gap = bias === 'bearish'
|
|
108
|
+
? priceAtLast - lastClose
|
|
109
|
+
: lastClose >= priceAtLast
|
|
110
|
+
? lastClose - priceAtLast
|
|
111
|
+
: priceAtLast - lastClose;
|
|
112
|
+
out.push({ line, index, priceAtLast, gap });
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Auto-pick trend line for trade entry from OHLCV only: valid retest geometry at the last bar,
|
|
118
|
+
* then highest score, then nearest to last close. Does not use menu rank (#1) as a shortcut.
|
|
119
|
+
*/
|
|
120
|
+
export function pickTrendLineForTradeSetup(bias, lines, bars = [], lastClose) {
|
|
73
121
|
if (bias === 'neutral' || !lines.length) {
|
|
74
122
|
return { line: null, trendLineNumber: null };
|
|
75
123
|
}
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
124
|
+
const close = lastClose != null && Number.isFinite(lastClose)
|
|
125
|
+
? lastClose
|
|
126
|
+
: (() => {
|
|
127
|
+
if (!bars.length) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const lastBar = bars[bars.length - 1];
|
|
131
|
+
const raw = lastBar.close ?? lastBar.Close;
|
|
132
|
+
return typeof raw === 'number' && Number.isFinite(raw) ? raw : null;
|
|
133
|
+
})();
|
|
134
|
+
if (close == null) {
|
|
79
135
|
return { line: null, trendLineNumber: null };
|
|
80
136
|
}
|
|
81
|
-
|
|
137
|
+
const candidates = collectTrendRetestCandidates(bias, lines, bars, close);
|
|
138
|
+
if (!candidates.length) {
|
|
139
|
+
return { line: null, trendLineNumber: null };
|
|
140
|
+
}
|
|
141
|
+
candidates.sort((a, b) => {
|
|
142
|
+
const scoreDelta = b.line.score - a.line.score;
|
|
143
|
+
if (Math.abs(scoreDelta) > 1e-9) {
|
|
144
|
+
return scoreDelta;
|
|
145
|
+
}
|
|
146
|
+
return a.gap - b.gap;
|
|
147
|
+
});
|
|
148
|
+
const picked = candidates[0];
|
|
149
|
+
return { line: picked.line, trendLineNumber: picked.index + 1 };
|
|
82
150
|
}
|
|
83
151
|
export function trendLinePriceAtLastBar(line, bars) {
|
|
84
152
|
if (!bars.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trend-line-menu-summary.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"trend-line-menu-summary.js","sourceRoot":"","sources":["../../../../src/core/chart/analysis/trend-line-menu-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ChartPatternAnalysis, EnrichedChartPatternHit } from './types.js';
|
|
2
2
|
export declare function buildChartPatternAnalysis(hits: EnrichedChartPatternHit[], barCount: number, patternsScanned: number, lastClose: number, options?: {
|
|
3
3
|
minConfidence?: number;
|
|
4
|
+
tradePatternNumber?: number;
|
|
4
5
|
}): ChartPatternAnalysis;
|
|
5
6
|
//# sourceMappingURL=recommendation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../../src/core/chart-patterns/recommendation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,oBAAoB,EAEpB,uBAAuB,EAEvB,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,uBAAuB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAC,
|
|
1
|
+
{"version":3,"file":"recommendation.d.ts","sourceRoot":"","sources":["../../../src/core/chart-patterns/recommendation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,oBAAoB,EAEpB,uBAAuB,EAEvB,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,uBAAuB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAC,GAC7D,oBAAoB,CA4FtB"}
|
|
@@ -65,7 +65,13 @@ export function buildChartPatternAnalysis(hits, barCount, patternsScanned, lastC
|
|
|
65
65
|
Math.abs(hit.confidence - highest.confidence) < 1e-9,
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
|
-
const chartPatternTradeSetup = sanitizeChartPatternTradeSetupForOutput(buildChartPatternTradeSetupFromHit(
|
|
68
|
+
const chartPatternTradeSetup = sanitizeChartPatternTradeSetupForOutput(buildChartPatternTradeSetupFromHit((() => {
|
|
69
|
+
if (options?.tradePatternNumber != null) {
|
|
70
|
+
const idx = options.tradePatternNumber - 1;
|
|
71
|
+
return sorted[idx] ?? primary;
|
|
72
|
+
}
|
|
73
|
+
return primary;
|
|
74
|
+
})(), lastClose, options?.tradePatternNumber ?? primaryMenuNumber, {
|
|
69
75
|
minConfidence: options?.minConfidence,
|
|
70
76
|
}));
|
|
71
77
|
return {
|