@continuumdao/continuum-node-sdk 1.3.37 → 1.3.38

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.
Files changed (196) hide show
  1. package/dist/agent-host-catalog.json +9 -0
  2. package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -1
  3. package/dist/core/chart/analysis/analysis-agent-view.js +33 -4
  4. package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
  5. package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
  6. package/dist/core/chart/analysis/analysis-catalog.js +47 -1
  7. package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
  8. package/dist/core/chart/analysis/analyze-tools.d.ts +167 -11
  9. package/dist/core/chart/analysis/analyze-tools.d.ts.map +1 -1
  10. package/dist/core/chart/analysis/analyze-tools.js +47 -55
  11. package/dist/core/chart/analysis/analyze-tools.js.map +1 -1
  12. package/dist/core/chart/analysis/divergence/detect.d.ts +21 -0
  13. package/dist/core/chart/analysis/divergence/detect.d.ts.map +1 -0
  14. package/dist/core/chart/analysis/divergence/detect.js +223 -0
  15. package/dist/core/chart/analysis/divergence/detect.js.map +1 -0
  16. package/dist/core/chart/analysis/divergence/index.d.ts +4 -0
  17. package/dist/core/chart/analysis/divergence/index.d.ts.map +1 -0
  18. package/dist/core/chart/analysis/divergence/index.js +4 -0
  19. package/dist/core/chart/analysis/divergence/index.js.map +1 -0
  20. package/dist/core/chart/analysis/divergence/peaks.d.ts +11 -0
  21. package/dist/core/chart/analysis/divergence/peaks.d.ts.map +1 -0
  22. package/dist/core/chart/analysis/divergence/peaks.js +108 -0
  23. package/dist/core/chart/analysis/divergence/peaks.js.map +1 -0
  24. package/dist/core/chart/analysis/divergence/types.d.ts +30 -0
  25. package/dist/core/chart/analysis/divergence/types.d.ts.map +1 -0
  26. package/dist/core/chart/analysis/divergence/types.js +2 -0
  27. package/dist/core/chart/analysis/divergence/types.js.map +1 -0
  28. package/dist/core/chart/analysis/divergence-analyze-tools.d.ts +239 -0
  29. package/dist/core/chart/analysis/divergence-analyze-tools.d.ts.map +1 -0
  30. package/dist/core/chart/analysis/divergence-analyze-tools.js +283 -0
  31. package/dist/core/chart/analysis/divergence-analyze-tools.js.map +1 -0
  32. package/dist/core/chart/analysis/divergence-drawings-tools.d.ts +457 -0
  33. package/dist/core/chart/analysis/divergence-drawings-tools.d.ts.map +1 -0
  34. package/dist/core/chart/analysis/divergence-drawings-tools.js +380 -0
  35. package/dist/core/chart/analysis/divergence-drawings-tools.js.map +1 -0
  36. package/dist/core/chart/analysis/divergence-highlight.d.ts +19 -0
  37. package/dist/core/chart/analysis/divergence-highlight.d.ts.map +1 -0
  38. package/dist/core/chart/analysis/divergence-highlight.js +39 -0
  39. package/dist/core/chart/analysis/divergence-highlight.js.map +1 -0
  40. package/dist/core/chart/analysis/donchian-analyze-tools.d.ts +113 -0
  41. package/dist/core/chart/analysis/donchian-analyze-tools.d.ts.map +1 -0
  42. package/dist/core/chart/analysis/donchian-analyze-tools.js +218 -0
  43. package/dist/core/chart/analysis/donchian-analyze-tools.js.map +1 -0
  44. package/dist/core/chart/analysis/donchian-highlight.d.ts +31 -0
  45. package/dist/core/chart/analysis/donchian-highlight.d.ts.map +1 -0
  46. package/dist/core/chart/analysis/donchian-highlight.js +41 -0
  47. package/dist/core/chart/analysis/donchian-highlight.js.map +1 -0
  48. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts +33 -0
  49. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts.map +1 -1
  50. package/dist/core/chart/analysis/ichimoku-analyze-tools.d.ts +124 -0
  51. package/dist/core/chart/analysis/ichimoku-analyze-tools.d.ts.map +1 -0
  52. package/dist/core/chart/analysis/ichimoku-analyze-tools.js +243 -0
  53. package/dist/core/chart/analysis/ichimoku-analyze-tools.js.map +1 -0
  54. package/dist/core/chart/analysis/ichimoku-highlight.d.ts +36 -0
  55. package/dist/core/chart/analysis/ichimoku-highlight.d.ts.map +1 -0
  56. package/dist/core/chart/analysis/ichimoku-highlight.js +40 -0
  57. package/dist/core/chart/analysis/ichimoku-highlight.js.map +1 -0
  58. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts +2 -6
  59. package/dist/core/chart/analysis/key-fib-drawings-tools.d.ts.map +1 -1
  60. package/dist/core/chart/analysis/key-fib-drawings-tools.js +5 -17
  61. package/dist/core/chart/analysis/key-fib-drawings-tools.js.map +1 -1
  62. package/dist/core/chart/analysis/key-level-drawings-shared.d.ts +3 -12
  63. package/dist/core/chart/analysis/key-level-drawings-shared.d.ts.map +1 -1
  64. package/dist/core/chart/analysis/key-level-drawings-shared.js +6 -36
  65. package/dist/core/chart/analysis/key-level-drawings-shared.js.map +1 -1
  66. package/dist/core/chart/analysis/key-level-menu-summary.d.ts +15 -22
  67. package/dist/core/chart/analysis/key-level-menu-summary.d.ts.map +1 -1
  68. package/dist/core/chart/analysis/key-level-menu-summary.js +63 -124
  69. package/dist/core/chart/analysis/key-level-menu-summary.js.map +1 -1
  70. package/dist/core/chart/analysis/key-levels-dataset.d.ts +1 -0
  71. package/dist/core/chart/analysis/key-levels-dataset.d.ts.map +1 -1
  72. package/dist/core/chart/analysis/key-levels-dataset.js +4 -7
  73. package/dist/core/chart/analysis/key-levels-dataset.js.map +1 -1
  74. package/dist/core/chart/analysis/supertrend-analyze-tools.d.ts +112 -0
  75. package/dist/core/chart/analysis/supertrend-analyze-tools.d.ts.map +1 -0
  76. package/dist/core/chart/analysis/supertrend-analyze-tools.js +214 -0
  77. package/dist/core/chart/analysis/supertrend-analyze-tools.js.map +1 -0
  78. package/dist/core/chart/analysis/supertrend-highlight.d.ts +25 -0
  79. package/dist/core/chart/analysis/supertrend-highlight.d.ts.map +1 -0
  80. package/dist/core/chart/analysis/supertrend-highlight.js +37 -0
  81. package/dist/core/chart/analysis/supertrend-highlight.js.map +1 -0
  82. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
  83. package/dist/core/chart/analysis/trade-setups/build-trade.js +23 -5
  84. package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
  85. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.d.ts +78 -0
  86. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.d.ts.map +1 -0
  87. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.js +184 -0
  88. package/dist/core/chart/analysis/trade-setups/divergence-trade-setup.js.map +1 -0
  89. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.d.ts +133 -0
  90. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.d.ts.map +1 -0
  91. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.js +419 -0
  92. package/dist/core/chart/analysis/trade-setups/donchian-trade-setup.js.map +1 -0
  93. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.d.ts +154 -0
  94. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.d.ts.map +1 -0
  95. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.js +396 -0
  96. package/dist/core/chart/analysis/trade-setups/ichimoku-trade-setup.js.map +1 -0
  97. package/dist/core/chart/analysis/trade-setups/index.d.ts +5 -0
  98. package/dist/core/chart/analysis/trade-setups/index.d.ts.map +1 -1
  99. package/dist/core/chart/analysis/trade-setups/index.js +5 -0
  100. package/dist/core/chart/analysis/trade-setups/index.js.map +1 -1
  101. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts +7 -41
  102. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.d.ts.map +1 -1
  103. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js +33 -235
  104. package/dist/core/chart/analysis/trade-setups/key-level-fib-retrace-trade-setup.js.map +1 -1
  105. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts +2 -8
  106. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.d.ts.map +1 -1
  107. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js +0 -27
  108. package/dist/core/chart/analysis/trade-setups/key-levels-trade-setup.js.map +1 -1
  109. package/dist/core/chart/analysis/trade-setups/shared.d.ts +1 -1
  110. package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -1
  111. package/dist/core/chart/analysis/trade-setups/shared.js +10 -0
  112. package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -1
  113. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.d.ts +119 -0
  114. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.d.ts.map +1 -0
  115. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.js +301 -0
  116. package/dist/core/chart/analysis/trade-setups/supertrend-trade-setup.js.map +1 -0
  117. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts +34 -0
  118. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts.map +1 -1
  119. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js +43 -0
  120. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js.map +1 -1
  121. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +15 -0
  122. package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -1
  123. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +89 -0
  124. package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -1
  125. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +32 -0
  126. package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -1
  127. package/dist/core/chart/analysis/trade-setups/trade-idea.js +32 -0
  128. package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -1
  129. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +2 -2
  130. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -1
  131. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +2 -6
  132. package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -1
  133. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts +42 -8
  134. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts.map +1 -1
  135. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js +72 -17
  136. package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js.map +1 -1
  137. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.d.ts +89 -0
  138. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.d.ts.map +1 -0
  139. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.js +195 -0
  140. package/dist/core/chart/analysis/trade-setups/z-score-trade-setup.js.map +1 -0
  141. package/dist/core/chart/analysis/z-score-analyze-tools.d.ts +111 -0
  142. package/dist/core/chart/analysis/z-score-analyze-tools.d.ts.map +1 -0
  143. package/dist/core/chart/analysis/z-score-analyze-tools.js +240 -0
  144. package/dist/core/chart/analysis/z-score-analyze-tools.js.map +1 -0
  145. package/dist/core/chart/analysis/z-score-highlight.d.ts +29 -0
  146. package/dist/core/chart/analysis/z-score-highlight.d.ts.map +1 -0
  147. package/dist/core/chart/analysis/z-score-highlight.js +39 -0
  148. package/dist/core/chart/analysis/z-score-highlight.js.map +1 -0
  149. package/dist/core/chart/customization-catalog.d.ts.map +1 -1
  150. package/dist/core/chart/customization-catalog.js +36 -0
  151. package/dist/core/chart/customization-catalog.js.map +1 -1
  152. package/dist/core/chart/display-downsample.d.ts.map +1 -1
  153. package/dist/core/chart/display-downsample.js +4 -14
  154. package/dist/core/chart/display-downsample.js.map +1 -1
  155. package/dist/core/chart/overlay-schemas.d.ts +496 -0
  156. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  157. package/dist/core/chart/overlay-schemas.js +137 -0
  158. package/dist/core/chart/overlay-schemas.js.map +1 -1
  159. package/dist/core/chart/overlays.d.ts +2 -0
  160. package/dist/core/chart/overlays.d.ts.map +1 -1
  161. package/dist/core/chart/overlays.js +620 -2
  162. package/dist/core/chart/overlays.js.map +1 -1
  163. package/dist/core/chart/prepare-from-rows.d.ts +143 -0
  164. package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
  165. package/dist/core/chart/schemas.d.ts +491 -0
  166. package/dist/core/chart/schemas.d.ts.map +1 -1
  167. package/dist/core/coinmarketcap/schemas.d.ts +5 -5
  168. package/dist/mcp/agent-host-catalog.d.ts +1 -1
  169. package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
  170. package/dist/mcp/agent-host-catalog.js +1 -0
  171. package/dist/mcp/agent-host-catalog.js.map +1 -1
  172. package/dist/mcp/chart.d.ts.map +1 -1
  173. package/dist/mcp/chart.js +61 -2
  174. package/dist/mcp/chart.js.map +1 -1
  175. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
  176. package/dist/mcp/deferred/tool-group-map.js +8 -0
  177. package/dist/mcp/deferred/tool-group-map.js.map +1 -1
  178. package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -1
  179. package/dist/mcp/ohlcv-session-wrapper.js +8 -0
  180. package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
  181. package/dist/mcp/resources/chart-analysis.md +9 -0
  182. package/dist/mcp/resources/chart.md +3 -0
  183. package/dist/mcp/trade-tools.d.ts.map +1 -1
  184. package/dist/mcp/trade-tools.js +2 -0
  185. package/dist/mcp/trade-tools.js.map +1 -1
  186. package/package.json +1 -1
  187. package/dist/core/agent/mcp-servers-catalog.d.ts +0 -15
  188. package/dist/core/agent/mcp-servers-catalog.d.ts.map +0 -1
  189. package/dist/core/agent/mcp-servers-catalog.js +0 -125
  190. package/dist/core/agent/mcp-servers-catalog.js.map +0 -1
  191. package/dist/core/agent/webhooks-catalog.d.ts +0 -10
  192. package/dist/core/agent/webhooks-catalog.d.ts.map +0 -1
  193. package/dist/core/agent/webhooks-catalog.js +0 -19
  194. package/dist/core/agent/webhooks-catalog.js.map +0 -1
  195. package/dist/mcp/resources/trade-defaults-skill.md +0 -69
  196. package/dist/mcp/ta/resources/indicators.md +0 -86
