openalgo-script 0.1.0-alpha.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (997) hide show
  1. package/CHANGELOG.md +1249 -0
  2. package/README.md +288 -255
  3. package/dist/adapters/charts/alerts.d.ts +70 -0
  4. package/dist/adapters/charts/alerts.d.ts.map +1 -0
  5. package/dist/adapters/charts/alerts.js +52 -0
  6. package/dist/adapters/charts/alerts.js.map +1 -0
  7. package/dist/adapters/charts/bars.d.ts +39 -0
  8. package/dist/adapters/charts/bars.d.ts.map +1 -0
  9. package/dist/adapters/charts/bars.js +32 -0
  10. package/dist/adapters/charts/bars.js.map +1 -0
  11. package/dist/adapters/charts/candles.d.ts +40 -0
  12. package/dist/adapters/charts/candles.d.ts.map +1 -0
  13. package/dist/adapters/charts/candles.js +85 -0
  14. package/dist/adapters/charts/candles.js.map +1 -0
  15. package/dist/adapters/charts/colours.d.ts +47 -0
  16. package/dist/adapters/charts/colours.d.ts.map +1 -0
  17. package/dist/adapters/charts/colours.js +80 -0
  18. package/dist/adapters/charts/colours.js.map +1 -0
  19. package/dist/adapters/charts/columns.d.ts +37 -0
  20. package/dist/adapters/charts/columns.d.ts.map +1 -0
  21. package/dist/adapters/charts/columns.js +56 -0
  22. package/dist/adapters/charts/columns.js.map +1 -0
  23. package/dist/adapters/charts/contract.d.ts +278 -0
  24. package/dist/adapters/charts/contract.d.ts.map +1 -0
  25. package/dist/adapters/charts/contract.js +2 -0
  26. package/dist/adapters/charts/contract.js.map +1 -0
  27. package/dist/adapters/charts/descriptor.d.ts +48 -0
  28. package/dist/adapters/charts/descriptor.d.ts.map +1 -0
  29. package/dist/adapters/charts/descriptor.js +111 -0
  30. package/dist/adapters/charts/descriptor.js.map +1 -0
  31. package/dist/adapters/charts/drawings.d.ts +43 -0
  32. package/dist/adapters/charts/drawings.d.ts.map +1 -0
  33. package/dist/adapters/charts/drawings.js +172 -0
  34. package/dist/adapters/charts/drawings.js.map +1 -0
  35. package/dist/adapters/charts/errors.d.ts +28 -0
  36. package/dist/adapters/charts/errors.d.ts.map +1 -0
  37. package/dist/adapters/charts/errors.js +21 -0
  38. package/dist/adapters/charts/errors.js.map +1 -0
  39. package/dist/adapters/charts/fields.d.ts +33 -0
  40. package/dist/adapters/charts/fields.d.ts.map +1 -0
  41. package/dist/adapters/charts/fields.js +51 -0
  42. package/dist/adapters/charts/fields.js.map +1 -0
  43. package/dist/adapters/charts/fills.d.ts +23 -0
  44. package/dist/adapters/charts/fills.d.ts.map +1 -0
  45. package/dist/adapters/charts/fills.js +48 -0
  46. package/dist/adapters/charts/fills.js.map +1 -0
  47. package/dist/adapters/charts/index.d.ts +37 -0
  48. package/dist/adapters/charts/index.d.ts.map +1 -0
  49. package/dist/adapters/charts/index.js +33 -0
  50. package/dist/adapters/charts/index.js.map +1 -0
  51. package/dist/adapters/charts/levels.d.ts +39 -0
  52. package/dist/adapters/charts/levels.d.ts.map +1 -0
  53. package/dist/adapters/charts/levels.js +61 -0
  54. package/dist/adapters/charts/levels.js.map +1 -0
  55. package/dist/adapters/charts/markers.d.ts +41 -0
  56. package/dist/adapters/charts/markers.d.ts.map +1 -0
  57. package/dist/adapters/charts/markers.js +75 -0
  58. package/dist/adapters/charts/markers.js.map +1 -0
  59. package/dist/adapters/charts/paint.d.ts +61 -0
  60. package/dist/adapters/charts/paint.d.ts.map +1 -0
  61. package/dist/adapters/charts/paint.js +47 -0
  62. package/dist/adapters/charts/paint.js.map +1 -0
  63. package/dist/adapters/charts/plots.d.ts +39 -0
  64. package/dist/adapters/charts/plots.d.ts.map +1 -0
  65. package/dist/adapters/charts/plots.js +117 -0
  66. package/dist/adapters/charts/plots.js.map +1 -0
  67. package/dist/adapters/charts/produced.d.ts +57 -0
  68. package/dist/adapters/charts/produced.d.ts.map +1 -0
  69. package/dist/adapters/charts/produced.js +11 -0
  70. package/dist/adapters/charts/produced.js.map +1 -0
  71. package/dist/adapters/charts/requests.d.ts +114 -0
  72. package/dist/adapters/charts/requests.d.ts.map +1 -0
  73. package/dist/adapters/charts/requests.js +277 -0
  74. package/dist/adapters/charts/requests.js.map +1 -0
  75. package/dist/adapters/charts/run.d.ts +147 -0
  76. package/dist/adapters/charts/run.d.ts.map +1 -0
  77. package/dist/adapters/charts/run.js +148 -0
  78. package/dist/adapters/charts/run.js.map +1 -0
  79. package/dist/adapters/charts/settings.d.ts +78 -0
  80. package/dist/adapters/charts/settings.d.ts.map +1 -0
  81. package/dist/adapters/charts/settings.js +225 -0
  82. package/dist/adapters/charts/settings.js.map +1 -0
  83. package/dist/adapters/charts/surfaces.d.ts +204 -0
  84. package/dist/adapters/charts/surfaces.d.ts.map +1 -0
  85. package/dist/adapters/charts/surfaces.js +2 -0
  86. package/dist/adapters/charts/surfaces.js.map +1 -0
  87. package/dist/adapters/charts/tables.d.ts +65 -0
  88. package/dist/adapters/charts/tables.d.ts.map +1 -0
  89. package/dist/adapters/charts/tables.js +84 -0
  90. package/dist/adapters/charts/tables.js.map +1 -0
  91. package/dist/core/catalogue/catalogue.generated.d.ts +98 -10
  92. package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
  93. package/dist/core/catalogue/catalogue.generated.js +17 -9
  94. package/dist/core/catalogue/catalogue.generated.js.map +1 -1
  95. package/dist/core/catalogue/values.generated.d.ts +25 -0
  96. package/dist/core/catalogue/values.generated.d.ts.map +1 -1
  97. package/dist/core/check/arguments.d.ts +41 -0
  98. package/dist/core/check/arguments.d.ts.map +1 -0
  99. package/dist/core/check/arguments.js +84 -0
  100. package/dist/core/check/arguments.js.map +1 -0
  101. package/dist/core/check/call-sites.d.ts +22 -0
  102. package/dist/core/check/call-sites.d.ts.map +1 -0
  103. package/dist/core/check/call-sites.js +329 -0
  104. package/dist/core/check/call-sites.js.map +1 -0
  105. package/dist/core/check/call-warmup.d.ts +37 -0
  106. package/dist/core/check/call-warmup.d.ts.map +1 -0
  107. package/dist/core/check/call-warmup.js +97 -0
  108. package/dist/core/check/call-warmup.js.map +1 -0
  109. package/dist/core/check/calls.d.ts +33 -0
  110. package/dist/core/check/calls.d.ts.map +1 -0
  111. package/dist/core/check/calls.js +348 -0
  112. package/dist/core/check/calls.js.map +1 -0
  113. package/dist/core/check/check.d.ts +23 -0
  114. package/dist/core/check/check.d.ts.map +1 -0
  115. package/dist/core/check/check.js +163 -0
  116. package/dist/core/check/check.js.map +1 -0
  117. package/dist/core/check/checked.d.ts +198 -0
  118. package/dist/core/check/checked.d.ts.map +1 -0
  119. package/dist/core/check/checked.js +19 -0
  120. package/dist/core/check/checked.js.map +1 -0
  121. package/dist/core/check/checker.d.ts +182 -0
  122. package/dist/core/check/checker.d.ts.map +1 -0
  123. package/dist/core/check/checker.js +280 -0
  124. package/dist/core/check/checker.js.map +1 -0
  125. package/dist/core/check/conditional.d.ts +35 -0
  126. package/dist/core/check/conditional.d.ts.map +1 -0
  127. package/dist/core/check/conditional.js +100 -0
  128. package/dist/core/check/conditional.js.map +1 -0
  129. package/dist/core/check/constant.d.ts +47 -0
  130. package/dist/core/check/constant.d.ts.map +1 -0
  131. package/dist/core/check/constant.js +101 -0
  132. package/dist/core/check/constant.js.map +1 -0
  133. package/dist/core/check/declaration.d.ts +33 -0
  134. package/dist/core/check/declaration.d.ts.map +1 -0
  135. package/dist/core/check/declaration.js +181 -0
  136. package/dist/core/check/declaration.js.map +1 -0
  137. package/dist/core/check/expressions.d.ts +36 -0
  138. package/dist/core/check/expressions.d.ts.map +1 -0
  139. package/dist/core/check/expressions.js +398 -0
  140. package/dist/core/check/expressions.js.map +1 -0
  141. package/dist/core/check/functions.d.ts +31 -0
  142. package/dist/core/check/functions.d.ts.map +1 -0
  143. package/dist/core/check/functions.js +238 -0
  144. package/dist/core/check/functions.js.map +1 -0
  145. package/dist/core/check/handles.d.ts +48 -0
  146. package/dist/core/check/handles.d.ts.map +1 -0
  147. package/dist/core/check/handles.js +43 -0
  148. package/dist/core/check/handles.js.map +1 -0
  149. package/dist/core/check/index.d.ts +30 -0
  150. package/dist/core/check/index.d.ts.map +1 -0
  151. package/dist/core/check/index.js +26 -0
  152. package/dist/core/check/index.js.map +1 -0
  153. package/dist/core/check/library-bars.d.ts +7 -0
  154. package/dist/core/check/library-bars.d.ts.map +1 -0
  155. package/dist/core/check/library-bars.js +181 -0
  156. package/dist/core/check/library-bars.js.map +1 -0
  157. package/dist/core/check/library-orders.d.ts +5 -0
  158. package/dist/core/check/library-orders.d.ts.map +1 -0
  159. package/dist/core/check/library-orders.js +250 -0
  160. package/dist/core/check/library-orders.js.map +1 -0
  161. package/dist/core/check/library-output.d.ts +7 -0
  162. package/dist/core/check/library-output.d.ts.map +1 -0
  163. package/dist/core/check/library-output.js +195 -0
  164. package/dist/core/check/library-output.js.map +1 -0
  165. package/dist/core/check/library-series.d.ts +3 -0
  166. package/dist/core/check/library-series.d.ts.map +1 -0
  167. package/dist/core/check/library-series.js +415 -0
  168. package/dist/core/check/library-series.js.map +1 -0
  169. package/dist/core/check/library.d.ts +204 -0
  170. package/dist/core/check/library.d.ts.map +1 -0
  171. package/dist/core/check/library.js +198 -0
  172. package/dist/core/check/library.js.map +1 -0
  173. package/dist/core/check/literals.d.ts +19 -0
  174. package/dist/core/check/literals.d.ts.map +1 -0
  175. package/dist/core/check/literals.js +22 -0
  176. package/dist/core/check/literals.js.map +1 -0
  177. package/dist/core/check/outputs.d.ts +31 -0
  178. package/dist/core/check/outputs.d.ts.map +1 -0
  179. package/dist/core/check/outputs.js +113 -0
  180. package/dist/core/check/outputs.js.map +1 -0
  181. package/dist/core/check/statements.d.ts +25 -0
  182. package/dist/core/check/statements.d.ts.map +1 -0
  183. package/dist/core/check/statements.js +377 -0
  184. package/dist/core/check/statements.js.map +1 -0
  185. package/dist/core/check/suggest.d.ts +25 -0
  186. package/dist/core/check/suggest.d.ts.map +1 -0
  187. package/dist/core/check/suggest.js +61 -0
  188. package/dist/core/check/suggest.js.map +1 -0
  189. package/dist/core/check/surface.d.ts +38 -0
  190. package/dist/core/check/surface.d.ts.map +1 -0
  191. package/dist/core/check/surface.js +100 -0
  192. package/dist/core/check/surface.js.map +1 -0
  193. package/dist/core/check/tags.d.ts +4 -0
  194. package/dist/core/check/tags.d.ts.map +1 -0
  195. package/dist/core/check/tags.js +54 -0
  196. package/dist/core/check/tags.js.map +1 -0
  197. package/dist/core/check/types.d.ts +153 -0
  198. package/dist/core/check/types.d.ts.map +1 -0
  199. package/dist/core/check/types.js +221 -0
  200. package/dist/core/check/types.js.map +1 -0
  201. package/dist/core/check/warmup.d.ts +73 -0
  202. package/dist/core/check/warmup.d.ts.map +1 -0
  203. package/dist/core/check/warmup.js +62 -0
  204. package/dist/core/check/warmup.js.map +1 -0
  205. package/dist/core/diagnostics/collector.d.ts +12 -0
  206. package/dist/core/diagnostics/collector.d.ts.map +1 -1
  207. package/dist/core/diagnostics/collector.js +27 -1
  208. package/dist/core/diagnostics/collector.js.map +1 -1
  209. package/dist/core/emit/calls.d.ts +38 -0
  210. package/dist/core/emit/calls.d.ts.map +1 -0
  211. package/dist/core/emit/calls.js +347 -0
  212. package/dist/core/emit/calls.js.map +1 -0
  213. package/dist/core/emit/canonical.d.ts +39 -0
  214. package/dist/core/emit/canonical.d.ts.map +1 -0
  215. package/dist/core/emit/canonical.js +71 -0
  216. package/dist/core/emit/canonical.js.map +1 -0
  217. package/dist/core/emit/channels.d.ts +28 -0
  218. package/dist/core/emit/channels.d.ts.map +1 -0
  219. package/dist/core/emit/channels.js +110 -0
  220. package/dist/core/emit/channels.js.map +1 -0
  221. package/dist/core/emit/code.d.ts +75 -0
  222. package/dist/core/emit/code.d.ts.map +1 -0
  223. package/dist/core/emit/code.js +104 -0
  224. package/dist/core/emit/code.js.map +1 -0
  225. package/dist/core/emit/colours.d.ts +35 -0
  226. package/dist/core/emit/colours.d.ts.map +1 -0
  227. package/dist/core/emit/colours.js +50 -0
  228. package/dist/core/emit/colours.js.map +1 -0
  229. package/dist/core/emit/context.d.ts +271 -0
  230. package/dist/core/emit/context.d.ts.map +1 -0
  231. package/dist/core/emit/context.js +358 -0
  232. package/dist/core/emit/context.js.map +1 -0
  233. package/dist/core/emit/defaults.d.ts +45 -0
  234. package/dist/core/emit/defaults.d.ts.map +1 -0
  235. package/dist/core/emit/defaults.js +116 -0
  236. package/dist/core/emit/defaults.js.map +1 -0
  237. package/dist/core/emit/emit.d.ts +13 -0
  238. package/dist/core/emit/emit.d.ts.map +1 -0
  239. package/dist/core/emit/emit.js +281 -0
  240. package/dist/core/emit/emit.js.map +1 -0
  241. package/dist/core/emit/events.d.ts +21 -0
  242. package/dist/core/emit/events.d.ts.map +1 -0
  243. package/dist/core/emit/events.js +112 -0
  244. package/dist/core/emit/events.js.map +1 -0
  245. package/dist/core/emit/expressions.d.ts +23 -0
  246. package/dist/core/emit/expressions.d.ts.map +1 -0
  247. package/dist/core/emit/expressions.js +253 -0
  248. package/dist/core/emit/expressions.js.map +1 -0
  249. package/dist/core/emit/functions.d.ts +30 -0
  250. package/dist/core/emit/functions.d.ts.map +1 -0
  251. package/dist/core/emit/functions.js +171 -0
  252. package/dist/core/emit/functions.js.map +1 -0
  253. package/dist/core/emit/gaps.d.ts +34 -0
  254. package/dist/core/emit/gaps.d.ts.map +1 -0
  255. package/dist/core/emit/gaps.js +16 -0
  256. package/dist/core/emit/gaps.js.map +1 -0
  257. package/dist/core/emit/index.d.ts +29 -0
  258. package/dist/core/emit/index.d.ts.map +1 -0
  259. package/dist/core/emit/index.js +23 -0
  260. package/dist/core/emit/index.js.map +1 -0
  261. package/dist/core/emit/inputs.d.ts +47 -0
  262. package/dist/core/emit/inputs.d.ts.map +1 -0
  263. package/dist/core/emit/inputs.js +150 -0
  264. package/dist/core/emit/inputs.js.map +1 -0
  265. package/dist/core/emit/layout.d.ts +73 -0
  266. package/dist/core/emit/layout.d.ts.map +1 -0
  267. package/dist/core/emit/layout.js +126 -0
  268. package/dist/core/emit/layout.js.map +1 -0
  269. package/dist/core/emit/meta.d.ts +14 -0
  270. package/dist/core/emit/meta.d.ts.map +1 -0
  271. package/dist/core/emit/meta.js +68 -0
  272. package/dist/core/emit/meta.js.map +1 -0
  273. package/dist/core/emit/opcodes.d.ts +28 -0
  274. package/dist/core/emit/opcodes.d.ts.map +1 -0
  275. package/dist/core/emit/opcodes.js +137 -0
  276. package/dist/core/emit/opcodes.js.map +1 -0
  277. package/dist/core/emit/outputs.d.ts +67 -0
  278. package/dist/core/emit/outputs.d.ts.map +1 -0
  279. package/dist/core/emit/outputs.js +293 -0
  280. package/dist/core/emit/outputs.js.map +1 -0
  281. package/dist/core/emit/pool.d.ts +33 -0
  282. package/dist/core/emit/pool.d.ts.map +1 -0
  283. package/dist/core/emit/pool.js +79 -0
  284. package/dist/core/emit/pool.js.map +1 -0
  285. package/dist/core/emit/program.d.ts +333 -0
  286. package/dist/core/emit/program.d.ts.map +1 -0
  287. package/dist/core/emit/program.js +15 -0
  288. package/dist/core/emit/program.js.map +1 -0
  289. package/dist/core/emit/registers.d.ts +35 -0
  290. package/dist/core/emit/registers.d.ts.map +1 -0
  291. package/dist/core/emit/registers.js +170 -0
  292. package/dist/core/emit/registers.js.map +1 -0
  293. package/dist/core/emit/request-scope.d.ts +36 -0
  294. package/dist/core/emit/request-scope.d.ts.map +1 -0
  295. package/dist/core/emit/request-scope.js +41 -0
  296. package/dist/core/emit/request-scope.js.map +1 -0
  297. package/dist/core/emit/requests.d.ts +69 -0
  298. package/dist/core/emit/requests.d.ts.map +1 -0
  299. package/dist/core/emit/requests.js +230 -0
  300. package/dist/core/emit/requests.js.map +1 -0
  301. package/dist/core/emit/requires.d.ts +4 -0
  302. package/dist/core/emit/requires.d.ts.map +1 -0
  303. package/dist/core/emit/requires.js +71 -0
  304. package/dist/core/emit/requires.js.map +1 -0
  305. package/dist/core/emit/sha256.d.ts +24 -0
  306. package/dist/core/emit/sha256.d.ts.map +1 -0
  307. package/dist/core/emit/sha256.js +109 -0
  308. package/dist/core/emit/sha256.js.map +1 -0
  309. package/dist/core/emit/statements.d.ts +20 -0
  310. package/dist/core/emit/statements.d.ts.map +1 -0
  311. package/dist/core/emit/statements.js +393 -0
  312. package/dist/core/emit/statements.js.map +1 -0
  313. package/dist/core/emit/values.d.ts +80 -0
  314. package/dist/core/emit/values.d.ts.map +1 -0
  315. package/dist/core/emit/values.js +242 -0
  316. package/dist/core/emit/values.js.map +1 -0
  317. package/dist/core/engine/alerts.d.ts +66 -0
  318. package/dist/core/engine/alerts.d.ts.map +1 -0
  319. package/dist/core/engine/alerts.js +119 -0
  320. package/dist/core/engine/alerts.js.map +1 -0
  321. package/dist/core/engine/arithmetic.d.ts +82 -0
  322. package/dist/core/engine/arithmetic.d.ts.map +1 -0
  323. package/dist/core/engine/arithmetic.js +141 -0
  324. package/dist/core/engine/arithmetic.js.map +1 -0
  325. package/dist/core/engine/bars.d.ts +95 -0
  326. package/dist/core/engine/bars.d.ts.map +1 -0
  327. package/dist/core/engine/bars.js +133 -0
  328. package/dist/core/engine/bars.js.map +1 -0
  329. package/dist/core/engine/budget.d.ts +162 -0
  330. package/dist/core/engine/budget.d.ts.map +1 -0
  331. package/dist/core/engine/budget.js +188 -0
  332. package/dist/core/engine/budget.js.map +1 -0
  333. package/dist/core/engine/channels.d.ts +106 -0
  334. package/dist/core/engine/channels.d.ts.map +1 -0
  335. package/dist/core/engine/channels.js +99 -0
  336. package/dist/core/engine/channels.js.map +1 -0
  337. package/dist/core/engine/drawings.d.ts +64 -0
  338. package/dist/core/engine/drawings.d.ts.map +1 -0
  339. package/dist/core/engine/drawings.js +67 -0
  340. package/dist/core/engine/drawings.js.map +1 -0
  341. package/dist/core/engine/engine.d.ts +140 -0
  342. package/dist/core/engine/engine.d.ts.map +1 -0
  343. package/dist/core/engine/engine.js +405 -0
  344. package/dist/core/engine/engine.js.map +1 -0
  345. package/dist/core/engine/errors.d.ts +64 -0
  346. package/dist/core/engine/errors.d.ts.map +1 -0
  347. package/dist/core/engine/errors.js +63 -0
  348. package/dist/core/engine/errors.js.map +1 -0
  349. package/dist/core/engine/frames.d.ts +48 -0
  350. package/dist/core/engine/frames.d.ts.map +1 -0
  351. package/dist/core/engine/frames.js +41 -0
  352. package/dist/core/engine/frames.js.map +1 -0
  353. package/dist/core/engine/grids.d.ts +25 -0
  354. package/dist/core/engine/grids.d.ts.map +1 -0
  355. package/dist/core/engine/grids.js +77 -0
  356. package/dist/core/engine/grids.js.map +1 -0
  357. package/dist/core/engine/guard.d.ts +4 -0
  358. package/dist/core/engine/guard.d.ts.map +1 -0
  359. package/dist/core/engine/guard.js +46 -0
  360. package/dist/core/engine/guard.js.map +1 -0
  361. package/dist/core/engine/host.d.ts +219 -0
  362. package/dist/core/engine/host.d.ts.map +1 -0
  363. package/dist/core/engine/host.js +38 -0
  364. package/dist/core/engine/host.js.map +1 -0
  365. package/dist/core/engine/index.d.ts +49 -0
  366. package/dist/core/engine/index.d.ts.map +1 -0
  367. package/dist/core/engine/index.js +33 -0
  368. package/dist/core/engine/index.js.map +1 -0
  369. package/dist/core/engine/inputs.d.ts +77 -0
  370. package/dist/core/engine/inputs.d.ts.map +1 -0
  371. package/dist/core/engine/inputs.js +205 -0
  372. package/dist/core/engine/inputs.js.map +1 -0
  373. package/dist/core/engine/ledger/call.d.ts +63 -0
  374. package/dist/core/engine/ledger/call.d.ts.map +1 -0
  375. package/dist/core/engine/ledger/call.js +136 -0
  376. package/dist/core/engine/ledger/call.js.map +1 -0
  377. package/dist/core/engine/ledger/closable.d.ts +155 -0
  378. package/dist/core/engine/ledger/closable.d.ts.map +1 -0
  379. package/dist/core/engine/ledger/closable.js +173 -0
  380. package/dist/core/engine/ledger/closable.js.map +1 -0
  381. package/dist/core/engine/ledger/holdings.d.ts +194 -0
  382. package/dist/core/engine/ledger/holdings.d.ts.map +1 -0
  383. package/dist/core/engine/ledger/holdings.js +237 -0
  384. package/dist/core/engine/ledger/holdings.js.map +1 -0
  385. package/dist/core/engine/ledger/index.d.ts +19 -0
  386. package/dist/core/engine/ledger/index.d.ts.map +1 -0
  387. package/dist/core/engine/ledger/index.js +2 -0
  388. package/dist/core/engine/ledger/index.js.map +1 -0
  389. package/dist/core/engine/ledger/intent.d.ts +106 -0
  390. package/dist/core/engine/ledger/intent.d.ts.map +1 -0
  391. package/dist/core/engine/ledger/intent.js +21 -0
  392. package/dist/core/engine/ledger/intent.js.map +1 -0
  393. package/dist/core/engine/ledger/ledger.d.ts +143 -0
  394. package/dist/core/engine/ledger/ledger.d.ts.map +1 -0
  395. package/dist/core/engine/ledger/ledger.js +237 -0
  396. package/dist/core/engine/ledger/ledger.js.map +1 -0
  397. package/dist/core/engine/ledger/place.d.ts +75 -0
  398. package/dist/core/engine/ledger/place.d.ts.map +1 -0
  399. package/dist/core/engine/ledger/place.js +174 -0
  400. package/dist/core/engine/ledger/place.js.map +1 -0
  401. package/dist/core/engine/ledger/positions.d.ts +68 -0
  402. package/dist/core/engine/ledger/positions.d.ts.map +1 -0
  403. package/dist/core/engine/ledger/positions.js +114 -0
  404. package/dist/core/engine/ledger/positions.js.map +1 -0
  405. package/dist/core/engine/ledger/refuse.d.ts +43 -0
  406. package/dist/core/engine/ledger/refuse.d.ts.map +1 -0
  407. package/dist/core/engine/ledger/refuse.js +329 -0
  408. package/dist/core/engine/ledger/refuse.js.map +1 -0
  409. package/dist/core/engine/ledger/row.d.ts +176 -0
  410. package/dist/core/engine/ledger/row.d.ts.map +1 -0
  411. package/dist/core/engine/ledger/row.js +169 -0
  412. package/dist/core/engine/ledger/row.js.map +1 -0
  413. package/dist/core/engine/ledger/sizing.d.ts +142 -0
  414. package/dist/core/engine/ledger/sizing.d.ts.map +1 -0
  415. package/dist/core/engine/ledger/sizing.js +223 -0
  416. package/dist/core/engine/ledger/sizing.js.map +1 -0
  417. package/dist/core/engine/library/arrays.d.ts +14 -0
  418. package/dist/core/engine/library/arrays.d.ts.map +1 -0
  419. package/dist/core/engine/library/arrays.js +285 -0
  420. package/dist/core/engine/library/arrays.js.map +1 -0
  421. package/dist/core/engine/library/averages.d.ts +9 -0
  422. package/dist/core/engine/library/averages.d.ts.map +1 -0
  423. package/dist/core/engine/library/averages.js +41 -0
  424. package/dist/core/engine/library/averages.js.map +1 -0
  425. package/dist/core/engine/library/binding.d.ts +230 -0
  426. package/dist/core/engine/library/binding.d.ts.map +1 -0
  427. package/dist/core/engine/library/binding.js +109 -0
  428. package/dist/core/engine/library/binding.js.map +1 -0
  429. package/dist/core/engine/library/chart.d.ts +3 -0
  430. package/dist/core/engine/library/chart.d.ts.map +1 -0
  431. package/dist/core/engine/library/chart.js +83 -0
  432. package/dist/core/engine/library/chart.js.map +1 -0
  433. package/dist/core/engine/library/colours.d.ts +26 -0
  434. package/dist/core/engine/library/colours.d.ts.map +1 -0
  435. package/dist/core/engine/library/colours.js +81 -0
  436. package/dist/core/engine/library/colours.js.map +1 -0
  437. package/dist/core/engine/library/dates.d.ts +3 -0
  438. package/dist/core/engine/library/dates.d.ts.map +1 -0
  439. package/dist/core/engine/library/dates.js +75 -0
  440. package/dist/core/engine/library/dates.js.map +1 -0
  441. package/dist/core/engine/library/index.d.ts +13 -0
  442. package/dist/core/engine/library/index.d.ts.map +1 -0
  443. package/dist/core/engine/library/index.js +86 -0
  444. package/dist/core/engine/library/index.js.map +1 -0
  445. package/dist/core/engine/library/maths.d.ts +3 -0
  446. package/dist/core/engine/library/maths.d.ts.map +1 -0
  447. package/dist/core/engine/library/maths.js +89 -0
  448. package/dist/core/engine/library/maths.js.map +1 -0
  449. package/dist/core/engine/library/objects.d.ts +3 -0
  450. package/dist/core/engine/library/objects.d.ts.map +1 -0
  451. package/dist/core/engine/library/objects.js +199 -0
  452. package/dist/core/engine/library/objects.js.map +1 -0
  453. package/dist/core/engine/library/oscillators.d.ts +3 -0
  454. package/dist/core/engine/library/oscillators.d.ts.map +1 -0
  455. package/dist/core/engine/library/oscillators.js +29 -0
  456. package/dist/core/engine/library/oscillators.js.map +1 -0
  457. package/dist/core/engine/library/ranges.d.ts +3 -0
  458. package/dist/core/engine/library/ranges.d.ts.map +1 -0
  459. package/dist/core/engine/library/ranges.js +23 -0
  460. package/dist/core/engine/library/ranges.js.map +1 -0
  461. package/dist/core/engine/library/series.d.ts +3 -0
  462. package/dist/core/engine/library/series.d.ts.map +1 -0
  463. package/dist/core/engine/library/series.js +46 -0
  464. package/dist/core/engine/library/series.js.map +1 -0
  465. package/dist/core/engine/library/state.d.ts +35 -0
  466. package/dist/core/engine/library/state.d.ts.map +1 -0
  467. package/dist/core/engine/library/state.js +19 -0
  468. package/dist/core/engine/library/state.js.map +1 -0
  469. package/dist/core/engine/library/studies.d.ts +3 -0
  470. package/dist/core/engine/library/studies.d.ts.map +1 -0
  471. package/dist/core/engine/library/studies.js +35 -0
  472. package/dist/core/engine/library/studies.js.map +1 -0
  473. package/dist/core/engine/library/text.d.ts +6 -0
  474. package/dist/core/engine/library/text.d.ts.map +1 -0
  475. package/dist/core/engine/library/text.js +280 -0
  476. package/dist/core/engine/library/text.js.map +1 -0
  477. package/dist/core/engine/library/trend.d.ts +3 -0
  478. package/dist/core/engine/library/trend.d.ts.map +1 -0
  479. package/dist/core/engine/library/trend.js +29 -0
  480. package/dist/core/engine/library/trend.js.map +1 -0
  481. package/dist/core/engine/library/volume.d.ts +3 -0
  482. package/dist/core/engine/library/volume.d.ts.map +1 -0
  483. package/dist/core/engine/library/volume.js +51 -0
  484. package/dist/core/engine/library/volume.js.map +1 -0
  485. package/dist/core/engine/load.d.ts +45 -0
  486. package/dist/core/engine/load.d.ts.map +1 -0
  487. package/dist/core/engine/load.js +60 -0
  488. package/dist/core/engine/load.js.map +1 -0
  489. package/dist/core/engine/machine.d.ts +107 -0
  490. package/dist/core/engine/machine.d.ts.map +1 -0
  491. package/dist/core/engine/machine.js +337 -0
  492. package/dist/core/engine/machine.js.map +1 -0
  493. package/dist/core/engine/memory.d.ts +60 -0
  494. package/dist/core/engine/memory.d.ts.map +1 -0
  495. package/dist/core/engine/memory.js +92 -0
  496. package/dist/core/engine/memory.js.map +1 -0
  497. package/dist/core/engine/operations.d.ts +62 -0
  498. package/dist/core/engine/operations.d.ts.map +1 -0
  499. package/dist/core/engine/operations.js +149 -0
  500. package/dist/core/engine/operations.js.map +1 -0
  501. package/dist/core/engine/orders.d.ts +56 -0
  502. package/dist/core/engine/orders.d.ts.map +1 -0
  503. package/dist/core/engine/orders.js +83 -0
  504. package/dist/core/engine/orders.js.map +1 -0
  505. package/dist/core/engine/registers.d.ts +50 -0
  506. package/dist/core/engine/registers.d.ts.map +1 -0
  507. package/dist/core/engine/registers.js +85 -0
  508. package/dist/core/engine/registers.js.map +1 -0
  509. package/dist/core/engine/request-body.d.ts +138 -0
  510. package/dist/core/engine/request-body.d.ts.map +1 -0
  511. package/dist/core/engine/request-body.js +227 -0
  512. package/dist/core/engine/request-body.js.map +1 -0
  513. package/dist/core/engine/request-plan.d.ts +79 -0
  514. package/dist/core/engine/request-plan.d.ts.map +1 -0
  515. package/dist/core/engine/request-plan.js +228 -0
  516. package/dist/core/engine/request-plan.js.map +1 -0
  517. package/dist/core/engine/requests.d.ts +105 -0
  518. package/dist/core/engine/requests.d.ts.map +1 -0
  519. package/dist/core/engine/requests.js +260 -0
  520. package/dist/core/engine/requests.js.map +1 -0
  521. package/dist/core/engine/results.d.ts +40 -0
  522. package/dist/core/engine/results.d.ts.map +1 -0
  523. package/dist/core/engine/results.js +2 -0
  524. package/dist/core/engine/results.js.map +1 -0
  525. package/dist/core/engine/series.d.ts +61 -0
  526. package/dist/core/engine/series.d.ts.map +1 -0
  527. package/dist/core/engine/series.js +41 -0
  528. package/dist/core/engine/series.js.map +1 -0
  529. package/dist/core/engine/session/hours.d.ts +49 -0
  530. package/dist/core/engine/session/hours.d.ts.map +1 -0
  531. package/dist/core/engine/session/hours.js +31 -0
  532. package/dist/core/engine/session/hours.js.map +1 -0
  533. package/dist/core/engine/session/index.d.ts +17 -0
  534. package/dist/core/engine/session/index.d.ts.map +1 -0
  535. package/dist/core/engine/session/index.js +3 -0
  536. package/dist/core/engine/session/index.js.map +1 -0
  537. package/dist/core/engine/session/record.d.ts +56 -0
  538. package/dist/core/engine/session/record.d.ts.map +1 -0
  539. package/dist/core/engine/session/record.js +165 -0
  540. package/dist/core/engine/session/record.js.map +1 -0
  541. package/dist/core/engine/session/spec.d.ts +19 -0
  542. package/dist/core/engine/session/spec.d.ts.map +1 -0
  543. package/dist/core/engine/session/spec.js +31 -0
  544. package/dist/core/engine/session/spec.js.map +1 -0
  545. package/dist/core/engine/timeframe.d.ts +59 -0
  546. package/dist/core/engine/timeframe.d.ts.map +1 -0
  547. package/dist/core/engine/timeframe.js +140 -0
  548. package/dist/core/engine/timeframe.js.map +1 -0
  549. package/dist/core/engine/types.d.ts +15 -0
  550. package/dist/core/engine/types.d.ts.map +1 -0
  551. package/dist/core/engine/types.js +2 -0
  552. package/dist/core/engine/types.js.map +1 -0
  553. package/dist/core/engine/values/heap.d.ts +134 -0
  554. package/dist/core/engine/values/heap.d.ts.map +1 -0
  555. package/dist/core/engine/values/heap.js +230 -0
  556. package/dist/core/engine/values/heap.js.map +1 -0
  557. package/dist/core/engine/values/index.d.ts +13 -0
  558. package/dist/core/engine/values/index.d.ts.map +1 -0
  559. package/dist/core/engine/values/index.js +3 -0
  560. package/dist/core/engine/values/index.js.map +1 -0
  561. package/dist/core/engine/values/value.d.ts +82 -0
  562. package/dist/core/engine/values/value.d.ts.map +1 -0
  563. package/dist/core/engine/values/value.js +134 -0
  564. package/dist/core/engine/values/value.js.map +1 -0
  565. package/dist/core/engine/verify-budgets.d.ts +35 -0
  566. package/dist/core/engine/verify-budgets.d.ts.map +1 -0
  567. package/dist/core/engine/verify-budgets.js +172 -0
  568. package/dist/core/engine/verify-budgets.js.map +1 -0
  569. package/dist/core/engine/verify-code.d.ts +32 -0
  570. package/dist/core/engine/verify-code.d.ts.map +1 -0
  571. package/dist/core/engine/verify-code.js +278 -0
  572. package/dist/core/engine/verify-code.js.map +1 -0
  573. package/dist/core/engine/verify-requests.d.ts +44 -0
  574. package/dist/core/engine/verify-requests.d.ts.map +1 -0
  575. package/dist/core/engine/verify-requests.js +220 -0
  576. package/dist/core/engine/verify-requests.js.map +1 -0
  577. package/dist/core/engine/verify-shape.d.ts +46 -0
  578. package/dist/core/engine/verify-shape.d.ts.map +1 -0
  579. package/dist/core/engine/verify-shape.js +147 -0
  580. package/dist/core/engine/verify-shape.js.map +1 -0
  581. package/dist/core/engine/verify-tables.d.ts +19 -0
  582. package/dist/core/engine/verify-tables.d.ts.map +1 -0
  583. package/dist/core/engine/verify-tables.js +171 -0
  584. package/dist/core/engine/verify-tables.js.map +1 -0
  585. package/dist/core/engine/verify.d.ts +19 -0
  586. package/dist/core/engine/verify.d.ts.map +1 -0
  587. package/dist/core/engine/verify.js +309 -0
  588. package/dist/core/engine/verify.js.map +1 -0
  589. package/dist/core/index.d.ts +62 -6
  590. package/dist/core/index.d.ts.map +1 -1
  591. package/dist/core/index.js +49 -6
  592. package/dist/core/index.js.map +1 -1
  593. package/dist/core/parse/expressions.js +1 -1
  594. package/dist/core/parse/expressions.js.map +1 -1
  595. package/dist/core/parse/names.d.ts +7 -1
  596. package/dist/core/parse/names.d.ts.map +1 -1
  597. package/dist/core/parse/names.js +28 -2
  598. package/dist/core/parse/names.js.map +1 -1
  599. package/dist/core/stdlib/averages/exponential.d.ts +51 -0
  600. package/dist/core/stdlib/averages/exponential.d.ts.map +1 -0
  601. package/dist/core/stdlib/averages/exponential.js +72 -0
  602. package/dist/core/stdlib/averages/exponential.js.map +1 -0
  603. package/dist/core/stdlib/averages/index.d.ts +7 -0
  604. package/dist/core/stdlib/averages/index.d.ts.map +1 -0
  605. package/dist/core/stdlib/averages/index.js +5 -0
  606. package/dist/core/stdlib/averages/index.js.map +1 -0
  607. package/dist/core/stdlib/averages/select.d.ts +35 -0
  608. package/dist/core/stdlib/averages/select.d.ts.map +1 -0
  609. package/dist/core/stdlib/averages/select.js +43 -0
  610. package/dist/core/stdlib/averages/select.js.map +1 -0
  611. package/dist/core/stdlib/averages/shaped.d.ts +61 -0
  612. package/dist/core/stdlib/averages/shaped.d.ts.map +1 -0
  613. package/dist/core/stdlib/averages/shaped.js +126 -0
  614. package/dist/core/stdlib/averages/shaped.js.map +1 -0
  615. package/dist/core/stdlib/averages/simple.d.ts +58 -0
  616. package/dist/core/stdlib/averages/simple.d.ts.map +1 -0
  617. package/dist/core/stdlib/averages/simple.js +92 -0
  618. package/dist/core/stdlib/averages/simple.js.map +1 -0
  619. package/dist/core/stdlib/calendar/civil.d.ts +56 -0
  620. package/dist/core/stdlib/calendar/civil.d.ts.map +1 -0
  621. package/dist/core/stdlib/calendar/civil.js +70 -0
  622. package/dist/core/stdlib/calendar/civil.js.map +1 -0
  623. package/dist/core/stdlib/calendar/fields.d.ts +36 -0
  624. package/dist/core/stdlib/calendar/fields.d.ts.map +1 -0
  625. package/dist/core/stdlib/calendar/fields.js +93 -0
  626. package/dist/core/stdlib/calendar/fields.js.map +1 -0
  627. package/dist/core/stdlib/calendar/format.d.ts +19 -0
  628. package/dist/core/stdlib/calendar/format.d.ts.map +1 -0
  629. package/dist/core/stdlib/calendar/format.js +51 -0
  630. package/dist/core/stdlib/calendar/format.js.map +1 -0
  631. package/dist/core/stdlib/calendar/index.d.ts +7 -0
  632. package/dist/core/stdlib/calendar/index.d.ts.map +1 -0
  633. package/dist/core/stdlib/calendar/index.js +5 -0
  634. package/dist/core/stdlib/calendar/index.js.map +1 -0
  635. package/dist/core/stdlib/calendar/zone.d.ts +53 -0
  636. package/dist/core/stdlib/calendar/zone.d.ts.map +1 -0
  637. package/dist/core/stdlib/calendar/zone.js +138 -0
  638. package/dist/core/stdlib/calendar/zone.js.map +1 -0
  639. package/dist/core/stdlib/index.d.ts +57 -0
  640. package/dist/core/stdlib/index.d.ts.map +1 -0
  641. package/dist/core/stdlib/index.js +51 -0
  642. package/dist/core/stdlib/index.js.map +1 -0
  643. package/dist/core/stdlib/maths/arithmetic.d.ts +38 -0
  644. package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -0
  645. package/dist/core/stdlib/maths/arithmetic.js +66 -0
  646. package/dist/core/stdlib/maths/arithmetic.js.map +1 -0
  647. package/dist/core/stdlib/maths/elementary.d.ts +65 -0
  648. package/dist/core/stdlib/maths/elementary.d.ts.map +1 -0
  649. package/dist/core/stdlib/maths/elementary.js +93 -0
  650. package/dist/core/stdlib/maths/elementary.js.map +1 -0
  651. package/dist/core/stdlib/maths/index.d.ts +4 -0
  652. package/dist/core/stdlib/maths/index.d.ts.map +1 -0
  653. package/dist/core/stdlib/maths/index.js +4 -0
  654. package/dist/core/stdlib/maths/index.js.map +1 -0
  655. package/dist/core/stdlib/maths/rounding.d.ts +43 -0
  656. package/dist/core/stdlib/maths/rounding.d.ts.map +1 -0
  657. package/dist/core/stdlib/maths/rounding.js +62 -0
  658. package/dist/core/stdlib/maths/rounding.js.map +1 -0
  659. package/dist/core/stdlib/momentum/convergence.d.ts +36 -0
  660. package/dist/core/stdlib/momentum/convergence.d.ts.map +1 -0
  661. package/dist/core/stdlib/momentum/convergence.js +48 -0
  662. package/dist/core/stdlib/momentum/convergence.js.map +1 -0
  663. package/dist/core/stdlib/momentum/index.d.ts +6 -0
  664. package/dist/core/stdlib/momentum/index.d.ts.map +1 -0
  665. package/dist/core/stdlib/momentum/index.js +6 -0
  666. package/dist/core/stdlib/momentum/index.js.map +1 -0
  667. package/dist/core/stdlib/momentum/pressure.d.ts +43 -0
  668. package/dist/core/stdlib/momentum/pressure.d.ts.map +1 -0
  669. package/dist/core/stdlib/momentum/pressure.js +103 -0
  670. package/dist/core/stdlib/momentum/pressure.js.map +1 -0
  671. package/dist/core/stdlib/momentum/rates.d.ts +74 -0
  672. package/dist/core/stdlib/momentum/rates.d.ts.map +1 -0
  673. package/dist/core/stdlib/momentum/rates.js +134 -0
  674. package/dist/core/stdlib/momentum/rates.js.map +1 -0
  675. package/dist/core/stdlib/momentum/rsi.d.ts +21 -0
  676. package/dist/core/stdlib/momentum/rsi.d.ts.map +1 -0
  677. package/dist/core/stdlib/momentum/rsi.js +30 -0
  678. package/dist/core/stdlib/momentum/rsi.js.map +1 -0
  679. package/dist/core/stdlib/momentum/stochastic.d.ts +44 -0
  680. package/dist/core/stdlib/momentum/stochastic.d.ts.map +1 -0
  681. package/dist/core/stdlib/momentum/stochastic.js +97 -0
  682. package/dist/core/stdlib/momentum/stochastic.js.map +1 -0
  683. package/dist/core/stdlib/series/changes.d.ts +59 -0
  684. package/dist/core/stdlib/series/changes.d.ts.map +1 -0
  685. package/dist/core/stdlib/series/changes.js +129 -0
  686. package/dist/core/stdlib/series/changes.js.map +1 -0
  687. package/dist/core/stdlib/series/conditions.d.ts +34 -0
  688. package/dist/core/stdlib/series/conditions.d.ts.map +1 -0
  689. package/dist/core/stdlib/series/conditions.js +52 -0
  690. package/dist/core/stdlib/series/conditions.js.map +1 -0
  691. package/dist/core/stdlib/series/extremes.d.ts +29 -0
  692. package/dist/core/stdlib/series/extremes.d.ts.map +1 -0
  693. package/dist/core/stdlib/series/extremes.js +62 -0
  694. package/dist/core/stdlib/series/extremes.js.map +1 -0
  695. package/dist/core/stdlib/series/index.d.ts +9 -0
  696. package/dist/core/stdlib/series/index.d.ts.map +1 -0
  697. package/dist/core/stdlib/series/index.js +7 -0
  698. package/dist/core/stdlib/series/index.js.map +1 -0
  699. package/dist/core/stdlib/series/pivots.d.ts +25 -0
  700. package/dist/core/stdlib/series/pivots.d.ts.map +1 -0
  701. package/dist/core/stdlib/series/pivots.js +42 -0
  702. package/dist/core/stdlib/series/pivots.js.map +1 -0
  703. package/dist/core/stdlib/series/statistics.d.ts +64 -0
  704. package/dist/core/stdlib/series/statistics.d.ts.map +1 -0
  705. package/dist/core/stdlib/series/statistics.js +148 -0
  706. package/dist/core/stdlib/series/statistics.js.map +1 -0
  707. package/dist/core/stdlib/series/totals.d.ts +68 -0
  708. package/dist/core/stdlib/series/totals.d.ts.map +1 -0
  709. package/dist/core/stdlib/series/totals.js +115 -0
  710. package/dist/core/stdlib/series/totals.js.map +1 -0
  711. package/dist/core/stdlib/trend/directional.d.ts +69 -0
  712. package/dist/core/stdlib/trend/directional.d.ts.map +1 -0
  713. package/dist/core/stdlib/trend/directional.js +151 -0
  714. package/dist/core/stdlib/trend/directional.js.map +1 -0
  715. package/dist/core/stdlib/trend/index.d.ts +4 -0
  716. package/dist/core/stdlib/trend/index.d.ts.map +1 -0
  717. package/dist/core/stdlib/trend/index.js +4 -0
  718. package/dist/core/stdlib/trend/index.js.map +1 -0
  719. package/dist/core/stdlib/trend/psar.d.ts +33 -0
  720. package/dist/core/stdlib/trend/psar.d.ts.map +1 -0
  721. package/dist/core/stdlib/trend/psar.js +86 -0
  722. package/dist/core/stdlib/trend/psar.js.map +1 -0
  723. package/dist/core/stdlib/trend/supertrend.d.ts +30 -0
  724. package/dist/core/stdlib/trend/supertrend.d.ts.map +1 -0
  725. package/dist/core/stdlib/trend/supertrend.js +65 -0
  726. package/dist/core/stdlib/trend/supertrend.js.map +1 -0
  727. package/dist/core/stdlib/values/bar.d.ts +39 -0
  728. package/dist/core/stdlib/values/bar.d.ts.map +1 -0
  729. package/dist/core/stdlib/values/bar.js +33 -0
  730. package/dist/core/stdlib/values/bar.js.map +1 -0
  731. package/dist/core/stdlib/values/index.d.ts +11 -0
  732. package/dist/core/stdlib/values/index.d.ts.map +1 -0
  733. package/dist/core/stdlib/values/index.js +6 -0
  734. package/dist/core/stdlib/values/index.js.map +1 -0
  735. package/dist/core/stdlib/values/lookback.d.ts +83 -0
  736. package/dist/core/stdlib/values/lookback.d.ts.map +1 -0
  737. package/dist/core/stdlib/values/lookback.js +134 -0
  738. package/dist/core/stdlib/values/lookback.js.map +1 -0
  739. package/dist/core/stdlib/values/region.d.ts +55 -0
  740. package/dist/core/stdlib/values/region.d.ts.map +1 -0
  741. package/dist/core/stdlib/values/region.js +73 -0
  742. package/dist/core/stdlib/values/region.js.map +1 -0
  743. package/dist/core/stdlib/values/tail.d.ts +44 -0
  744. package/dist/core/stdlib/values/tail.d.ts.map +1 -0
  745. package/dist/core/stdlib/values/tail.js +23 -0
  746. package/dist/core/stdlib/values/tail.js.map +1 -0
  747. package/dist/core/stdlib/values/value.d.ts +64 -0
  748. package/dist/core/stdlib/values/value.d.ts.map +1 -0
  749. package/dist/core/stdlib/values/value.js +61 -0
  750. package/dist/core/stdlib/values/value.js.map +1 -0
  751. package/dist/core/stdlib/volatility/bands.d.ts +50 -0
  752. package/dist/core/stdlib/volatility/bands.d.ts.map +1 -0
  753. package/dist/core/stdlib/volatility/bands.js +101 -0
  754. package/dist/core/stdlib/volatility/bands.js.map +1 -0
  755. package/dist/core/stdlib/volatility/deviation.d.ts +43 -0
  756. package/dist/core/stdlib/volatility/deviation.d.ts.map +1 -0
  757. package/dist/core/stdlib/volatility/deviation.js +75 -0
  758. package/dist/core/stdlib/volatility/deviation.js.map +1 -0
  759. package/dist/core/stdlib/volatility/index.d.ts +6 -0
  760. package/dist/core/stdlib/volatility/index.d.ts.map +1 -0
  761. package/dist/core/stdlib/volatility/index.js +5 -0
  762. package/dist/core/stdlib/volatility/index.js.map +1 -0
  763. package/dist/core/stdlib/volatility/measures.d.ts +48 -0
  764. package/dist/core/stdlib/volatility/measures.d.ts.map +1 -0
  765. package/dist/core/stdlib/volatility/measures.js +73 -0
  766. package/dist/core/stdlib/volatility/measures.js.map +1 -0
  767. package/dist/core/stdlib/volatility/range.d.ts +69 -0
  768. package/dist/core/stdlib/volatility/range.d.ts.map +1 -0
  769. package/dist/core/stdlib/volatility/range.js +86 -0
  770. package/dist/core/stdlib/volatility/range.js.map +1 -0
  771. package/dist/core/stdlib/volume/accumulation.d.ts +61 -0
  772. package/dist/core/stdlib/volume/accumulation.d.ts.map +1 -0
  773. package/dist/core/stdlib/volume/accumulation.js +127 -0
  774. package/dist/core/stdlib/volume/accumulation.js.map +1 -0
  775. package/dist/core/stdlib/volume/flow.d.ts +60 -0
  776. package/dist/core/stdlib/volume/flow.d.ts.map +1 -0
  777. package/dist/core/stdlib/volume/flow.js +125 -0
  778. package/dist/core/stdlib/volume/flow.js.map +1 -0
  779. package/dist/core/stdlib/volume/index.d.ts +5 -0
  780. package/dist/core/stdlib/volume/index.d.ts.map +1 -0
  781. package/dist/core/stdlib/volume/index.js +4 -0
  782. package/dist/core/stdlib/volume/index.js.map +1 -0
  783. package/dist/core/stdlib/volume/weighted.d.ts +52 -0
  784. package/dist/core/stdlib/volume/weighted.d.ts.map +1 -0
  785. package/dist/core/stdlib/volume/weighted.js +64 -0
  786. package/dist/core/stdlib/volume/weighted.js.map +1 -0
  787. package/dist/core/version/index.d.ts +2 -0
  788. package/dist/core/version/index.d.ts.map +1 -0
  789. package/dist/core/version/index.js +2 -0
  790. package/dist/core/version/index.js.map +1 -0
  791. package/dist/core/version/version.generated.d.ts +10 -0
  792. package/dist/core/version/version.generated.d.ts.map +1 -0
  793. package/dist/core/version/version.generated.js +14 -0
  794. package/dist/core/version/version.generated.js.map +1 -0
  795. package/package.json +88 -52
  796. package/spec/errors.json +3403 -3204
  797. package/src/adapters/charts/alerts.ts +116 -0
  798. package/src/adapters/charts/bars.ts +63 -0
  799. package/src/adapters/charts/candles.ts +137 -0
  800. package/src/adapters/charts/colours.ts +113 -0
  801. package/src/adapters/charts/columns.ts +99 -0
  802. package/src/adapters/charts/contract.ts +320 -0
  803. package/src/adapters/charts/descriptor.ts +199 -0
  804. package/src/adapters/charts/drawings.ts +213 -0
  805. package/src/adapters/charts/errors.ts +45 -0
  806. package/src/adapters/charts/fields.ts +74 -0
  807. package/src/adapters/charts/fills.ts +71 -0
  808. package/src/adapters/charts/index.ts +78 -0
  809. package/src/adapters/charts/levels.ts +92 -0
  810. package/src/adapters/charts/markers.ts +119 -0
  811. package/src/adapters/charts/paint.ts +101 -0
  812. package/src/adapters/charts/plots.ts +185 -0
  813. package/src/adapters/charts/produced.ts +68 -0
  814. package/src/adapters/charts/requests.ts +357 -0
  815. package/src/adapters/charts/run.ts +327 -0
  816. package/src/adapters/charts/settings.ts +273 -0
  817. package/src/adapters/charts/surfaces.ts +238 -0
  818. package/src/adapters/charts/tables.ts +155 -0
  819. package/src/core/catalogue/catalogue.generated.ts +17 -9
  820. package/src/core/catalogue/values.generated.ts +8 -0
  821. package/src/core/check/arguments.ts +126 -0
  822. package/src/core/check/call-sites.ts +385 -0
  823. package/src/core/check/call-warmup.ts +121 -0
  824. package/src/core/check/calls.ts +412 -0
  825. package/src/core/check/check.ts +183 -0
  826. package/src/core/check/checked.ts +228 -0
  827. package/src/core/check/checker.ts +393 -0
  828. package/src/core/check/conditional.ts +143 -0
  829. package/src/core/check/constant.ts +127 -0
  830. package/src/core/check/declaration.ts +230 -0
  831. package/src/core/check/expressions.ts +471 -0
  832. package/src/core/check/functions.ts +283 -0
  833. package/src/core/check/handles.ts +75 -0
  834. package/src/core/check/index.ts +67 -0
  835. package/src/core/check/library-bars.ts +194 -0
  836. package/src/core/check/library-orders.ts +290 -0
  837. package/src/core/check/library-output.ts +241 -0
  838. package/src/core/check/library-series.ts +457 -0
  839. package/src/core/check/library.ts +374 -0
  840. package/src/core/check/literals.ts +35 -0
  841. package/src/core/check/outputs.ts +152 -0
  842. package/src/core/check/statements.ts +465 -0
  843. package/src/core/check/suggest.ts +63 -0
  844. package/src/core/check/surface.ts +115 -0
  845. package/src/core/check/tags.ts +94 -0
  846. package/src/core/check/types.ts +260 -0
  847. package/src/core/check/warmup.ts +100 -0
  848. package/src/core/diagnostics/collector.ts +27 -1
  849. package/src/core/emit/calls.ts +415 -0
  850. package/src/core/emit/canonical.ts +81 -0
  851. package/src/core/emit/channels.ts +144 -0
  852. package/src/core/emit/code.ts +155 -0
  853. package/src/core/emit/colours.ts +75 -0
  854. package/src/core/emit/context.ts +461 -0
  855. package/src/core/emit/defaults.ts +150 -0
  856. package/src/core/emit/emit.ts +313 -0
  857. package/src/core/emit/events.ts +141 -0
  858. package/src/core/emit/expressions.ts +292 -0
  859. package/src/core/emit/functions.ts +195 -0
  860. package/src/core/emit/gaps.ts +44 -0
  861. package/src/core/emit/index.ts +74 -0
  862. package/src/core/emit/inputs.ts +179 -0
  863. package/src/core/emit/layout.ts +165 -0
  864. package/src/core/emit/meta.ts +104 -0
  865. package/src/core/emit/opcodes.ts +160 -0
  866. package/src/core/emit/outputs.ts +357 -0
  867. package/src/core/emit/pool.ts +102 -0
  868. package/src/core/emit/program.ts +385 -0
  869. package/src/core/emit/registers.ts +179 -0
  870. package/src/core/emit/request-scope.ts +52 -0
  871. package/src/core/emit/requests.ts +258 -0
  872. package/src/core/emit/requires.ts +91 -0
  873. package/src/core/emit/sha256.ts +119 -0
  874. package/src/core/emit/statements.ts +438 -0
  875. package/src/core/emit/values.ts +284 -0
  876. package/src/core/engine/alerts.ts +152 -0
  877. package/src/core/engine/arithmetic.ts +165 -0
  878. package/src/core/engine/bars.ts +224 -0
  879. package/src/core/engine/budget.ts +284 -0
  880. package/src/core/engine/channels.ts +171 -0
  881. package/src/core/engine/drawings.ts +127 -0
  882. package/src/core/engine/engine.ts +498 -0
  883. package/src/core/engine/errors.ts +100 -0
  884. package/src/core/engine/frames.ts +85 -0
  885. package/src/core/engine/grids.ts +98 -0
  886. package/src/core/engine/guard.ts +71 -0
  887. package/src/core/engine/host.ts +251 -0
  888. package/src/core/engine/index.ts +93 -0
  889. package/src/core/engine/inputs.ts +263 -0
  890. package/src/core/engine/ledger/call.ts +218 -0
  891. package/src/core/engine/ledger/closable.ts +269 -0
  892. package/src/core/engine/ledger/holdings.ts +354 -0
  893. package/src/core/engine/ledger/index.ts +28 -0
  894. package/src/core/engine/ledger/intent.ts +112 -0
  895. package/src/core/engine/ledger/ledger.ts +314 -0
  896. package/src/core/engine/ledger/place.ts +277 -0
  897. package/src/core/engine/ledger/positions.ts +123 -0
  898. package/src/core/engine/ledger/refuse.ts +378 -0
  899. package/src/core/engine/ledger/row.ts +318 -0
  900. package/src/core/engine/ledger/sizing.ts +292 -0
  901. package/src/core/engine/library/arrays.ts +316 -0
  902. package/src/core/engine/library/averages.ts +97 -0
  903. package/src/core/engine/library/binding.ts +325 -0
  904. package/src/core/engine/library/chart.ts +115 -0
  905. package/src/core/engine/library/colours.ts +111 -0
  906. package/src/core/engine/library/dates.ts +109 -0
  907. package/src/core/engine/library/index.ts +103 -0
  908. package/src/core/engine/library/maths.ts +134 -0
  909. package/src/core/engine/library/objects.ts +265 -0
  910. package/src/core/engine/library/oscillators.ts +124 -0
  911. package/src/core/engine/library/ranges.ts +51 -0
  912. package/src/core/engine/library/series.ts +236 -0
  913. package/src/core/engine/library/state.ts +47 -0
  914. package/src/core/engine/library/studies.ts +150 -0
  915. package/src/core/engine/library/text.ts +303 -0
  916. package/src/core/engine/library/trend.ts +79 -0
  917. package/src/core/engine/library/volume.ts +101 -0
  918. package/src/core/engine/load.ts +104 -0
  919. package/src/core/engine/machine.ts +446 -0
  920. package/src/core/engine/memory.ts +129 -0
  921. package/src/core/engine/operations.ts +171 -0
  922. package/src/core/engine/orders.ts +121 -0
  923. package/src/core/engine/registers.ts +104 -0
  924. package/src/core/engine/request-body.ts +328 -0
  925. package/src/core/engine/request-plan.ts +270 -0
  926. package/src/core/engine/requests.ts +382 -0
  927. package/src/core/engine/results.ts +41 -0
  928. package/src/core/engine/series.ts +82 -0
  929. package/src/core/engine/session/hours.ts +86 -0
  930. package/src/core/engine/session/index.ts +17 -0
  931. package/src/core/engine/session/record.ts +191 -0
  932. package/src/core/engine/session/spec.ts +45 -0
  933. package/src/core/engine/timeframe.ts +161 -0
  934. package/src/core/engine/types.ts +47 -0
  935. package/src/core/engine/values/heap.ts +295 -0
  936. package/src/core/engine/values/index.ts +34 -0
  937. package/src/core/engine/values/value.ts +158 -0
  938. package/src/core/engine/verify-budgets.ts +202 -0
  939. package/src/core/engine/verify-code.ts +332 -0
  940. package/src/core/engine/verify-requests.ts +255 -0
  941. package/src/core/engine/verify-shape.ts +164 -0
  942. package/src/core/engine/verify-tables.ts +176 -0
  943. package/src/core/engine/verify.ts +341 -0
  944. package/src/core/index.ts +129 -6
  945. package/src/core/parse/expressions.ts +1 -1
  946. package/src/core/parse/functions.ts +109 -109
  947. package/src/core/parse/names.ts +29 -2
  948. package/src/core/parse/switches.ts +105 -105
  949. package/src/core/stdlib/averages/exponential.ts +119 -0
  950. package/src/core/stdlib/averages/index.ts +45 -0
  951. package/src/core/stdlib/averages/select.ts +71 -0
  952. package/src/core/stdlib/averages/shaped.ts +161 -0
  953. package/src/core/stdlib/averages/simple.ts +139 -0
  954. package/src/core/stdlib/calendar/civil.ts +89 -0
  955. package/src/core/stdlib/calendar/fields.ts +124 -0
  956. package/src/core/stdlib/calendar/format.ts +71 -0
  957. package/src/core/stdlib/calendar/index.ts +15 -0
  958. package/src/core/stdlib/calendar/zone.ts +161 -0
  959. package/src/core/stdlib/index.ts +400 -0
  960. package/src/core/stdlib/maths/arithmetic.ts +74 -0
  961. package/src/core/stdlib/maths/elementary.ts +124 -0
  962. package/src/core/stdlib/maths/index.ts +43 -0
  963. package/src/core/stdlib/maths/rounding.ts +78 -0
  964. package/src/core/stdlib/momentum/convergence.ts +82 -0
  965. package/src/core/stdlib/momentum/index.ts +47 -0
  966. package/src/core/stdlib/momentum/pressure.ts +141 -0
  967. package/src/core/stdlib/momentum/rates.ts +188 -0
  968. package/src/core/stdlib/momentum/rsi.ts +49 -0
  969. package/src/core/stdlib/momentum/stochastic.ts +147 -0
  970. package/src/core/stdlib/series/changes.ts +177 -0
  971. package/src/core/stdlib/series/conditions.ts +74 -0
  972. package/src/core/stdlib/series/extremes.ts +92 -0
  973. package/src/core/stdlib/series/index.ts +83 -0
  974. package/src/core/stdlib/series/pivots.ts +63 -0
  975. package/src/core/stdlib/series/statistics.ts +207 -0
  976. package/src/core/stdlib/series/totals.ts +164 -0
  977. package/src/core/stdlib/trend/directional.ts +196 -0
  978. package/src/core/stdlib/trend/index.ts +13 -0
  979. package/src/core/stdlib/trend/psar.ts +131 -0
  980. package/src/core/stdlib/trend/supertrend.ts +100 -0
  981. package/src/core/stdlib/values/bar.ts +54 -0
  982. package/src/core/stdlib/values/index.ts +14 -0
  983. package/src/core/stdlib/values/lookback.ts +198 -0
  984. package/src/core/stdlib/values/region.ts +86 -0
  985. package/src/core/stdlib/values/tail.ts +58 -0
  986. package/src/core/stdlib/values/value.ts +82 -0
  987. package/src/core/stdlib/volatility/bands.ts +178 -0
  988. package/src/core/stdlib/volatility/deviation.ts +111 -0
  989. package/src/core/stdlib/volatility/index.ts +48 -0
  990. package/src/core/stdlib/volatility/measures.ts +96 -0
  991. package/src/core/stdlib/volatility/range.ts +143 -0
  992. package/src/core/stdlib/volume/accumulation.ts +152 -0
  993. package/src/core/stdlib/volume/flow.ts +173 -0
  994. package/src/core/stdlib/volume/index.ts +43 -0
  995. package/src/core/stdlib/volume/weighted.ts +101 -0
  996. package/src/core/version/index.ts +1 -0
  997. package/src/core/version/version.generated.ts +15 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Order statistics and the two joint statistics.
