@continuumdao/continuum-node-sdk 1.3.28 → 1.3.30
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 +2 -0
- package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -1
- package/dist/core/chart/analysis/analysis-agent-view.js +34 -0
- package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
- package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
- package/dist/core/chart/analysis/analysis-catalog.js +16 -0
- 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/bollinger-analyze-tools.d.ts +101 -0
- package/dist/core/chart/analysis/bollinger-analyze-tools.d.ts.map +1 -0
- package/dist/core/chart/analysis/bollinger-analyze-tools.js +289 -0
- package/dist/core/chart/analysis/bollinger-analyze-tools.js.map +1 -0
- package/dist/core/chart/analysis/bollinger-highlight.d.ts +29 -0
- package/dist/core/chart/analysis/bollinger-highlight.d.ts.map +1 -0
- package/dist/core/chart/analysis/bollinger-highlight.js +39 -0
- package/dist/core/chart/analysis/bollinger-highlight.js.map +1 -0
- 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/bollinger-trade-setup.d.ts +77 -0
- package/dist/core/chart/analysis/trade-setups/bollinger-trade-setup.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/bollinger-trade-setup.js +163 -0
- package/dist/core/chart/analysis/trade-setups/bollinger-trade-setup.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 +4 -1
- package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/build-trade.js +36 -12
- package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.d.ts +3 -3
- package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.js +12 -14
- package/dist/core/chart/analysis/trade-setups/candlestick-trade-setup.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/chart-pattern-trade-setup.d.ts +7 -1
- package/dist/core/chart/analysis/trade-setups/chart-pattern-trade-setup.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/chart-pattern-trade-setup.js +24 -2
- package/dist/core/chart/analysis/trade-setups/chart-pattern-trade-setup.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/entry-proximity-atr.d.ts +3 -0
- package/dist/core/chart/analysis/trade-setups/entry-proximity-atr.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/entry-proximity-atr.js +32 -0
- package/dist/core/chart/analysis/trade-setups/entry-proximity-atr.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/index.d.ts +3 -0
- package/dist/core/chart/analysis/trade-setups/index.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/index.js +3 -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 +8 -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 +33 -5
- 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 +7 -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 +47 -20
- 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/pattern-limit-entry.d.ts +10 -1
- package/dist/core/chart/analysis/trade-setups/pattern-limit-entry.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/pattern-limit-entry.js +75 -34
- package/dist/core/chart/analysis/trade-setups/pattern-limit-entry.js.map +1 -1
- 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 +4 -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 +8 -0
- 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 +9 -1
- 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-entry-gates.d.ts +9 -5
- package/dist/core/chart/analysis/trade-setups/trade-entry-gates.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-entry-gates.js +24 -8
- package/dist/core/chart/analysis/trade-setups/trade-entry-gates.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +21 -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 +52 -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 +20 -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 +20 -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 +2 -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 +5 -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/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/display-downsample.d.ts +1 -1
- package/dist/core/chart/display-downsample.d.ts.map +1 -1
- package/dist/core/chart/display-downsample.js +21 -0
- package/dist/core/chart/display-downsample.js.map +1 -1
- package/dist/core/chart/overlay-schemas.d.ts +3 -0
- package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
- package/dist/core/chart/overlay-schemas.js +2 -0
- package/dist/core/chart/overlay-schemas.js.map +1 -1
- package/dist/core/chart/overlays.d.ts.map +1 -1
- package/dist/core/chart/overlays.js +21 -0
- package/dist/core/chart/overlays.js.map +1 -1
- package/dist/core/chart/prepare-core.d.ts.map +1 -1
- package/dist/core/chart/prepare-core.js +20 -1
- package/dist/core/chart/prepare-core.js.map +1 -1
- package/dist/core/chart/prepare-from-rows.d.ts +2 -0
- package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
- package/dist/core/chart/schemas.d.ts +9 -0
- package/dist/core/chart/schemas.d.ts.map +1 -1
- package/dist/core/chart/schemas.js +1 -1
- package/dist/core/chart/schemas.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/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/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 +14 -0
- 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 +2 -0
- package/dist/mcp/deferred/tool-group-map.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 +26 -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 +13 -2
- 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 +4 -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-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/ohlcv-session-wrapper.d.ts.map +1 -1
- package/dist/mcp/ohlcv-session-wrapper.js +1 -0
- package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
- package/dist/mcp/resources/chart-analysis.md +4 -1
- package/dist/mcp/resources/chart.md +3 -2
- package/dist/mcp/trade-tools.d.ts.map +1 -1
- package/dist/mcp/trade-tools.js +9 -1
- package/dist/mcp/trade-tools.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { resolveOhlcvFetchContext } from '../../ohlcv-window-expectations.js';
|
|
2
|
+
const DATA_SOURCE_MAX_LEN = 8;
|
|
3
|
+
const INTERVAL_MAX_LEN = 8;
|
|
4
|
+
function sanitizeDataSourceCode(code) {
|
|
5
|
+
const cleaned = code.trim().toLowerCase().replace(/[^a-z0-9-]/g, '');
|
|
6
|
+
return cleaned.slice(0, DATA_SOURCE_MAX_LEN) || 'ts';
|
|
7
|
+
}
|
|
8
|
+
function sanitizeIntervalLabel(interval) {
|
|
9
|
+
const cleaned = interval.trim().toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
10
|
+
return cleaned.slice(0, INTERVAL_MAX_LEN);
|
|
11
|
+
}
|
|
12
|
+
export function chartDataSourceShortCodeFromFetchToolName(toolName) {
|
|
13
|
+
const raw = toolName?.trim().toLowerCase() ?? '';
|
|
14
|
+
if (!raw) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const base = raw.includes('__') ? raw.slice(raw.lastIndexOf('__') + 2) : raw;
|
|
18
|
+
if (raw.includes('hyperliquid') && base.includes('fetch_ohlcv')) {
|
|
19
|
+
return 'hl';
|
|
20
|
+
}
|
|
21
|
+
if (raw.includes('gmx') && base.includes('fetch_ohlcv')) {
|
|
22
|
+
return 'gmx';
|
|
23
|
+
}
|
|
24
|
+
if (raw.includes('uniswap') && base.includes('fetch_ohlcv')) {
|
|
25
|
+
return 'uni';
|
|
26
|
+
}
|
|
27
|
+
if (raw.includes('coinmarketcap') || base.includes('get_kline') || base.includes('get_crypto_ohlcv')) {
|
|
28
|
+
return 'cmc';
|
|
29
|
+
}
|
|
30
|
+
if (raw.includes('coingecko') || base === 'execute') {
|
|
31
|
+
return 'cg';
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
function ohlcvRecordFromPayload(payload) {
|
|
36
|
+
if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const record = payload;
|
|
40
|
+
if (record.ohlcv && typeof record.ohlcv === 'object' && !Array.isArray(record.ohlcv)) {
|
|
41
|
+
return record.ohlcv;
|
|
42
|
+
}
|
|
43
|
+
if ('candles' in record ||
|
|
44
|
+
'interval' in record ||
|
|
45
|
+
'timeframe' in record ||
|
|
46
|
+
'coin' in record ||
|
|
47
|
+
'symbol' in record) {
|
|
48
|
+
return record;
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
export function chartDataSourceShortCodeFromFetchPayload(payload) {
|
|
53
|
+
if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
const record = payload;
|
|
57
|
+
const explicit = record.dataSource;
|
|
58
|
+
if (typeof explicit === 'string' && explicit.trim()) {
|
|
59
|
+
switch (explicit.trim().toLowerCase()) {
|
|
60
|
+
case 'protocol_ohlcv':
|
|
61
|
+
if (ohlcvRecordFromPayload(payload)?.coin != null) {
|
|
62
|
+
return 'hl';
|
|
63
|
+
}
|
|
64
|
+
return 'proto';
|
|
65
|
+
case 'coingecko_time_series':
|
|
66
|
+
return 'cg';
|
|
67
|
+
case 'coinmarketcap_klines':
|
|
68
|
+
return 'cmc';
|
|
69
|
+
default:
|
|
70
|
+
return sanitizeDataSourceCode(explicit);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const ohlcv = ohlcvRecordFromPayload(payload);
|
|
74
|
+
if (ohlcv?.coin != null) {
|
|
75
|
+
return 'hl';
|
|
76
|
+
}
|
|
77
|
+
if (typeof record.symbol === 'string' && 'candles' in record) {
|
|
78
|
+
return 'gmx';
|
|
79
|
+
}
|
|
80
|
+
if (Array.isArray(record.series) || Array.isArray(record.points)) {
|
|
81
|
+
return 'ts';
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
export function chartDataSourceShortCodeFromProtocolId(protocolId) {
|
|
86
|
+
const proto = protocolId?.trim().toLowerCase();
|
|
87
|
+
if (!proto) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
switch (proto) {
|
|
91
|
+
case 'hyperliquid':
|
|
92
|
+
case 'hl':
|
|
93
|
+
return 'hl';
|
|
94
|
+
case 'gmx':
|
|
95
|
+
return 'gmx';
|
|
96
|
+
case 'uniswap':
|
|
97
|
+
case 'uniswap-v4':
|
|
98
|
+
case 'uni':
|
|
99
|
+
return 'uni';
|
|
100
|
+
default:
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function barCountFromFetchPayload(payload) {
|
|
105
|
+
if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
const record = payload;
|
|
109
|
+
for (const key of ['candleCount', 'barCount', 'count']) {
|
|
110
|
+
const raw = record[key];
|
|
111
|
+
if (typeof raw === 'number' && Number.isFinite(raw) && raw > 0) {
|
|
112
|
+
return Math.floor(raw);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const ohlcv = ohlcvRecordFromPayload(payload);
|
|
116
|
+
if (ohlcv) {
|
|
117
|
+
for (const key of ['candleCount', 'barCount', 'count']) {
|
|
118
|
+
const raw = ohlcv[key];
|
|
119
|
+
if (typeof raw === 'number' && Number.isFinite(raw) && raw > 0) {
|
|
120
|
+
return Math.floor(raw);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const candles = ohlcv.candles;
|
|
124
|
+
if (Array.isArray(candles) && candles.length > 0) {
|
|
125
|
+
return candles.length;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const candles = record.candles;
|
|
129
|
+
if (Array.isArray(candles) && candles.length > 0) {
|
|
130
|
+
return candles.length;
|
|
131
|
+
}
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
function intervalFromMetaAndPayload(analysisMeta, fetchPayload) {
|
|
135
|
+
const fromMeta = analysisMeta?.fetchContext?.interval;
|
|
136
|
+
if (typeof fromMeta === 'string' && fromMeta.trim()) {
|
|
137
|
+
return sanitizeIntervalLabel(fromMeta);
|
|
138
|
+
}
|
|
139
|
+
const ohlcv = fetchPayload != null ? ohlcvRecordFromPayload(fetchPayload) : null;
|
|
140
|
+
const raw = ohlcv?.interval ?? ohlcv?.timeframe;
|
|
141
|
+
if (typeof raw === 'string' && raw.trim()) {
|
|
142
|
+
return sanitizeIntervalLabel(raw);
|
|
143
|
+
}
|
|
144
|
+
if (fetchPayload && typeof fetchPayload === 'object' && !Array.isArray(fetchPayload)) {
|
|
145
|
+
const record = fetchPayload;
|
|
146
|
+
const top = record.interval ?? record.timeframe;
|
|
147
|
+
if (typeof top === 'string' && top.trim()) {
|
|
148
|
+
return sanitizeIntervalLabel(top);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
export function extractChartDataPurposeContext(input) {
|
|
154
|
+
const dataSource = chartDataSourceShortCodeFromFetchToolName(input.fetchToolName) ??
|
|
155
|
+
chartDataSourceShortCodeFromFetchPayload(input.fetchPayload) ??
|
|
156
|
+
chartDataSourceShortCodeFromProtocolId(input.loadedProtocolId) ??
|
|
157
|
+
(input.fetchPayload != null ? 'ts' : undefined);
|
|
158
|
+
if (!dataSource) {
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
const interval = intervalFromMetaAndPayload(input.analysisMeta, input.fetchPayload);
|
|
162
|
+
const barCount = (typeof input.analysisMeta?.barCount === 'number' && input.analysisMeta.barCount > 0
|
|
163
|
+
? Math.floor(input.analysisMeta.barCount)
|
|
164
|
+
: undefined) ?? barCountFromFetchPayload(input.fetchPayload);
|
|
165
|
+
const ctx = { dataSource: sanitizeDataSourceCode(dataSource) };
|
|
166
|
+
if (interval) {
|
|
167
|
+
ctx.interval = interval;
|
|
168
|
+
}
|
|
169
|
+
if (barCount != null && barCount > 0) {
|
|
170
|
+
ctx.barCount = barCount;
|
|
171
|
+
}
|
|
172
|
+
return ctx;
|
|
173
|
+
}
|
|
174
|
+
/** ctm1 tokens: ds=hl iv=4h n=180 */
|
|
175
|
+
export function formatChartDataPurposeTokens(chartData) {
|
|
176
|
+
if (!chartData?.dataSource) {
|
|
177
|
+
return [];
|
|
178
|
+
}
|
|
179
|
+
const tokens = [`ds=${sanitizeDataSourceCode(chartData.dataSource)}`];
|
|
180
|
+
if (chartData.interval) {
|
|
181
|
+
tokens.push(`iv=${sanitizeIntervalLabel(chartData.interval)}`);
|
|
182
|
+
}
|
|
183
|
+
if (chartData.barCount != null && chartData.barCount > 0) {
|
|
184
|
+
tokens.push(`n=${Math.floor(chartData.barCount)}`);
|
|
185
|
+
}
|
|
186
|
+
return tokens;
|
|
187
|
+
}
|
|
188
|
+
export function chartDataPurposeContextFromAnalysisMeta(meta, fetchPayload, fetchToolName, loadedProtocolId) {
|
|
189
|
+
if (!meta || typeof meta !== 'object' || Array.isArray(meta)) {
|
|
190
|
+
return extractChartDataPurposeContext({ fetchPayload, fetchToolName, loadedProtocolId });
|
|
191
|
+
}
|
|
192
|
+
const record = meta;
|
|
193
|
+
const barCount = typeof record.barCount === 'number' && record.barCount > 0 ? Math.floor(record.barCount) : undefined;
|
|
194
|
+
const fetchContext = record.fetchContext && typeof record.fetchContext === 'object' && !Array.isArray(record.fetchContext)
|
|
195
|
+
? resolveOhlcvFetchContext(fetchPayload ?? record)
|
|
196
|
+
: resolveOhlcvFetchContext(fetchPayload ?? record);
|
|
197
|
+
return extractChartDataPurposeContext({
|
|
198
|
+
analysisMeta: {
|
|
199
|
+
barCount: barCount ?? 0,
|
|
200
|
+
fetchContext: fetchContext ?? undefined,
|
|
201
|
+
},
|
|
202
|
+
fetchPayload,
|
|
203
|
+
fetchToolName,
|
|
204
|
+
loadedProtocolId,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=chart-data-purpose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-data-purpose.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/chart-data-purpose.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChartPatternClassification, ChartPatternHitSummary, ChartPatternId, EnrichedChartPatternHit } from '../../../chart-patterns/types.js';
|
|
2
|
-
import { type EntryOffsetMode, type PatternEntryPhase } from './pattern-limit-entry.js';
|
|
2
|
+
import { type EntryOffsetMode, type EntryProximityMode, type PatternEntryPhase } from './pattern-limit-entry.js';
|
|
3
3
|
import { type TradeSetupSide, type TradeSetupStatus } from './shared.js';
|
|
4
4
|
export type ChartPatternTradeSetup = {
|
|
5
5
|
status: TradeSetupStatus;
|
|
@@ -29,10 +29,16 @@ export declare function sanitizeChartPatternTradeSetupForOutput(setup: ChartPatt
|
|
|
29
29
|
export declare function buildChartPatternTradeSetupFromHit(hit: EnrichedChartPatternHit, lastClose: number, patternNumber: number, options?: {
|
|
30
30
|
minConfidence?: number;
|
|
31
31
|
entryProximityPct?: number;
|
|
32
|
+
entryProximityMode?: EntryProximityMode;
|
|
33
|
+
entryProximityAtrPeriod?: number;
|
|
34
|
+
bars?: Record<string, unknown>[];
|
|
32
35
|
}): ChartPatternTradeSetup;
|
|
33
36
|
export declare function buildChartPatternTradeSetupFromSummary(summary: ChartPatternHitSummary, lastClose: number, patternNumber: number, completionState?: 'forming' | 'completed', options?: {
|
|
34
37
|
minConfidence?: number;
|
|
35
38
|
entryProximityPct?: number;
|
|
39
|
+
entryProximityMode?: EntryProximityMode;
|
|
40
|
+
entryProximityAtrPeriod?: number;
|
|
41
|
+
bars?: Record<string, unknown>[];
|
|
36
42
|
}): ChartPatternTradeSetup;
|
|
37
43
|
export declare function normalizeChartPatternTradeSetup(setup: ChartPatternTradeSetup): {
|
|
38
44
|
status: TradeSetupStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-pattern-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/chart-pattern-trade-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,0BAA0B,EAC1B,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEtB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"chart-pattern-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/chart-pattern-trade-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { buildPatternKeyLevels } from '../../../chart-patterns/pattern-menu-summary.js';
|
|
2
2
|
import { resolvePatternLimitLevels, } from './pattern-limit-entry.js';
|
|
3
|
+
import { entryProximityAtrFromOhlcvRows } from './entry-proximity-atr.js';
|
|
4
|
+
import { tradeDeskConfig } from './trade-desk-defaults.js';
|
|
3
5
|
import { isFiniteTradePrice, } from './shared.js';
|
|
4
6
|
import { tradeSetupPurposeCode } from './trade-purpose-format.js';
|
|
5
7
|
function sideFromClassification(classification, measuredDirection) {
|
|
@@ -156,12 +158,22 @@ export function buildChartPatternTradeSetupFromHit(hit, lastClose, patternNumber
|
|
|
156
158
|
const keyLevels = buildPatternKeyLevels(hit);
|
|
157
159
|
const measured = hit.measuredMove;
|
|
158
160
|
const classificationSide = sideFromClassification(hit.classification, measured?.direction);
|
|
161
|
+
const desk = tradeDeskConfig({
|
|
162
|
+
entryProximityPct: options?.entryProximityPct,
|
|
163
|
+
entryProximityMode: options?.entryProximityMode,
|
|
164
|
+
entryProximityAtrPeriod: options?.entryProximityAtrPeriod,
|
|
165
|
+
});
|
|
166
|
+
const entryProximityAtr = desk.entryProximityMode === 'atr'
|
|
167
|
+
? entryProximityAtrFromOhlcvRows(options?.bars, desk.entryProximityAtrPeriod)
|
|
168
|
+
: null;
|
|
159
169
|
const resolved = resolvePatternLimitLevels({
|
|
160
170
|
patternId: hit.id,
|
|
161
171
|
lastClose,
|
|
162
172
|
keyLevels,
|
|
163
173
|
classificationSide,
|
|
164
|
-
entryProximityPct:
|
|
174
|
+
entryProximityPct: desk.entryProximityPct,
|
|
175
|
+
entryProximityMode: desk.entryProximityMode,
|
|
176
|
+
entryProximityAtr,
|
|
165
177
|
});
|
|
166
178
|
return buildFromResolvedResult({
|
|
167
179
|
patternId: hit.id,
|
|
@@ -179,12 +191,22 @@ export function buildChartPatternTradeSetupFromHit(hit, lastClose, patternNumber
|
|
|
179
191
|
export function buildChartPatternTradeSetupFromSummary(summary, lastClose, patternNumber, completionState, options) {
|
|
180
192
|
const measured = summary.measuredMove;
|
|
181
193
|
const classificationSide = sideFromClassification(summary.classification, measured?.direction);
|
|
194
|
+
const desk = tradeDeskConfig({
|
|
195
|
+
entryProximityPct: options?.entryProximityPct,
|
|
196
|
+
entryProximityMode: options?.entryProximityMode,
|
|
197
|
+
entryProximityAtrPeriod: options?.entryProximityAtrPeriod,
|
|
198
|
+
});
|
|
199
|
+
const entryProximityAtr = desk.entryProximityMode === 'atr'
|
|
200
|
+
? entryProximityAtrFromOhlcvRows(options?.bars, desk.entryProximityAtrPeriod)
|
|
201
|
+
: null;
|
|
182
202
|
const resolved = resolvePatternLimitLevels({
|
|
183
203
|
patternId: summary.id,
|
|
184
204
|
lastClose,
|
|
185
205
|
keyLevels: summary.keyLevels,
|
|
186
206
|
classificationSide,
|
|
187
|
-
entryProximityPct:
|
|
207
|
+
entryProximityPct: desk.entryProximityPct,
|
|
208
|
+
entryProximityMode: desk.entryProximityMode,
|
|
209
|
+
entryProximityAtr,
|
|
188
210
|
});
|
|
189
211
|
return buildFromResolvedResult({
|
|
190
212
|
patternId: summary.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-pattern-trade-setup.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/chart-pattern-trade-setup.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,qBAAqB,EAAC,MAAM,iDAAiD,CAAC;AACtF,OAAO,
|
|
1
|
+
{"version":3,"file":"chart-pattern-trade-setup.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/chart-pattern-trade-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-proximity-atr.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/entry-proximity-atr.ts"],"names":[],"mappings":"AAKA,kEAAkE;AAClE,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,EAC3C,MAAM,SAAqC,GACzC,MAAM,GAAG,IAAI,CA0Bf"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { averageTrueRangeSeries } from '../../../chart-patterns/atr.js';
|
|
2
|
+
import { coerceFiniteNumber } from '../../point-normalize.js';
|
|
3
|
+
import { DEFAULT_ENTRY_PROXIMITY_ATR_PERIOD } from './trade-desk-defaults.js';
|
|
4
|
+
/** Latest finite ATR from OHLCV rows (Wilder-style SMA of TR). */
|
|
5
|
+
export function entryProximityAtrFromOhlcvRows(bars, period = DEFAULT_ENTRY_PROXIMITY_ATR_PERIOD) {
|
|
6
|
+
if (!bars?.length || period < 1) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const normalized = [];
|
|
10
|
+
for (let i = 0; i < bars.length; i++) {
|
|
11
|
+
const close = coerceFiniteNumber(bars[i].close);
|
|
12
|
+
const high = coerceFiniteNumber(bars[i].high);
|
|
13
|
+
const low = coerceFiniteNumber(bars[i].low);
|
|
14
|
+
const time = coerceFiniteNumber(bars[i].time);
|
|
15
|
+
if (close == null || high == null || low == null || time == null) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
normalized.push({ index: i, time, timeSec: time, open: close, high, low, close });
|
|
19
|
+
}
|
|
20
|
+
if (!normalized.length) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const series = averageTrueRangeSeries(normalized, period);
|
|
24
|
+
for (let i = series.length - 1; i >= 0; i--) {
|
|
25
|
+
const v = series[i];
|
|
26
|
+
if (v != null && Number.isFinite(v) && v > 0) {
|
|
27
|
+
return v;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=entry-proximity-atr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-proximity-atr.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/entry-proximity-atr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAC,kCAAkC,EAAC,MAAM,0BAA0B,CAAC;AAE5E,kEAAkE;AAClE,MAAM,UAAU,8BAA8B,CAC7C,IAA2C,EAC3C,MAAM,GAAG,kCAAkC;IAE3C,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YAClE,SAAS;QACV,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1D,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,CAAC;QACV,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -2,10 +2,13 @@ export * from './shared.js';
|
|
|
2
2
|
export * from './chart-pattern-trade-setup.js';
|
|
3
3
|
export * from './pattern-limit-entry.js';
|
|
4
4
|
export * from './trade-entry-gates.js';
|
|
5
|
+
export * from './chart-data-purpose.js';
|
|
5
6
|
export * from './trade-purpose-format.js';
|
|
6
7
|
export * from './candlestick-trade-setup.js';
|
|
7
8
|
export * from './key-levels-trade-setup.js';
|
|
8
9
|
export * from './momentum-trade-setup.js';
|
|
10
|
+
export * from './bollinger-trade-setup.js';
|
|
11
|
+
export * from './trade-setup-selection.js';
|
|
9
12
|
export * from './trade-idea.js';
|
|
10
13
|
export * from './build-trade.js';
|
|
11
14
|
export * from './trade-consensus.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
@@ -2,10 +2,13 @@ export * from './shared.js';
|
|
|
2
2
|
export * from './chart-pattern-trade-setup.js';
|
|
3
3
|
export * from './pattern-limit-entry.js';
|
|
4
4
|
export * from './trade-entry-gates.js';
|
|
5
|
+
export * from './chart-data-purpose.js';
|
|
5
6
|
export * from './trade-purpose-format.js';
|
|
6
7
|
export * from './candlestick-trade-setup.js';
|
|
7
8
|
export * from './key-levels-trade-setup.js';
|
|
8
9
|
export * from './momentum-trade-setup.js';
|
|
10
|
+
export * from './bollinger-trade-setup.js';
|
|
11
|
+
export * from './trade-setup-selection.js';
|
|
9
12
|
export * from './trade-idea.js';
|
|
10
13
|
export * from './build-trade.js';
|
|
11
14
|
export * from './trade-consensus.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { KeyLevelFibPair, KeyLevelMenuEntry } from '../key-level-menu-summary.js';
|
|
2
2
|
import type { EntryOffsetMode, PatternEntryPhase } from './pattern-limit-entry.js';
|
|
3
3
|
import type { TradeSetupSide, TradeSetupStatus } from './shared.js';
|
|
4
|
+
import { type EntryProximityMode } from './trade-desk-defaults.js';
|
|
4
5
|
export type KeyLevelFibPriceRegime = 'inside_range' | 'above_range' | 'below_range';
|
|
5
6
|
export type KeyLevelFibTargetSource = 'retrace_618' | 'range_leg' | 'fib_extension';
|
|
6
7
|
export type KeyLevelFibInsideSubRegime = 'upper_half' | 'lower_half';
|
|
@@ -34,6 +35,8 @@ export type KeyLevelFibBreakRetestAlternative = {
|
|
|
34
35
|
higherTimeframeAdvisory?: string;
|
|
35
36
|
unclearReason?: string;
|
|
36
37
|
entryProximityPct: number;
|
|
38
|
+
entryProximityMode?: EntryProximityMode;
|
|
39
|
+
atrAtLastBar?: number;
|
|
37
40
|
entryOffsetPct: number;
|
|
38
41
|
invalidationOffsetPct: number;
|
|
39
42
|
alternateBreakCandidates: Array<{
|
|
@@ -59,6 +62,8 @@ export type KeyLevelFibRetraceTradeSetup = {
|
|
|
59
62
|
framing: 'retrace' | 'break';
|
|
60
63
|
entryOffsetMode: EntryOffsetMode;
|
|
61
64
|
entryProximityPct: number;
|
|
65
|
+
entryProximityMode?: EntryProximityMode;
|
|
66
|
+
atrAtLastBar?: number;
|
|
62
67
|
entryOffsetPct: number;
|
|
63
68
|
invalidationOffsetPct: number;
|
|
64
69
|
fibPairNumber: number;
|
|
@@ -97,9 +102,12 @@ export declare function buildKeyLevelFibRetraceTradeSetup(input: {
|
|
|
97
102
|
minConfidence?: number;
|
|
98
103
|
breakMinConfidence?: number;
|
|
99
104
|
entryProximityPct?: number;
|
|
105
|
+
entryProximityMode?: EntryProximityMode;
|
|
106
|
+
entryProximityAtrPeriod?: number;
|
|
100
107
|
entryOffsetPct?: number;
|
|
101
108
|
invalidationOffsetPct?: number;
|
|
102
109
|
/** trade-defaults skill may prefer long over the desk default short (upper half). */
|
|
103
110
|
defaultSidePreference?: 'long' | 'short';
|
|
111
|
+
fibPairNumber?: number;
|
|
104
112
|
}): KeyLevelFibRetraceTradeSetup | null;
|
|
105
113
|
//# sourceMappingURL=key-level-fib-retrace-trade-setup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-level-fib-retrace-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAQrF,OAAO,KAAK,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"key-level-fib-retrace-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ import { chartFibTrendForRange } from '../key-level-drawings-shared.js';
|
|
|
3
3
|
import { alternateBreakCandidatesForSkill, detectKeyLevelBreaks, pickStrongestBreakCandidate, } from '../key-level-break-detect.js';
|
|
4
4
|
import { isFiniteTradePrice } from './shared.js';
|
|
5
5
|
import { assessTradeSetupEntryActionability } from './trade-entry-gates.js';
|
|
6
|
-
import {
|
|
6
|
+
import { entryProximityAtrFromOhlcvRows } from './entry-proximity-atr.js';
|
|
7
|
+
import { tradeDeskConfig, } from './trade-desk-defaults.js';
|
|
7
8
|
import { tradeSetupPurposeCode } from './trade-purpose-format.js';
|
|
8
9
|
const HTF_ADVISORY = 'Target uses Fibonacci extension — re-run analyze_key_level_fibonacci on a higher timeframe for structural confirmation.';
|
|
9
10
|
function resolvePriceRegime(close, pair) {
|
|
@@ -108,6 +109,8 @@ function validateFibTradeSetup(input) {
|
|
|
108
109
|
side: input.side,
|
|
109
110
|
entryOffsetMode: input.entryOffsetMode,
|
|
110
111
|
entryProximityPct: input.entryProximityPct,
|
|
112
|
+
entryProximityMode: input.entryProximityMode,
|
|
113
|
+
entryProximityAtr: input.entryProximityAtr,
|
|
111
114
|
entryOffsetPct: input.entryOffsetPct,
|
|
112
115
|
skipProximityGate: input.skipProximityGate,
|
|
113
116
|
});
|
|
@@ -133,9 +136,10 @@ function validateFibTradeSetup(input) {
|
|
|
133
136
|
return {
|
|
134
137
|
status,
|
|
135
138
|
...(unclearReason ? { unclearReason } : {}),
|
|
136
|
-
deskPcts:
|
|
139
|
+
deskPcts: tradeDeskConfig({
|
|
137
140
|
entryProximityPct: input.entryProximityPct,
|
|
138
141
|
entryOffsetPct: input.entryOffsetPct,
|
|
142
|
+
entryProximityMode: input.entryProximityMode,
|
|
139
143
|
}),
|
|
140
144
|
};
|
|
141
145
|
}
|
|
@@ -209,6 +213,8 @@ function materializeFibSideVariant(plan, validateInput) {
|
|
|
209
213
|
confidence: validateInput.confidence,
|
|
210
214
|
minConfidence: validateInput.minConfidence,
|
|
211
215
|
entryProximityPct: validateInput.deskSeed.entryProximityPct,
|
|
216
|
+
entryProximityMode: validateInput.deskSeed.entryProximityMode,
|
|
217
|
+
entryProximityAtr: validateInput.entryProximityAtr,
|
|
212
218
|
entryOffsetPct: validateInput.deskSeed.entryOffsetPct,
|
|
213
219
|
unclearDefault: validateInput.unclearDefault,
|
|
214
220
|
});
|
|
@@ -224,6 +230,10 @@ function materializeFibSideVariant(plan, validateInput) {
|
|
|
224
230
|
invalidationPrice: plan.invalidationPrice,
|
|
225
231
|
invalidationLabel: plan.invalidationLabel,
|
|
226
232
|
entryProximityPct: validation.deskPcts.entryProximityPct,
|
|
233
|
+
entryProximityMode: validation.deskPcts.entryProximityMode,
|
|
234
|
+
...(validateInput.entryProximityAtr != null
|
|
235
|
+
? { atrAtLastBar: validateInput.entryProximityAtr }
|
|
236
|
+
: {}),
|
|
227
237
|
entryOffsetPct: validation.deskPcts.entryOffsetPct,
|
|
228
238
|
invalidationOffsetPct: validation.deskPcts.invalidationOffsetPct,
|
|
229
239
|
};
|
|
@@ -239,11 +249,13 @@ export function applyKeyLevelFibSideVariant(setup, side) {
|
|
|
239
249
|
confidence: setup.confidence,
|
|
240
250
|
minConfidence: 0.35,
|
|
241
251
|
entryOffsetMode: setup.entryOffsetMode,
|
|
242
|
-
deskSeed:
|
|
252
|
+
deskSeed: tradeDeskConfig({
|
|
243
253
|
entryProximityPct: setup.entryProximityPct,
|
|
244
254
|
entryOffsetPct: setup.entryOffsetPct,
|
|
245
255
|
invalidationOffsetPct: setup.invalidationOffsetPct,
|
|
256
|
+
entryProximityMode: setup.entryProximityMode,
|
|
246
257
|
}),
|
|
258
|
+
entryProximityAtr: setup.atrAtLastBar ?? null,
|
|
247
259
|
unclearDefault: setup.unclearReason ?? 'Fib side variant is not actionable at last close.',
|
|
248
260
|
});
|
|
249
261
|
return {
|
|
@@ -258,7 +270,9 @@ export function buildKeyLevelFibRetraceTradeSetup(input) {
|
|
|
258
270
|
if (!isFiniteTradePrice(close)) {
|
|
259
271
|
return null;
|
|
260
272
|
}
|
|
261
|
-
const pair =
|
|
273
|
+
const pair = (input.fibPairNumber != null
|
|
274
|
+
? input.fibPairs.find(p => p.pairNumber === input.fibPairNumber)
|
|
275
|
+
: undefined) ?? pickOuterConcentricFibPair(input.fibPairs);
|
|
262
276
|
if (!pair || pair.low >= pair.high) {
|
|
263
277
|
return null;
|
|
264
278
|
}
|
|
@@ -274,11 +288,16 @@ export function buildKeyLevelFibRetraceTradeSetup(input) {
|
|
|
274
288
|
const confidence = Math.min(1, legStrength / 120);
|
|
275
289
|
const priceRegime = resolvePriceRegime(close, pair);
|
|
276
290
|
const bars = input.bars ?? [];
|
|
277
|
-
const deskSeed =
|
|
291
|
+
const deskSeed = tradeDeskConfig({
|
|
278
292
|
entryProximityPct: input.entryProximityPct,
|
|
279
293
|
entryOffsetPct: input.entryOffsetPct,
|
|
280
294
|
invalidationOffsetPct: input.invalidationOffsetPct,
|
|
295
|
+
entryProximityMode: input.entryProximityMode,
|
|
296
|
+
entryProximityAtrPeriod: input.entryProximityAtrPeriod,
|
|
281
297
|
});
|
|
298
|
+
const entryProximityAtr = deskSeed.entryProximityMode === 'atr'
|
|
299
|
+
? entryProximityAtrFromOhlcvRows(bars, deskSeed.entryProximityAtrPeriod)
|
|
300
|
+
: null;
|
|
282
301
|
const base = {
|
|
283
302
|
source: 'concentric_range',
|
|
284
303
|
priceRegime,
|
|
@@ -310,6 +329,8 @@ export function buildKeyLevelFibRetraceTradeSetup(input) {
|
|
|
310
329
|
confidence,
|
|
311
330
|
minConfidence,
|
|
312
331
|
entryProximityPct: deskSeed.entryProximityPct,
|
|
332
|
+
entryProximityMode: deskSeed.entryProximityMode,
|
|
333
|
+
entryProximityAtr,
|
|
313
334
|
entryOffsetPct: deskSeed.entryOffsetPct,
|
|
314
335
|
unclearDefault: 'Fib range extension setup is not actionable at last close.',
|
|
315
336
|
});
|
|
@@ -334,6 +355,8 @@ export function buildKeyLevelFibRetraceTradeSetup(input) {
|
|
|
334
355
|
framing: 'break',
|
|
335
356
|
entryOffsetMode: 'retest',
|
|
336
357
|
entryProximityPct: validation.deskPcts.entryProximityPct,
|
|
358
|
+
entryProximityMode: validation.deskPcts.entryProximityMode,
|
|
359
|
+
...(entryProximityAtr != null ? { atrAtLastBar: entryProximityAtr } : {}),
|
|
337
360
|
entryOffsetPct: validation.deskPcts.entryOffsetPct,
|
|
338
361
|
invalidationOffsetPct: validation.deskPcts.invalidationOffsetPct,
|
|
339
362
|
side: 'long',
|
|
@@ -369,6 +392,8 @@ export function buildKeyLevelFibRetraceTradeSetup(input) {
|
|
|
369
392
|
confidence,
|
|
370
393
|
minConfidence,
|
|
371
394
|
entryProximityPct: deskSeed.entryProximityPct,
|
|
395
|
+
entryProximityMode: deskSeed.entryProximityMode,
|
|
396
|
+
entryProximityAtr,
|
|
372
397
|
entryOffsetPct: deskSeed.entryOffsetPct,
|
|
373
398
|
unclearDefault: 'Fib inverted extension setup is not actionable at last close.',
|
|
374
399
|
});
|
|
@@ -395,6 +420,8 @@ export function buildKeyLevelFibRetraceTradeSetup(input) {
|
|
|
395
420
|
framing: 'break',
|
|
396
421
|
entryOffsetMode: 'retest',
|
|
397
422
|
entryProximityPct: validation.deskPcts.entryProximityPct,
|
|
423
|
+
entryProximityMode: validation.deskPcts.entryProximityMode,
|
|
424
|
+
...(entryProximityAtr != null ? { atrAtLastBar: entryProximityAtr } : {}),
|
|
398
425
|
entryOffsetPct: validation.deskPcts.entryOffsetPct,
|
|
399
426
|
invalidationOffsetPct: validation.deskPcts.invalidationOffsetPct,
|
|
400
427
|
side: 'short',
|
|
@@ -430,6 +457,7 @@ export function buildKeyLevelFibRetraceTradeSetup(input) {
|
|
|
430
457
|
minConfidence,
|
|
431
458
|
entryOffsetMode: 'bounce',
|
|
432
459
|
deskSeed,
|
|
460
|
+
entryProximityAtr,
|
|
433
461
|
unclearDefault: 'Fib 0.618 retrace setup is not actionable at last close.',
|
|
434
462
|
});
|
|
435
463
|
return {
|