@@ -0,0 +1,78 @@
1
+ import type { DivergenceKind, DivergenceOscillator, DivergencePrimary } from '../divergence/types.js';
2
+ import type { TradeSetupSide, TradeSetupStatus } from './shared.js';
3
+ export type DivergenceTradeSetup = {
4
+ status: TradeSetupStatus;
5
+ source: 'divergence';
6
+ setupPurposeCode: 'div';
7
+ primaryKind: DivergenceKind | null;
8
+ oscillator: DivergenceOscillator | null;
9
+ lastClose: number;
10
+ side: TradeSetupSide;
11
+ entryPrice?: number;
12
+ entryLabel?: string;
13
+ targetPrice?: number;
14
+ targetLabel?: string;
15
+ invalidationPrice?: number;
16
+ invalidationLabel?: string;
17
+ entryOffsetPct: number;
18
+ invalidationOffsetPct: number;
19
+ conditionalNote: string;
20
+ confidence: number;
21
+ unclearReason?: string;
22
+ };
23
+ /** Minimum |p1−p2| / lastClose × 100 for a clear trade (filters micro-wiggle pivots). */
24
+ export declare const DIVERGENCE_MIN_SWING_PCT = 0.5;
25
+ export declare function pivotStructureLevels(input: {
26
+ side: 'long' | 'short';
27
+ p1Price: number;
28
+ p2Price: number;
29
+ lastClose: number;
30
+ }): {
31
+ entryPrice: number;
32
+ entryLabel: string;
33
+ targetPrice: number;
34
+ targetLabel: string;
35
+ invalidationPrice: number;
36
+ invalidationLabel: string;
37
+ swingPct: number;
38
+ } | null;
39
+ /** Target/invalidation must sit on the correct side of entry for the trade direction. */
40
+ export declare function divergenceLevelsActionable(input: {
41
+ side: 'long' | 'short';
42
+ entryPrice: number;
43
+ targetPrice: number;
44
+ invalidationPrice: number;
45
+ swingPct: number;
46
+ minSwingPct?: number;
47
+ }): {
48
+ ok: true;
49
+ } | {
50
+ ok: false;
51
+ reason: string;
52
+ };
53
+ export declare function buildDivergenceTradeSetup(input: {
54
+ lastClose: number;
55
+ primary: DivergencePrimary | null;
56
+ entryOffsetPct?: number;
57
+ invalidationOffsetPct?: number;
58
+ }): DivergenceTradeSetup | null;
59
+ export declare function normalizeDivergenceTradeSetup(setup: DivergenceTradeSetup): {
60
+ status: TradeSetupStatus;
61
+ side: TradeSetupSide;
62
+ confidence: number;
63
+ lastClose: number;
64
+ entry: {
65
+ price: number;
66
+ label: string;
67
+ } | undefined;
68
+ target: {
69
+ price: number;
70
+ label: string | undefined;
71
+ } | undefined;
72
+ invalidation: {
73
+ price: number;
74
+ label: string | undefined;
75
+ } | undefined;
76
+ unclearReason: string | undefined;
77
+ };
78
+ //# sourceMappingURL=divergence-trade-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divergence-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/divergence-trade-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAEpG,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAIlE,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,gBAAgB,EAAE,KAAK,CAAC;IACxB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB,GAAG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAoCP;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IACjD,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG;IAAC,EAAE,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAsC3C;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,oBAAoB,GAAG,IAAI,CAqF9B;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;EAuBxE"}
@@ -0,0 +1,184 @@
1
+ import { kindLabel } from '../divergence/detect.js';
2
+ import { isFiniteTradePrice } from './shared.js';
3
+ import { tradeDeskDefaultPcts } from './trade-desk-defaults.js';
4
+ /** Minimum |p1−p2| / lastClose × 100 for a clear trade (filters micro-wiggle pivots). */
5
+ export const DIVERGENCE_MIN_SWING_PCT = 0.5;
6
+ export function pivotStructureLevels(input) {
7
+ const { side, p1Price, p2Price, lastClose } = input;
8
+ if (![p1Price, p2Price, lastClose].every(isFiniteTradePrice)) {
9
+ return null;
10
+ }
11
+ const range = Math.abs(p1Price - p2Price);
12
+ if (!(range > 0) || !(lastClose > 0)) {
13
+ return null;
14
+ }
15
+ const swingPct = (range / lastClose) * 100;
16
+ if (side === 'long') {
17
+ const invalidationPrice = Math.min(p1Price, p2Price);
18
+ // Project swing size from entry so the target stays ahead of last close when
19
+ // price has already moved past the classic p2±range measured move.
20
+ const targetPrice = lastClose + range;
21
+ return {
22
+ entryPrice: lastClose,
23
+ entryLabel: 'last close (divergence)',
24
+ targetPrice,
25
+ targetLabel: 'measured move (swing size from entry)',
26
+ invalidationPrice,
27
+ invalidationLabel: 'below divergence swing low',
28
+ swingPct,
29
+ };
30
+ }
31
+ const invalidationPrice = Math.max(p1Price, p2Price);
32
+ const targetPrice = lastClose - range;
33
+ return {
34
+ entryPrice: lastClose,
35
+ entryLabel: 'last close (divergence)',
36
+ targetPrice,
37
+ targetLabel: 'measured move (swing size from entry)',
38
+ invalidationPrice,
39
+ invalidationLabel: 'above divergence swing high',
40
+ swingPct,
41
+ };
42
+ }
43
+ /** Target/invalidation must sit on the correct side of entry for the trade direction. */
44
+ export function divergenceLevelsActionable(input) {
45
+ const minSwing = input.minSwingPct ?? DIVERGENCE_MIN_SWING_PCT;
46
+ if (!(input.swingPct >= minSwing)) {
47
+ return {
48
+ ok: false,
49
+ reason: `Divergence swing too small (${input.swingPct.toFixed(2)}% < ${minSwing}% of price) for a clear entry.`,
50
+ };
51
+ }
52
+ if (input.side === 'long') {
53
+ if (!(input.targetPrice > input.entryPrice)) {
54
+ return {
55
+ ok: false,
56
+ reason: 'Target is not above last close for a long divergence setup.',
57
+ };
58
+ }
59
+ if (!(input.invalidationPrice < input.entryPrice)) {
60
+ return {
61
+ ok: false,
62
+ reason: 'Price is at or below the divergence swing low — bullish bias remains, but invalidation is already spent.',
63
+ };
64
+ }
65
+ return { ok: true };
66
+ }
67
+ if (!(input.targetPrice < input.entryPrice)) {
68
+ return {
69
+ ok: false,
70
+ reason: 'Target is not below last close for a short divergence setup.',
71
+ };
72
+ }
73
+ if (!(input.invalidationPrice > input.entryPrice)) {
74
+ return {
75
+ ok: false,
76
+ reason: 'Price is at or above the divergence swing high — bearish bias remains, but invalidation is already spent.',
77
+ };
78
+ }
79
+ return { ok: true };
80
+ }
81
+ export function buildDivergenceTradeSetup(input) {
82
+ const close = input.lastClose;
83
+ if (!isFiniteTradePrice(close)) {
84
+ return null;
85
+ }
86
+ const desk = tradeDeskDefaultPcts({
87
+ entryOffsetPct: input.entryOffsetPct,
88
+ invalidationOffsetPct: input.invalidationOffsetPct,
89
+ });
90
+ if (!input.primary) {
91
+ return {
92
+ status: 'unclear',
93
+ source: 'divergence',
94
+ setupPurposeCode: 'div',
95
+ primaryKind: null,
96
+ oscillator: null,
97
+ lastClose: close,
98
+ side: 'neutral',
99
+ entryOffsetPct: desk.entryOffsetPct,
100
+ invalidationOffsetPct: desk.invalidationOffsetPct,
101
+ conditionalNote: 'No RSI/Stochastic RSI divergence detected — no trade bias.',
102
+ confidence: 0.35,
103
+ unclearReason: 'No primary divergence pattern on the session OHLCV.',
104
+ };
105
+ }
106
+ const primary = input.primary;
107
+ const levels = pivotStructureLevels({
108
+ side: primary.side,
109
+ p1Price: primary.p1.value,
110
+ p2Price: primary.p2.value,
111
+ lastClose: close,
112
+ });
113
+ const confidence = primary.confidence;
114
+ const oscLabel = primary.oscillator === 'rsi' ? 'RSI' : 'Stochastic RSI';
115
+ const note = `${kindLabel(primary.kind)} ${oscLabel} divergence — supports ${primary.side} (confidence ${confidence.toFixed(2)}).`;
116
+ let status = 'unclear';
117
+ let unclearReason = levels == null
118
+ ? 'Could not form pivot-structure entry/target/invalidation from primary pivots.'
119
+ : confidence < 0.45
120
+ ? 'Primary divergence confidence below clear threshold.'
121
+ : '';
122
+ if (levels != null && confidence >= 0.45) {
123
+ const actionable = divergenceLevelsActionable({
124
+ side: primary.side,
125
+ entryPrice: levels.entryPrice,
126
+ targetPrice: levels.targetPrice,
127
+ invalidationPrice: levels.invalidationPrice,
128
+ swingPct: levels.swingPct,
129
+ });
130
+ if (actionable.ok) {
131
+ status = 'clear';
132
+ unclearReason = '';
133
+ }
134
+ else {
135
+ unclearReason = actionable.reason;
136
+ }
137
+ }
138
+ return {
139
+ status,
140
+ source: 'divergence',
141
+ setupPurposeCode: 'div',
142
+ primaryKind: primary.kind,
143
+ oscillator: primary.oscillator,
144
+ lastClose: close,
145
+ side: primary.side,
146
+ ...(levels && status === 'clear'
147
+ ? {
148
+ entryPrice: levels.entryPrice,
149
+ entryLabel: levels.entryLabel,
150
+ targetPrice: levels.targetPrice,
151
+ targetLabel: levels.targetLabel,
152
+ invalidationPrice: levels.invalidationPrice,
153
+ invalidationLabel: levels.invalidationLabel,
154
+ }
155
+ : {}),
156
+ entryOffsetPct: desk.entryOffsetPct,
157
+ invalidationOffsetPct: desk.invalidationOffsetPct,
158
+ conditionalNote: note,
159
+ confidence,
160
+ ...(unclearReason ? { unclearReason } : {}),
161
+ };
162
+ }
163
+ export function normalizeDivergenceTradeSetup(setup) {
164
+ return {
165
+ status: setup.status,
166
+ side: setup.side,
167
+ confidence: setup.confidence,
168
+ lastClose: setup.lastClose,
169
+ entry: setup.status === 'clear' &&
170
+ setup.side !== 'neutral' &&
171
+ setup.entryPrice != null &&
172
+ isFiniteTradePrice(setup.entryPrice)
173
+ ? { price: setup.entryPrice, label: setup.entryLabel ?? 'last close (divergence)' }
174
+ : undefined,
175
+ target: setup.targetPrice != null && isFiniteTradePrice(setup.targetPrice)
176
+ ? { price: setup.targetPrice, label: setup.targetLabel }
177
+ : undefined,
178
+ invalidation: setup.invalidationPrice != null && isFiniteTradePrice(setup.invalidationPrice)
179
+ ? { price: setup.invalidationPrice, label: setup.invalidationLabel }
180
+ : undefined,
181
+ unclearReason: setup.unclearReason,
182
+ };
183
+ }
184
+ //# sourceMappingURL=divergence-trade-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divergence-trade-setup.js","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/divergence-trade-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import type { EntryOffsetMode } from './pattern-limit-entry.js';
2
+ import type { TradeSetupSide, TradeSetupStatus } from './shared.js';
3
+ export declare const DEFAULT_DONCHIAN_PERIOD = 20;
4
+ export declare const DEFAULT_DONCHIAN_ENTRY_MODE: "retest";
5
+ export declare const DEFAULT_DONCHIAN_BREAK_LOOKBACK = 30;
6
+ /** Target = entry ± (multiple × ATR). Desk: universal.donchianTargetAtrMultiple. */
7
+ export declare const DEFAULT_DONCHIAN_TARGET_ATR_MULTIPLE = 3;
8
+ export type DonchianEntryMode = 'retest' | 'immediate';
9
+ export type DonchianTradeSetup = {
10
+ status: TradeSetupStatus;
11
+ source: 'donchian_breakout';
12
+ entryMode: DonchianEntryMode;
13
+ lastClose: number;
14
+ upper: number;
15
+ middle: number;
16
+ lower: number;
17
+ priorUpper: number;
18
+ priorLower: number;
19
+ channelWidth: number;
20
+ period: number;
21
+ entryProximityPct: number;
22
+ entryOffsetMode: EntryOffsetMode;
23
+ entryOffsetPct: number;
24
+ invalidationOffsetPct: number;
25
+ /** ATR at last bar used for target distance (entry ± multiple × ATR). */
26
+ atrAtLastBar?: number;
27
+ /** Desk multiple for ATR target (default 3). */
28
+ targetAtrMultiple: number;
29
+ setupPurposeCode: string;
30
+ invalidated: boolean;
31
+ side: TradeSetupSide;
32
+ brokeOnLastBar: boolean;
33
+ breakBarIndex?: number;
34
+ entryPrice?: number;
35
+ entryLabel?: string;
36
+ targetPrice?: number;
37
+ targetLabel?: string;
38
+ invalidationPrice?: number;
39
+ invalidationLabel?: string;
40
+ conditionalNote: string;
41
+ confidence: number;
42
+ unclearReason?: string;
43
+ /** Nested when primary mode is retest. */
44
+ immediateAlternative?: DonchianTradeSetup | null;
45
+ /** Nested when primary mode is immediate. */
46
+ breakRetestAlternative?: DonchianTradeSetup | null;
47
+ };
48
+ export type DonchianChannelPoint = {
49
+ upper: number;
50
+ middle: number;
51
+ lower: number;
52
+ };
53
+ export declare function buildImmediateDonchianSetup(input: {
54
+ lastClose: number;
55
+ prevClose: number;
56
+ upper: number;
57
+ middle: number;
58
+ lower: number;
59
+ priorUpper: number;
60
+ priorLower: number;
61
+ period: number;
62
+ entryProximityPct?: number;
63
+ entryOffsetPct?: number;
64
+ invalidationOffsetPct?: number;
65
+ atr?: number | null;
66
+ targetAtrMultiple?: number;
67
+ }): DonchianTradeSetup | null;
68
+ export declare function buildRetestDonchianSetup(input: {
69
+ closes: number[];
70
+ channels: Array<DonchianChannelPoint | null>;
71
+ lastClose: number;
72
+ upper: number;
73
+ middle: number;
74
+ lower: number;
75
+ priorUpper: number;
76
+ priorLower: number;
77
+ period: number;
78
+ entryProximityPct?: number;
79
+ entryOffsetPct?: number;
80
+ invalidationOffsetPct?: number;
81
+ atr?: number | null;
82
+ targetAtrMultiple?: number;
83
+ lookback?: number;
84
+ }): DonchianTradeSetup | null;
85
+ export declare function buildDonchianTradeSetup(input: {
86
+ closes: number[];
87
+ channels: Array<DonchianChannelPoint | null>;
88
+ period: number;
89
+ entryMode?: DonchianEntryMode;
90
+ entryProximityPct?: number;
91
+ entryOffsetPct?: number;
92
+ invalidationOffsetPct?: number;
93
+ atr?: number | null;
94
+ targetAtrMultiple?: number;
95
+ }): DonchianTradeSetup | null;
96
+ export type DonchianTradeIdeaContext = {
97
+ period: number;
98
+ entryMode: DonchianEntryMode;
99
+ setupPurposeCode: string;
100
+ channelWidth: number;
101
+ upper: number;
102
+ middle: number;
103
+ lower: number;
104
+ priorUpper: number;
105
+ priorLower: number;
106
+ invalidated: boolean;
107
+ entryProximityPct: number;
108
+ entryOffsetPct: number;
109
+ invalidationOffsetPct: number;
110
+ atrAtLastBar?: number;
111
+ targetAtrMultiple: number;
112
+ };
113
+ export declare function donchianTradeIdeaContextFromSetup(setup: DonchianTradeSetup): DonchianTradeIdeaContext;
114
+ export declare function normalizeDonchianTradeSetup(setup: DonchianTradeSetup): {
115
+ unclearReason: string | undefined;
116
+ invalidation?: {
117
+ price: number;
118
+ label: string;
119
+ } | undefined;
120
+ target?: {
121
+ price: number;
122
+ label: string;
123
+ } | undefined;
124
+ status: TradeSetupStatus;
125
+ side: TradeSetupSide;
126
+ confidence: number;
127
+ lastClose: number;
128
+ entry: {
129
+ price: number;
130
+ label: string;
131
+ } | undefined;
132
+ };
133
+ //# sourceMappingURL=donchian-trade-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donchian-trade-setup.d.ts","sourceRoot":"","sources":["../../../../../src/core/chart/analysis/trade-setups/donchian-trade-setup.ts"],"names":[],"mappings":"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"}