3
+ *
4
+ * `percentile` interpolates linearly between the two ranks either side, which
5
+ * `stdlib.md` section 9 states. The nearest rank method, which returns an
6
+ * actual member of the lookback, is the other common choice and gives a visibly
7
+ * different answer for an even length lookback; it is not what is specified here.
8
+ *
9
+ * `covariance` and `correlation` are the population forms, and both are taken
10
+ * in two passes: the mean first, then the deviations from it. The single pass
11
+ * arrangement, summing squares and cross products and subtracting at the end,
12
+ * needs one fewer pass and loses most of its significant digits when the values
13
+ * are large and their spread is small, which is exactly what a price series is.
14
+ * `stdlib.md` fixes neither arrangement, so this one is chosen and stated.
15
+ */
16
+ import type { Series, StateRecord, Tail, Value } from '../values/index.js';
17
+ import type { Pair } from './changes.js';
18
+ /**
19
+ * `percentile(src, len, p)`: the value at percentile `p` of the lookback,
20
+ * linearly interpolated, from bar `len - 1`.
21
+ */
22
+ export declare function percentileStep(state: StateRecord, key: string, value: Value, len: number | null, p: number | null): Value;
23
+ /** `percentile(src, len, p)` as a tail. */
24
+ export declare function percentileTail(len: number, p: number): Tail<Value, Value>;
25
+ /** `percentile(src, len, p)` over a whole series. */
26
+ export declare function percentile(src: Series, len: number, p: number): Value[];
27
+ /**
28
+ * `median(src, len)`: the middle value of the lookback, from bar `len - 1`.
29
+ *
30
+ * The 50th percentile by the same interpolation, so an even length lookback is
31
+ * the mean of its two middles rather than one of them chosen by a rule nobody
32
+ * remembers.
33
+ */
34
+ export declare function medianTail(len: number): Tail<Value, Value>;
35
+ /** `median(src, len)` over a whole series. */
36
+ export declare function median(src: Series, len: number): Value[];
37
+ /**
38
+ * `percentRank(src, len)`: what percentage of the lookback this bar's value
39
+ * exceeds, from bar `len - 1`.
40
+ *
41
+ * The lookback is the last `len` bars including this one, which is what the
42
+ * declared warmup of bar `len - 1` says: a lookback of the `len` bars before this
43
+ * one would not have its first answer until bar `len`. This bar is therefore
44
+ * one of the values counted, so the reading runs from `100 / len` to 100 rather
45
+ * than from 0.
46
+ */
47
+ export declare function percentRankStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
48
+ /** `percentRank(src, len)` as a tail. */
49
+ export declare function percentRankTail(len: number): Tail<Value, Value>;
50
+ /** `percentRank(src, len)` over a whole series. */
51
+ export declare function percentRank(src: Series, len: number): Value[];
52
+ /** `covariance(a, b, len)`: the population covariance, from bar `len - 1`. */
53
+ export declare function covarianceStep(state: StateRecord, key: string, pair: Pair, len: number | null): Value;
54
+ /** `correlation(a, b, len)`: linear correlation, -1 to 1, from bar `len - 1`. */
55
+ export declare function correlationStep(state: StateRecord, key: string, pair: Pair, len: number | null): Value;
56
+ /** `covariance(a, b, len)` as a tail. */
57
+ export declare function covarianceTail(len: number): Tail<Pair, Value>;
58
+ /** `correlation(a, b, len)` as a tail. */
59
+ export declare function correlationTail(len: number): Tail<Pair, Value>;
60
+ /** `covariance(a, b, len)` over whole series. */
61
+ export declare function covariance(a: Series, b: Series, len: number): Value[];
62
+ /** `correlation(a, b, len)` over whole series. */
63
+ export declare function correlation(a: Series, b: Series, len: number): Value[];
64
+ //# sourceMappingURL=statistics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AASzC;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,CAAC,EAAE,MAAM,GAAG,IAAI,GACf,KAAK,CAaP;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE1D;AAED,8CAA8C;AAC9C,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAUP;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE/D;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE7D;AAmDD,8EAA8E;AAC9E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAEP;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAEP;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAE7D;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAE9D;AAMD,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAErE;AAED,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEtE"}
@@ -0,0 +1,148 @@
1
+ import { NONE, fold, result, ring, tailOf } from '../values/index.js';
2
+ /** The lookback's values, oldest first, as plain numbers. */
3
+ function ordered(read, len) {
4
+ const values = [];
5
+ for (let back = len - 1; back >= 0; back -= 1)
6
+ values.push(read(back));
7
+ return values;
8
+ }
9
+ /**
10
+ * `percentile(src, len, p)`: the value at percentile `p` of the lookback,
11
+ * linearly interpolated, from bar `len - 1`.
12
+ */
13
+ export function percentileStep(state, key, value, len, p) {
14
+ const lookback = ring(state, key, len);
15
+ lookback.push(value);
16
+ if (len === null || p === null || !lookback.complete())
17
+ return NONE;
18
+ if (!(p >= 0 && p <= 100))
19
+ return NONE;
20
+ const sorted = ordered((back) => lookback.at(back), len).sort((a, b) => a - b);
21
+ const rank = (p / 100) * (len - 1);
22
+ const below = Math.floor(rank);
23
+ const above = below + 1;
24
+ const low = sorted[below];
25
+ if (above >= len)
26
+ return result(low);
27
+ const high = sorted[above];
28
+ return result(low + (rank - below) * (high - low));
29
+ }
30
+ /** `percentile(src, len, p)` as a tail. */
31
+ export function percentileTail(len, p) {
32
+ return tailOf((state, value) => percentileStep(state, 'q', value, len, p));
33
+ }
34
+ /** `percentile(src, len, p)` over a whole series. */
35
+ export function percentile(src, len, p) {
36
+ return fold(percentileTail(len, p), src);
37
+ }
38
+ /**
39
+ * `median(src, len)`: the middle value of the lookback, from bar `len - 1`.
40
+ *
41
+ * The 50th percentile by the same interpolation, so an even length lookback is
42
+ * the mean of its two middles rather than one of them chosen by a rule nobody
43
+ * remembers.
44
+ */
45
+ export function medianTail(len) {
46
+ return percentileTail(len, 50);
47
+ }
48
+ /** `median(src, len)` over a whole series. */
49
+ export function median(src, len) {
50
+ return fold(medianTail(len), src);
51
+ }
52
+ /**
53
+ * `percentRank(src, len)`: what percentage of the lookback this bar's value
54
+ * exceeds, from bar `len - 1`.
55
+ *
56
+ * The lookback is the last `len` bars including this one, which is what the
57
+ * declared warmup of bar `len - 1` says: a lookback of the `len` bars before this
58
+ * one would not have its first answer until bar `len`. This bar is therefore
59
+ * one of the values counted, so the reading runs from `100 / len` to 100 rather
60
+ * than from 0.
61
+ */
62
+ export function percentRankStep(state, key, value, len) {
63
+ const lookback = ring(state, key, len);
64
+ lookback.push(value);
65
+ if (len === null || !lookback.complete())
66
+ return NONE;
67
+ const current = lookback.at(0);
68
+ let counted = 0;
69
+ for (let back = len - 1; back >= 0; back -= 1) {
70
+ if (lookback.at(back) <= current)
71
+ counted += 1;
72
+ }
73
+ return result((counted * 100) / len);
74
+ }
75
+ /** `percentRank(src, len)` as a tail. */
76
+ export function percentRankTail(len) {
77
+ return tailOf((state, value) => percentRankStep(state, 'q', value, len));
78
+ }
79
+ /** `percentRank(src, len)` over a whole series. */
80
+ export function percentRank(src, len) {
81
+ return fold(percentRankTail(len), src);
82
+ }
83
+ function moments(a, b, len) {
84
+ let sumA = 0;
85
+ let sumB = 0;
86
+ for (let index = 0; index < len; index += 1) {
87
+ sumA += a[index];
88
+ sumB += b[index];
89
+ }
90
+ const meanA = sumA / len;
91
+ const meanB = sumB / len;
92
+ let cross = 0;
93
+ let squaresA = 0;
94
+ let squaresB = 0;
95
+ for (let index = 0; index < len; index += 1) {
96
+ const deviationA = a[index] - meanA;
97
+ const deviationB = b[index] - meanB;
98
+ cross += deviationA * deviationB;
99
+ squaresA += deviationA * deviationA;
100
+ squaresB += deviationB * deviationB;
101
+ }
102
+ return { covariance: cross / len, varianceA: squaresA / len, varianceB: squaresB / len };
103
+ }
104
+ function jointStep(state, key, pair, len, want) {
105
+ const left = ring(state, `${key}a`, len);
106
+ const right = ring(state, `${key}b`, len);
107
+ left.push(pair.a);
108
+ right.push(pair.b);
109
+ if (len === null || !left.complete() || !right.complete())
110
+ return NONE;
111
+ const a = ordered((back) => left.at(back), len);
112
+ const b = ordered((back) => right.at(back), len);
113
+ const m = moments(a, b, len);
114
+ if (want === 'covariance')
115
+ return result(m.covariance);
116
+ const scale = Math.sqrt(m.varianceA) * Math.sqrt(m.varianceB);
117
+ if (scale === 0)
118
+ return NONE;
119
+ return result(m.covariance / scale);
120
+ }
121
+ /** `covariance(a, b, len)`: the population covariance, from bar `len - 1`. */
122
+ export function covarianceStep(state, key, pair, len) {
123
+ return jointStep(state, key, pair, len, 'covariance');
124
+ }
125
+ /** `correlation(a, b, len)`: linear correlation, -1 to 1, from bar `len - 1`. */
126
+ export function correlationStep(state, key, pair, len) {
127
+ return jointStep(state, key, pair, len, 'correlation');
128
+ }
129
+ /** `covariance(a, b, len)` as a tail. */
130
+ export function covarianceTail(len) {
131
+ return tailOf((state, pair) => covarianceStep(state, 'q', pair, len));
132
+ }
133
+ /** `correlation(a, b, len)` as a tail. */
134
+ export function correlationTail(len) {
135
+ return tailOf((state, pair) => correlationStep(state, 'q', pair, len));
136
+ }
137
+ function pairs(a, b) {
138
+ return a.map((value, index) => ({ a: value, b: b[index] ?? NONE }));
139
+ }
140
+ /** `covariance(a, b, len)` over whole series. */
141
+ export function covariance(a, b, len) {
142
+ return fold(covarianceTail(len), pairs(a, b));
143
+ }
144
+ /** `correlation(a, b, len)` over whole series. */
145
+ export function correlation(a, b, len) {
146
+ return fold(correlationTail(len), pairs(a, b));
147
+ }
148
+ //# sourceMappingURL=statistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Totals and counts over a lookback, and the three functions that deliberately
3
+ * ignore absent bars.
4
+ *
5
+ * `sum` propagates absence, as every lookback function does. `sumSkip`,
6
+ * `avgSkip` and `countPresent` do not, and they say so in their names because
7
+ * a function that quietly ignored a gap would report a total over a lookback it
8
+ * never had.
9
+ */
10
+ import type { Flag, Flags, Series, StateRecord, Tail, Value } from '../values/index.js';
11
+ /** `sum(src, len)`: the total over the lookback, from bar `len - 1`. */
12
+ export declare function sumStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
13
+ /** `sum(src, len)` as a tail. */
14
+ export declare function sumTail(len: number): Tail<Value, Value>;
15
+ /** `sum(src, len)` over a whole series. */
16
+ export declare function sum(src: Series, len: number): Value[];
17
+ /**
18
+ * `cum(src)`: the running total from the first bar, from bar 0.
19
+ *
20
+ * An absent bar produces an absent bar out and leaves the total where it was.
21
+ * The alternatives are both wrong: treating absence as zero would report a
22
+ * total over bars that had no value, and propagating it into the total would
23
+ * end the series permanently at the first gap.
24
+ */
25
+ export declare function cumStep(state: StateRecord, key: string, value: Value): Value;
26
+ /** `cum(src)` as a tail. */
27
+ export declare function cumTail(): Tail<Value, Value>;
28
+ /** `cum(src)` over a whole series. */
29
+ export declare function cum(src: Series): Value[];
30
+ /**
31
+ * `count(cond, len)`: how many of the last `len` bars the condition held on,
32
+ * from bar `len - 1`.
33
+ *
34
+ * An absent condition is a condition that did not hold, matching the rule that
35
+ * absence is false at a branch (`language.md` section 6). Propagating it
36
+ * instead would make a count over a condition built from an average absent for
37
+ * a second warmup on top of the average's own.
38
+ */
39
+ export declare function countStep(state: StateRecord, key: string, cond: Flag, len: number | null): Value;
40
+ /** `count(cond, len)` as a tail. */
41
+ export declare function countTail(len: number): Tail<Flag, Value>;
42
+ /** `count(cond, len)` over a whole series. */
43
+ export declare function count(cond: Flags, len: number): Value[];
44
+ /** `sumSkip(src, len)`: the total over the lookback, ignoring absent bars. */
45
+ export declare function sumSkipStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
46
+ /** `sumSkip(src, len)` as a tail. */
47
+ export declare function sumSkipTail(len: number): Tail<Value, Value>;
48
+ /** `sumSkip(src, len)` over a whole series. */
49
+ export declare function sumSkip(src: Series, len: number): Value[];
50
+ /** `countPresent(src, len)`: how many bars of the lookback had a value. */
51
+ export declare function countPresentStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
52
+ /** `countPresent(src, len)` as a tail. */
53
+ export declare function countPresentTail(len: number): Tail<Value, Value>;
54
+ /** `countPresent(src, len)` over a whole series. */
55
+ export declare function countPresent(src: Series, len: number): Value[];
56
+ /**
57
+ * `avgSkip(src, len)`: the mean over the lookback, ignoring absent bars.
58
+ *
59
+ * A lookback with nothing present in it is absent, not zero: there is no mean of
60
+ * no values, and a division by zero is absence by the rule of `stdlib.md`
61
+ * section 2.4.
62
+ */
63
+ export declare function avgSkipStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
64
+ /** `avgSkip(src, len)` as a tail. */
65
+ export declare function avgSkipTail(len: number): Tail<Value, Value>;
66
+ /** `avgSkip(src, len)` over a whole series. */
67
+ export declare function avgSkip(src: Series, len: number): Value[];
68
+ //# sourceMappingURL=totals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"totals.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/totals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGxF,wEAAwE;AACxE,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEvD;AAED,2CAA2C;AAC3C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAK5E;AAED,4BAA4B;AAC5B,wBAAgB,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE5C;AAED,sCAAsC;AACtC,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,oCAAoC;AACpC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAExD;AAED,8CAA8C;AAC9C,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEvD;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE3D;AAED,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEhE;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAQP;AAED,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE3D;AAED,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD"}
@@ -0,0 +1,115 @@
1
+ import { NONE, fold, isPresent, result, ring, slot, tailOf } from '../values/index.js';
2
+ /** `sum(src, len)`: the total over the lookback, from bar `len - 1`. */
3
+ export function sumStep(state, key, value, len) {
4
+ const lookback = ring(state, key, len);
5
+ lookback.push(value);
6
+ return lookback.sum();
7
+ }
8
+ /** `sum(src, len)` as a tail. */
9
+ export function sumTail(len) {
10
+ return tailOf((state, value) => sumStep(state, 'q', value, len));
11
+ }
12
+ /** `sum(src, len)` over a whole series. */
13
+ export function sum(src, len) {
14
+ return fold(sumTail(len), src);
15
+ }
16
+ /**
17
+ * `cum(src)`: the running total from the first bar, from bar 0.
18
+ *
19
+ * An absent bar produces an absent bar out and leaves the total where it was.
20
+ * The alternatives are both wrong: treating absence as zero would report a
21
+ * total over bars that had no value, and propagating it into the total would
22
+ * end the series permanently at the first gap.
23
+ */
24
+ export function cumStep(state, key, value) {
25
+ if (!isPresent(value))
26
+ return NONE;
27
+ const total = slot(state, key, 0) + value;
28
+ state[key] = total;
29
+ return result(total);
30
+ }
31
+ /** `cum(src)` as a tail. */
32
+ export function cumTail() {
33
+ return tailOf((state, value) => cumStep(state, 't', value));
34
+ }
35
+ /** `cum(src)` over a whole series. */
36
+ export function cum(src) {
37
+ return fold(cumTail(), src);
38
+ }
39
+ /**
40
+ * `count(cond, len)`: how many of the last `len` bars the condition held on,
41
+ * from bar `len - 1`.
42
+ *
43
+ * An absent condition is a condition that did not hold, matching the rule that
44
+ * absence is false at a branch (`language.md` section 6). Propagating it
45
+ * instead would make a count over a condition built from an average absent for
46
+ * a second warmup on top of the average's own.
47
+ */
48
+ export function countStep(state, key, cond, len) {
49
+ const lookback = ring(state, key, len);
50
+ lookback.push(cond === true ? 1 : 0);
51
+ return lookback.sum();
52
+ }
53
+ /** `count(cond, len)` as a tail. */
54
+ export function countTail(len) {
55
+ return tailOf((state, cond) => countStep(state, 'q', cond, len));
56
+ }
57
+ /** `count(cond, len)` over a whole series. */
58
+ export function count(cond, len) {
59
+ return fold(countTail(len), cond);
60
+ }
61
+ /** `sumSkip(src, len)`: the total over the lookback, ignoring absent bars. */
62
+ export function sumSkipStep(state, key, value, len) {
63
+ const lookback = ring(state, key, len);
64
+ lookback.push(value);
65
+ return lookback.sumPresent();
66
+ }
67
+ /** `sumSkip(src, len)` as a tail. */
68
+ export function sumSkipTail(len) {
69
+ return tailOf((state, value) => sumSkipStep(state, 'q', value, len));
70
+ }
71
+ /** `sumSkip(src, len)` over a whole series. */
72
+ export function sumSkip(src, len) {
73
+ return fold(sumSkipTail(len), src);
74
+ }
75
+ /** `countPresent(src, len)`: how many bars of the lookback had a value. */
76
+ export function countPresentStep(state, key, value, len) {
77
+ const lookback = ring(state, key, len);
78
+ lookback.push(value);
79
+ return lookback.filled() ? lookback.presentCount() : NONE;
80
+ }
81
+ /** `countPresent(src, len)` as a tail. */
82
+ export function countPresentTail(len) {
83
+ return tailOf((state, value) => countPresentStep(state, 'q', value, len));
84
+ }
85
+ /** `countPresent(src, len)` over a whole series. */
86
+ export function countPresent(src, len) {
87
+ return fold(countPresentTail(len), src);
88
+ }
89
+ /**
90
+ * `avgSkip(src, len)`: the mean over the lookback, ignoring absent bars.
91
+ *
92
+ * A lookback with nothing present in it is absent, not zero: there is no mean of
93
+ * no values, and a division by zero is absence by the rule of `stdlib.md`
94
+ * section 2.4.
95
+ */
96
+ export function avgSkipStep(state, key, value, len) {
97
+ const lookback = ring(state, key, len);
98
+ lookback.push(value);
99
+ if (!lookback.filled())
100
+ return NONE;
101
+ const counted = lookback.presentCount();
102
+ const total = lookback.sumPresent();
103
+ if (counted === 0 || !isPresent(total))
104
+ return NONE;
105
+ return result(total / counted);
106
+ }
107
+ /** `avgSkip(src, len)` as a tail. */
108
+ export function avgSkipTail(len) {
109
+ return tailOf((state, value) => avgSkipStep(state, 'q', value, len));
110
+ }
111
+ /** `avgSkip(src, len)` over a whole series. */
112
+ export function avgSkip(src, len) {
113
+ return fold(avgSkipTail(len), src);
114
+ }
115
+ //# sourceMappingURL=totals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"totals.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/totals.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEvF,wEAAwE;AACxE,MAAM,UAAU,OAAO,CACrB,KAAkB,EAClB,GAAW,EACX,KAAY,EACZ,GAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,GAAW;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,KAAkB,EAAE,GAAW,EAAE,KAAY;IACnE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAC1C,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,OAAO;IACrB,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,GAAG,CAAC,GAAW;IAC7B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,KAAkB,EAClB,GAAW,EACX,IAAU,EACV,GAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,IAAU,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,KAAK,CAAC,IAAW,EAAE,GAAW;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CACzB,KAAkB,EAClB,GAAW,EACX,KAAY,EACZ,GAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,KAAY,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,GAAW;IAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAC9B,KAAkB,EAClB,GAAW,EACX,KAAY,EACZ,GAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,KAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAW;IACnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,KAAkB,EAClB,GAAW,EACX,KAAY,EACZ,GAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,KAAY,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,GAAW;IAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * `adx(diLen, adxLen)`, `aroon(len)` and `ichimoku(convLen, baseLen, spanLen)`:
3
+ * how strong the trend is, which side owns it, and the five line frame.
4
+ *
5
+ * Each is written once, as a step over a state region, and its tail is that
6
+ * step over a region of its own. An engine calls the same step against the
7
+ * region it holds for the call site, so there is no second arrangement of the
8
+ * arithmetic anywhere for the two to drift apart in.
9
+ */
10
+ import type { Bar, StateRecord, Tail, Value } from '../values/index.js';
11
+ import type { Gap } from '../volatility/index.js';
12
+ /**
13
+ * `adx(diLen, adxLen)`: `[adx, plusDI, minusDI]`, elements 1 and 2 from bar
14
+ * `diLen` and element 0 from bar `diLen + adxLen - 1`.
15
+ *
16
+ * Directional movement is the part of this bar's range that lies outside the
17
+ * previous bar's, on whichever side is larger. It needs the bar before it, so
18
+ * the smoothing's lookback is bars 1 to `diLen` and the first reading is at bar
19
+ * `diLen`. The true range in the denominator uses the gap-aware form for the
20
+ * same reason, so all three smoothed quantities cover the same bars: seeding
21
+ * one of them a bar earlier than the other two would bias every reading after
22
+ * it while still looking entirely plausible.
23
+ *
24
+ * The previous bar's two extremes are held in the region, because they are the
25
+ * arithmetic's own history. The previous close is not: it arrives with the gap,
26
+ * for the reason `range.ts` sets out.
27
+ */
28
+ export declare function adxStep(state: StateRecord, key: string, gap: Gap, diLen: number | null, adxLen: number | null): Value[];
29
+ /** `adx(diLen, adxLen)` as a tail. */
30
+ export declare function adxTail(diLen?: number, adxLen?: number): Tail<Bar, Value[]>;
31
+ /** `adx(diLen, adxLen)` over a run of bars. */
32
+ export declare function adx(bars: readonly Bar[], diLen?: number, adxLen?: number): Value[][];
33
+ /**
34
+ * `aroon(len)`: `[up, down]`, both from bar `len`.
35
+ *
36
+ * How recently the lookback's high and low were set, as a percentage: 100 when it
37
+ * was this bar, 0 when it was `len` bars ago. The lookback is `len + 1` bars
38
+ * wide, because a reading of 0 has to be reachable and an extreme `len` bars
39
+ * back has to still be inside the lookback for that. That extra bar is where the
40
+ * declared warmup of bar `len` rather than bar `len - 1` comes from.
41
+ */
42
+ export declare function aroonStep(state: StateRecord, key: string, high: Value, low: Value, len: number | null): Value[];
43
+ /** `aroon(len)` as a tail. */
44
+ export declare function aroonTail(len?: number): Tail<Bar, Value[]>;
45
+ /** `aroon(len)` over a run of bars. */
46
+ export declare function aroon(bars: readonly Bar[], len?: number): Value[][];
47
+ /**
48
+ * `ichimoku(convLen, baseLen, spanLen)`: `[conversion, base, spanA, spanB,
49
+ * lagging]`, at bars `convLen - 1`, `baseLen - 1`, `baseLen - 1`,
50
+ * `spanLen - 1` and `baseLen - 1`.
51
+ *
52
+ * Each of the first four lines is the midpoint of a lookback's outright high and
53
+ * low, over a different length. **The spans are returned undisplaced, at the
54
+ * bar they are computed on**, per `stdlib.md` section 4: a study draws them
55
+ * forward with the plot's `offset` argument, because a series that has already
56
+ * been shifted cannot be compared with anything else in the script without
57
+ * shifting it back.
58
+ *
59
+ * The lagging line is this bar's close, and it is drawn backward by the same
60
+ * plot argument. It is absent until bar `baseLen - 1`, which is the warmup the
61
+ * specification declares for it, and which is the first bar there is enough
62
+ * history for the displacement to land on.
63
+ */
64
+ export declare function ichimokuStep(state: StateRecord, key: string, bar: Bar, convLen: number | null, baseLen: number | null, spanLen: number | null): Value[];
65
+ /** `ichimoku(convLen, baseLen, spanLen)` as a tail. */
66
+ export declare function ichimokuTail(convLen?: number, baseLen?: number, spanLen?: number): Tail<Bar, Value[]>;
67
+ /** `ichimoku(convLen, baseLen, spanLen)` over a run of bars. */
68
+ export declare function ichimoku(bars: readonly Bar[], convLen?: number, baseLen?: number, spanLen?: number): Value[][];
69
+ //# sourceMappingURL=directional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directional.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/trend/directional.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIxE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAGlD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,KAAK,EAAE,CA4CT;AAED,sCAAsC;AACtC,wBAAgB,OAAO,CAAC,KAAK,SAAK,EAAE,MAAM,SAAK,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAEnE;AAED,+CAA+C;AAC/C,wBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,SAAK,EAAE,MAAM,SAAK,GAAG,KAAK,EAAE,EAAE,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,EAAE,CAQT;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,GAAG,SAAK,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAEtD;AAED,uCAAuC;AACvC,wBAAgB,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,SAAK,GAAG,KAAK,EAAE,EAAE,CAE/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,KAAK,EAAE,CAST;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,OAAO,SAAI,EAAE,OAAO,SAAK,EAAE,OAAO,SAAK,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAExF;AAED,gEAAgE;AAChE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,OAAO,SAAI,EACX,OAAO,SAAK,EACZ,OAAO,SAAK,GACX,KAAK,EAAE,EAAE,CAEX"}
@@ -0,0 +1,151 @@
1
+ import { NONE, fold, held, isPresent, result, ring, tailOf } from '../values/index.js';
2
+ import { rmaStep } from '../averages/index.js';
3
+ import { extremeStep } from '../series/index.js';
4
+ import { gapOf, trueRangeOf } from '../volatility/index.js';
5
+ /**
6
+ * `adx(diLen, adxLen)`: `[adx, plusDI, minusDI]`, elements 1 and 2 from bar
7
+ * `diLen` and element 0 from bar `diLen + adxLen - 1`.
8
+ *
9
+ * Directional movement is the part of this bar's range that lies outside the
10
+ * previous bar's, on whichever side is larger. It needs the bar before it, so
11
+ * the smoothing's lookback is bars 1 to `diLen` and the first reading is at bar
12
+ * `diLen`. The true range in the denominator uses the gap-aware form for the
13
+ * same reason, so all three smoothed quantities cover the same bars: seeding
14
+ * one of them a bar earlier than the other two would bias every reading after
15
+ * it while still looking entirely plausible.
16
+ *
17
+ * The previous bar's two extremes are held in the region, because they are the
18
+ * arithmetic's own history. The previous close is not: it arrives with the gap,
19
+ * for the reason `range.ts` sets out.
20
+ */
21
+ export function adxStep(state, key, gap, diLen, adxLen) {
22
+ const highKey = `${key}h`;
23
+ const lowKey = `${key}l`;
24
+ const seenKey = `${key}k`;
25
+ const beforeHigh = held(state, highKey);
26
+ const beforeLow = held(state, lowKey);
27
+ const started = state[seenKey] === true;
28
+ state[seenKey] = true;
29
+ state[highKey] = gap.high;
30
+ state[lowKey] = gap.low;
31
+ let upMove = NONE;
32
+ let downMove = NONE;
33
+ if (started &&
34
+ isPresent(gap.high) &&
35
+ isPresent(gap.low) &&
36
+ isPresent(beforeHigh) &&
37
+ isPresent(beforeLow)) {
38
+ const up = gap.high - beforeHigh;
39
+ const down = beforeLow - gap.low;
40
+ upMove = up > down && up > 0 ? result(up) : 0;
41
+ downMove = down > up && down > 0 ? result(down) : 0;
42
+ }
43
+ const trueRange = rmaStep(state, `${key}r`, trueRangeOf(gap, false), diLen);
44
+ const rise = rmaStep(state, `${key}u`, upMove, diLen);
45
+ const fall = rmaStep(state, `${key}d`, downMove, diLen);
46
+ let plus = NONE;
47
+ let minus = NONE;
48
+ if (isPresent(trueRange) && trueRange !== 0) {
49
+ if (isPresent(rise))
50
+ plus = result((rise / trueRange) * 100);
51
+ if (isPresent(fall))
52
+ minus = result((fall / trueRange) * 100);
53
+ }
54
+ let spread = NONE;
55
+ if (isPresent(plus) && isPresent(minus)) {
56
+ const total = plus + minus;
57
+ spread = total > 0 ? result((Math.abs(plus - minus) / total) * 100) : 0;
58
+ }
59
+ return [rmaStep(state, `${key}x`, spread, adxLen), plus, minus];
60
+ }
61
+ /** `adx(diLen, adxLen)` as a tail. */
62
+ export function adxTail(diLen = 14, adxLen = 14) {
63
+ return tailOf((state, bar) => adxStep(state, '', gapOf(state, 'g', bar), diLen, adxLen));
64
+ }
65
+ /** `adx(diLen, adxLen)` over a run of bars. */
66
+ export function adx(bars, diLen = 14, adxLen = 14) {
67
+ return fold(adxTail(diLen, adxLen), bars);
68
+ }
69
+ /**
70
+ * `aroon(len)`: `[up, down]`, both from bar `len`.
71
+ *
72
+ * How recently the lookback's high and low were set, as a percentage: 100 when it
73
+ * was this bar, 0 when it was `len` bars ago. The lookback is `len + 1` bars
74
+ * wide, because a reading of 0 has to be reachable and an extreme `len` bars
75
+ * back has to still be inside the lookback for that. That extra bar is where the
76
+ * declared warmup of bar `len` rather than bar `len - 1` comes from.
77
+ */
78
+ export function aroonStep(state, key, high, low, len) {
79
+ const wide = len === null ? null : len + 1;
80
+ const highAge = extremeStep(state, `${key}h`, high, wide, true, true);
81
+ const lowAge = extremeStep(state, `${key}l`, low, wide, false, true);
82
+ if (len === null)
83
+ return [NONE, NONE];
84
+ const up = isPresent(highAge) ? result((100 * (len - highAge)) / len) : NONE;
85
+ const down = isPresent(lowAge) ? result((100 * (len - lowAge)) / len) : NONE;
86
+ return [up, down];
87
+ }
88
+ /** `aroon(len)` as a tail. */
89
+ export function aroonTail(len = 14) {
90
+ return tailOf((state, bar) => aroonStep(state, '', bar.high, bar.low, len));
91
+ }
92
+ /** `aroon(len)` over a run of bars. */
93
+ export function aroon(bars, len = 14) {
94
+ return fold(aroonTail(len), bars);
95
+ }
96
+ /**
97
+ * `ichimoku(convLen, baseLen, spanLen)`: `[conversion, base, spanA, spanB,
98
+ * lagging]`, at bars `convLen - 1`, `baseLen - 1`, `baseLen - 1`,
99
+ * `spanLen - 1` and `baseLen - 1`.
100
+ *
101
+ * Each of the first four lines is the midpoint of a lookback's outright high and
102
+ * low, over a different length. **The spans are returned undisplaced, at the
103
+ * bar they are computed on**, per `stdlib.md` section 4: a study draws them
104
+ * forward with the plot's `offset` argument, because a series that has already
105
+ * been shifted cannot be compared with anything else in the script without
106
+ * shifting it back.
107
+ *
108
+ * The lagging line is this bar's close, and it is drawn backward by the same
109
+ * plot argument. It is absent until bar `baseLen - 1`, which is the warmup the
110
+ * specification declares for it, and which is the first bar there is enough
111
+ * history for the displacement to land on.
112
+ */
113
+ export function ichimokuStep(state, key, bar, convLen, baseLen, spanLen) {
114
+ const near = midpointStep(state, `${key}c`, bar, convLen);
115
+ const middle = midpointStep(state, `${key}b`, bar, baseLen);
116
+ const leading = isPresent(near) && isPresent(middle) ? result((near + middle) / 2) : NONE;
117
+ const behind = midpointStep(state, `${key}s`, bar, spanLen);
118
+ const closes = ring(state, `${key}g`, baseLen);
119
+ closes.push(bar.close);
120
+ const lagging = closes.filled() ? closes.at(0) : NONE;
121
+ return [near, middle, leading, behind, lagging];
122
+ }
123
+ /** `ichimoku(convLen, baseLen, spanLen)` as a tail. */
124
+ export function ichimokuTail(convLen = 9, baseLen = 26, spanLen = 52) {
125
+ return tailOf((state, bar) => ichimokuStep(state, '', bar, convLen, baseLen, spanLen));
126
+ }
127
+ /** `ichimoku(convLen, baseLen, spanLen)` over a run of bars. */
128
+ export function ichimoku(bars, convLen = 9, baseLen = 26, spanLen = 52) {
129
+ return fold(ichimokuTail(convLen, baseLen, spanLen), bars);
130
+ }
131
+ /** The midpoint of a lookback's outright high and low. */
132
+ function midpointStep(state, key, bar, len) {
133
+ const highs = ring(state, `${key}h`, len);
134
+ const lows = ring(state, `${key}l`, len);
135
+ highs.push(bar.high);
136
+ lows.push(bar.low);
137
+ if (len === null || !highs.complete() || !lows.complete())
138
+ return NONE;
139
+ let top = highs.at(len - 1);
140
+ let bottom = lows.at(len - 1);
141
+ for (let back = len - 2; back >= 0; back -= 1) {
142
+ const high = highs.at(back);
143
+ const low = lows.at(back);
144
+ if (high > top)
145
+ top = high;
146
+ if (low < bottom)
147
+ bottom = low;
148
+ }
149
+ return result((top + bottom) / 2);
150
+ }
151
+ //# sourceMappingURL=directional.js.map