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,55 @@
1
+ /**
2
+ * What a stateful function remembers between bars, and why it is a record
3
+ * rather than a closure.
4
+ *
5
+ * A closure is the obvious way to hold a running average and it is the wrong
6
+ * way here. `compiled-program.md` 2.11 requires a state region to be
7
+ * **snapshottable by a mechanical copy**: an engine copies and restores one
8
+ * without knowing which function owns it, because the rollback and replay rules
9
+ * of section 6 apply to every region at once. Nothing can copy a closure
10
+ * without knowing what is inside it, and rebuilding one by replaying its inputs
11
+ * is what 6.2 refuses in as many words: an engine does not re-seed an average
12
+ * from history, it puts back the record it copied.
13
+ *
14
+ * So a region is a flat record of numbers, booleans, strings and fixed length
15
+ * queues, and `copyState` is the mechanical copy. Every function in this
16
+ * library is written against one, and the tail form in `tail.ts` is the same
17
+ * step over a region nobody else can reach. That is what lets the one
18
+ * implementation serve both a library call folded over a series and an engine
19
+ * advancing a chart one bar at a time.
20
+ *
21
+ * Several functions share one region by taking different key prefixes, which is
22
+ * how a study built from three others keeps one flat record rather than a tree
23
+ * of them.
24
+ */
25
+ /** One field of a state region. A queue is the one compound form 2.11 allows. */
26
+ export type StateField = number | boolean | string | null;
27
+ /** What a single key holds. */
28
+ export type StateSlot = StateField | StateField[];
29
+ /** A state region: a flat record, copyable without knowing what owns it. */
30
+ export type StateRecord = Record<string, StateSlot | undefined>;
31
+ /** A region with nothing in it yet, which is what bar 0 finds. */
32
+ export declare function newState(): StateRecord;
33
+ /** The mechanical copy 2.11 asks for: one level, with queues cloned. */
34
+ export declare function copyState(record: StateRecord): StateRecord;
35
+ /** A number held in a region, with a default for the bar it is first read on. */
36
+ export declare function slot(record: StateRecord, key: string, fallback: number): number;
37
+ /** A condition held in a region, false until something sets it. */
38
+ export declare function flag(record: StateRecord, key: string): boolean;
39
+ /**
40
+ * A queue held in a region, created on the bar it is first read on.
41
+ *
42
+ * The caller keeps it bounded. A queue that grew with the dataset would not be
43
+ * copyable in the sense 2.11 requires.
44
+ */
45
+ export declare function queue(record: StateRecord, key: string): StateField[];
46
+ /**
47
+ * A number held in a region that may honestly have none yet.
48
+ *
49
+ * `slot` answers with a fallback, which is what a running total wants. A study
50
+ * that remembers the previous bar's high wants the other answer: absence until
51
+ * a present value has been put there, so the bar after a hole is treated as the
52
+ * bar after a hole rather than as one following a zero.
53
+ */
54
+ export declare function held(record: StateRecord, key: string): number | null;
55
+ //# sourceMappingURL=region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/values/region.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;AAE1D,+BAA+B;AAC/B,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC;AAElD,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;AAEhE,kEAAkE;AAClE,wBAAgB,QAAQ,IAAI,WAAW,CAEtC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAO1D;AAED,iFAAiF;AACjF,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED,mEAAmE;AACnE,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAMpE;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * What a stateful function remembers between bars, and why it is a record
3
+ * rather than a closure.
4
+ *
5
+ * A closure is the obvious way to hold a running average and it is the wrong
6
+ * way here. `compiled-program.md` 2.11 requires a state region to be
7
+ * **snapshottable by a mechanical copy**: an engine copies and restores one
8
+ * without knowing which function owns it, because the rollback and replay rules
9
+ * of section 6 apply to every region at once. Nothing can copy a closure
10
+ * without knowing what is inside it, and rebuilding one by replaying its inputs
11
+ * is what 6.2 refuses in as many words: an engine does not re-seed an average
12
+ * from history, it puts back the record it copied.
13
+ *
14
+ * So a region is a flat record of numbers, booleans, strings and fixed length
15
+ * queues, and `copyState` is the mechanical copy. Every function in this
16
+ * library is written against one, and the tail form in `tail.ts` is the same
17
+ * step over a region nobody else can reach. That is what lets the one
18
+ * implementation serve both a library call folded over a series and an engine
19
+ * advancing a chart one bar at a time.
20
+ *
21
+ * Several functions share one region by taking different key prefixes, which is
22
+ * how a study built from three others keeps one flat record rather than a tree
23
+ * of them.
24
+ */
25
+ /** A region with nothing in it yet, which is what bar 0 finds. */
26
+ export function newState() {
27
+ return {};
28
+ }
29
+ /** The mechanical copy 2.11 asks for: one level, with queues cloned. */
30
+ export function copyState(record) {
31
+ const out = {};
32
+ for (const key of Object.keys(record)) {
33
+ const value = record[key];
34
+ out[key] = Array.isArray(value) ? [...value] : value;
35
+ }
36
+ return out;
37
+ }
38
+ /** A number held in a region, with a default for the bar it is first read on. */
39
+ export function slot(record, key, fallback) {
40
+ const value = record[key];
41
+ return typeof value === 'number' ? value : fallback;
42
+ }
43
+ /** A condition held in a region, false until something sets it. */
44
+ export function flag(record, key) {
45
+ return record[key] === true;
46
+ }
47
+ /**
48
+ * A queue held in a region, created on the bar it is first read on.
49
+ *
50
+ * The caller keeps it bounded. A queue that grew with the dataset would not be
51
+ * copyable in the sense 2.11 requires.
52
+ */
53
+ export function queue(record, key) {
54
+ const held = record[key];
55
+ if (Array.isArray(held))
56
+ return held;
57
+ const made = [];
58
+ record[key] = made;
59
+ return made;
60
+ }
61
+ /**
62
+ * A number held in a region that may honestly have none yet.
63
+ *
64
+ * `slot` answers with a fallback, which is what a running total wants. A study
65
+ * that remembers the previous bar's high wants the other answer: absence until
66
+ * a present value has been put there, so the bar after a hole is treated as the
67
+ * bar after a hole rather than as one following a zero.
68
+ */
69
+ export function held(record, key) {
70
+ const value = record[key];
71
+ return typeof value === 'number' ? value : null;
72
+ }
73
+ //# sourceMappingURL=region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.js","sourceRoot":"","sources":["../../../../src/core/stdlib/values/region.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAWH,kEAAkE;AAClE,MAAM,UAAU,QAAQ;IACtB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,IAAI,CAAC,MAAmB,EAAE,GAAW,EAAE,QAAgB;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,IAAI,CAAC,MAAmB,EAAE,GAAW;IACnD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,MAAmB,EAAE,GAAW;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,MAAmB,EAAE,GAAW;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The tail path, and why the whole-series form is defined in terms of it.
3
+ *
4
+ * A live chart recomputes on every tick. A study that rescans its whole history
5
+ * to produce one more bar makes a terminal slow in proportion to how much
6
+ * history the trader has loaded, and nobody notices until the day somebody
7
+ * scrolls back five years.
8
+ *
9
+ * So every function here is written once, as a tail: a small piece of state
10
+ * plus a step that takes this bar's input and returns this bar's output. The
11
+ * whole-series form is that step folded over the series and nothing else.
12
+ *
13
+ * That is not a convenience. `compiled-program.md` section 8.3 requires the two
14
+ * to agree to the last bit, and the only way to be sure of that is to have one
15
+ * implementation rather than two that are meant to match. A second batch
16
+ * implementation, however carefully written, is a second accumulation order
17
+ * waiting to drift.
18
+ *
19
+ * The state lives in a region (`region.ts`) rather than in the closure's own
20
+ * variables, so the same step an engine advances over a live chart is the step
21
+ * this folds over a series. `tailOf` is the whole of the tail form: a region
22
+ * nobody else can reach, and the step applied to it.
23
+ */
24
+ import type { StateRecord } from './region.js';
25
+ /**
26
+ * One bar in, one bar out, with everything the function remembers held inside.
27
+ *
28
+ * A tail is stateful and single use: it is fed bars in order, from bar 0, and
29
+ * each call advances it by one bar.
30
+ */
31
+ export interface Tail<In, Out> {
32
+ /** Advance by one bar and return that bar's output. */
33
+ next(input: In): Out;
34
+ }
35
+ /** A tail's step applied to a whole series, oldest bar first. */
36
+ export declare function fold<In, Out>(tail: Tail<In, Out>, inputs: readonly In[]): Out[];
37
+ /**
38
+ * A tail from a step: a private region, advanced one bar per call.
39
+ *
40
+ * The region is the same shape an engine hands a stateful call, so the function
41
+ * underneath does not know which of the two is driving it.
42
+ */
43
+ export declare function tailOf<In, Out>(step: (state: StateRecord, input: In) => Out): Tail<In, Out>;
44
+ //# sourceMappingURL=tail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/values/tail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;;;;GAKG;AACH,MAAM,WAAW,IAAI,CAAC,EAAE,EAAE,GAAG;IAC3B,uDAAuD;IACvD,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;CACtB;AAED,iEAAiE;AACjE,wBAAgB,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,CAI/E;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAO3F"}
@@ -0,0 +1,23 @@
1
+ import { newState } from './region.js';
2
+ /** A tail's step applied to a whole series, oldest bar first. */
3
+ export function fold(tail, inputs) {
4
+ const out = [];
5
+ for (const input of inputs)
6
+ out.push(tail.next(input));
7
+ return out;
8
+ }
9
+ /**
10
+ * A tail from a step: a private region, advanced one bar per call.
11
+ *
12
+ * The region is the same shape an engine hands a stateful call, so the function
13
+ * underneath does not know which of the two is driving it.
14
+ */
15
+ export function tailOf(step) {
16
+ const state = newState();
17
+ return {
18
+ next(input) {
19
+ return step(state, input);
20
+ },
21
+ };
22
+ }
23
+ //# sourceMappingURL=tail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tail.js","sourceRoot":"","sources":["../../../../src/core/stdlib/values/tail.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,iEAAiE;AACjE,MAAM,UAAU,IAAI,CAAU,IAAmB,EAAE,MAAqB;IACtE,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAU,IAA4C;IAC1E,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO;QACL,IAAI,CAAC,KAAS;YACZ,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * The absent value, and the two rules every result in this library obeys.
3
+ *
4
+ * Absence is a value of its own and is never a number. A warmup bar is absent,
5
+ * and anything computed from an absent value is absent. Returning zero instead
6
+ * would draw a line along the axis that looks exactly like data, and a reader
7
+ * has no way to tell the two apart.
8
+ *
9
+ * Not-a-number is not used as the sentinel, for the reason `compiled-program.md`
10
+ * section 3.4 gives: it would propagate through arithmetic by accident, which
11
+ * is the right answer for some operators and the wrong one for others, and it
12
+ * would turn an absence test into a floating point comparison.
13
+ */
14
+ /** A number, or absence. */
15
+ export type Value = number | null;
16
+ /** A series is one value per bar, oldest first. */
17
+ export type Series = readonly Value[];
18
+ /**
19
+ * A condition, one per bar: true, false, or absent.
20
+ *
21
+ * Absence is its own answer here too. A comparison against a warmup bar is
22
+ * absent rather than false, and the functions that consume a condition say
23
+ * which of the two they treat it as.
24
+ */
25
+ export type Flag = boolean | null;
26
+ /** A series of conditions, one per bar, oldest first. */
27
+ export type Flags = readonly Flag[];
28
+ /** Absence, written `none` in a script. */
29
+ export declare const NONE: Value;
30
+ /** True when the value is present, narrowing it to a number. */
31
+ export declare function isPresent(value: Value): value is number;
32
+ /**
33
+ * A computed number, made safe to return.
34
+ *
35
+ * Two rules from `compiled-program.md` section 3.1, applied at every value this
36
+ * library hands back:
37
+ *
38
+ * - A result with no finite real value is absent, not an infinity and not a
39
+ * not-a-number. `log(0)` and a division by zero inside a ratio study are the
40
+ * everyday cases.
41
+ * - Negative zero is normalised to positive zero, so nothing downstream can
42
+ * observe the sign of a zero and two engines cannot differ over it.
43
+ */
44
+ export declare function result(x: number): Value;
45
+ /**
46
+ * Element `index` of a series, or absence when the index falls off either end.
47
+ *
48
+ * Reading before the start of the dataset is absent rather than an error, which
49
+ * is what makes `history` and every lookback function fall out of one rule
50
+ * instead of a special case each.
51
+ */
52
+ export declare function at(values: Series, index: number): Value;
53
+ /**
54
+ * Whether a length argument is inside its contract: a whole number of one or
55
+ * more, per `stdlib.md` section 2.5.
56
+ *
57
+ * This library raises nothing. A length outside the contract is OS3004 at
58
+ * compile time when it is a literal and OS4003 at run time when it is computed,
59
+ * and both are raised before a call reaches here. The functions below use this
60
+ * only as a backstop, and a backstop returns absence rather than a guess: a
61
+ * wrong number drawn on a chart is worse than a gap.
62
+ */
63
+ export declare function isLength(length: number): boolean;
64
+ //# sourceMappingURL=value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/values/value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,4BAA4B;AAC5B,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;AAElC,mDAAmD;AACnD,MAAM,MAAM,MAAM,GAAG,SAAS,KAAK,EAAE,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;AAElC,yDAAyD;AACzD,MAAM,MAAM,KAAK,GAAG,SAAS,IAAI,EAAE,CAAC;AAEpC,2CAA2C;AAC3C,eAAO,MAAM,IAAI,EAAE,KAAY,CAAC;AAEhC,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAGvC;AAED;;;;;;GAMG;AACH,wBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAGvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The absent value, and the two rules every result in this library obeys.
3
+ *
4
+ * Absence is a value of its own and is never a number. A warmup bar is absent,
5
+ * and anything computed from an absent value is absent. Returning zero instead
6
+ * would draw a line along the axis that looks exactly like data, and a reader
7
+ * has no way to tell the two apart.
8
+ *
9
+ * Not-a-number is not used as the sentinel, for the reason `compiled-program.md`
10
+ * section 3.4 gives: it would propagate through arithmetic by accident, which
11
+ * is the right answer for some operators and the wrong one for others, and it
12
+ * would turn an absence test into a floating point comparison.
13
+ */
14
+ /** Absence, written `none` in a script. */
15
+ export const NONE = null;
16
+ /** True when the value is present, narrowing it to a number. */
17
+ export function isPresent(value) {
18
+ return value !== null;
19
+ }
20
+ /**
21
+ * A computed number, made safe to return.
22
+ *
23
+ * Two rules from `compiled-program.md` section 3.1, applied at every value this
24
+ * library hands back:
25
+ *
26
+ * - A result with no finite real value is absent, not an infinity and not a
27
+ * not-a-number. `log(0)` and a division by zero inside a ratio study are the
28
+ * everyday cases.
29
+ * - Negative zero is normalised to positive zero, so nothing downstream can
30
+ * observe the sign of a zero and two engines cannot differ over it.
31
+ */
32
+ export function result(x) {
33
+ if (!Number.isFinite(x))
34
+ return NONE;
35
+ return x === 0 ? 0 : x;
36
+ }
37
+ /**
38
+ * Element `index` of a series, or absence when the index falls off either end.
39
+ *
40
+ * Reading before the start of the dataset is absent rather than an error, which
41
+ * is what makes `history` and every lookback function fall out of one rule
42
+ * instead of a special case each.
43
+ */
44
+ export function at(values, index) {
45
+ const value = values[index];
46
+ return value === undefined ? NONE : value;
47
+ }
48
+ /**
49
+ * Whether a length argument is inside its contract: a whole number of one or
50
+ * more, per `stdlib.md` section 2.5.
51
+ *
52
+ * This library raises nothing. A length outside the contract is OS3004 at
53
+ * compile time when it is a literal and OS4003 at run time when it is computed,
54
+ * and both are raised before a call reaches here. The functions below use this
55
+ * only as a backstop, and a backstop returns absence rather than a guess: a
56
+ * wrong number drawn on a chart is worse than a gap.
57
+ */
58
+ export function isLength(length) {
59
+ return Number.isInteger(length) && length >= 1;
60
+ }
61
+ //# sourceMappingURL=value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../src/core/stdlib/values/value.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,2CAA2C;AAC3C,MAAM,CAAC,MAAM,IAAI,GAAU,IAAI,CAAC;AAEhC,gEAAgE;AAChE,MAAM,UAAU,SAAS,CAAC,KAAY;IACpC,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,EAAE,CAAC,MAAc,EAAE,KAAa;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The channel studies: `bollinger`, its two readings, `keltner` and `donchian`.
3
+ *
4
+ * Each returns an array holding this bar's outputs, in the order its entry in
5
+ * `stdlib.md` documents. **The array itself is never absent and never changes
6
+ * length**, per section 2.3: each element carries its own warmup and is absent
7
+ * until it is reached. An array that grew as warmup completed would make an
8
+ * index an out-of-range error at the left edge of a chart and nowhere else.
9
+ */
10
+ import type { Bar, Series, StateRecord, Tail, Value } from '../values/index.js';
11
+ import type { MaType } from '../averages/index.js';
12
+ import type { Gap } from './range.js';
13
+ /** `bollinger(src, len, mult)`: `[basis, upper, lower]`, all from bar `len - 1`. */
14
+ export declare function bollingerStep(state: StateRecord, key: string, value: Value, len: number | null, mult: number | null): Value[];
15
+ /** `bollinger(src, len, mult)` as a tail. */
16
+ export declare function bollingerTail(len?: number, mult?: number): Tail<Value, Value[]>;
17
+ /** `bollinger(src, len, mult)` over a whole series. */
18
+ export declare function bollinger(src: Series, len?: number, mult?: number): Value[][];
19
+ /** `bbWidth(src, len, mult)`: band width over the basis, from bar `len - 1`. */
20
+ export declare function bbWidthStep(state: StateRecord, key: string, value: Value, len: number | null, mult: number | null): Value;
21
+ /** `bbWidth(src, len, mult)` as a tail. */
22
+ export declare function bbWidthTail(len?: number, mult?: number): Tail<Value, Value>;
23
+ /** `bbWidth(src, len, mult)` over a whole series. */
24
+ export declare function bbWidth(src: Series, len?: number, mult?: number): Value[];
25
+ /** `bbPercent(src, len, mult)`: where price sits between the bands, from bar `len - 1`. */
26
+ export declare function bbPercentStep(state: StateRecord, key: string, value: Value, len: number | null, mult: number | null): Value;
27
+ /** `bbPercent(src, len, mult)` as a tail. */
28
+ export declare function bbPercentTail(len?: number, mult?: number): Tail<Value, Value>;
29
+ /** `bbPercent(src, len, mult)` over a whole series. */
30
+ export declare function bbPercent(src: Series, len?: number, mult?: number): Value[];
31
+ /**
32
+ * `keltner(len, mult, atrLen, maType)`: `[basis, upper, lower]`, all from bar
33
+ * `max(len, atrLen) - 1`.
34
+ *
35
+ * The same picture as `bollinger` built from average true range instead of
36
+ * deviation, so the rails widen on how far the instrument travels rather than
37
+ * on how dispersed its closes were.
38
+ */
39
+ export declare function keltnerStep(state: StateRecord, key: string, gap: Gap, close: Value, volume: Value, len: number | null, mult: number | null, atrLen: number | null, maType: MaType | null): Value[];
40
+ /** `keltner(len, mult, atrLen, maType)` as a tail. */
41
+ export declare function keltnerTail(len?: number, mult?: number, atrLen?: number, maType?: MaType): Tail<Bar, Value[]>;
42
+ /** `keltner(len, mult, atrLen, maType)` over a run of bars. */
43
+ export declare function keltner(bars: readonly Bar[], len?: number, mult?: number, atrLen?: number, maType?: MaType): Value[][];
44
+ /** `donchian(len)`: `[upper, basis, lower]`, all from bar `len - 1`. */
45
+ export declare function donchianStep(state: StateRecord, key: string, high: Value, low: Value, len: number | null): Value[];
46
+ /** `donchian(len)` as a tail. */
47
+ export declare function donchianTail(len?: number): Tail<Bar, Value[]>;
48
+ /** `donchian(len)` over a run of bars. */
49
+ export declare function donchian(bars: readonly Bar[], len?: number): Value[][];
50
+ //# sourceMappingURL=bands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bands.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/volatility/bands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { NONE, at, fold, isPresent, result, tailOf } from '../values/index.js';
2
+ import { maStep, smaStep } from '../averages/index.js';
3
+ import { extremeStep } from '../series/index.js';
4
+ import { stdevStep } from './deviation.js';
5
+ import { atrStep, gapOf } from './range.js';
6
+ /** `bollinger(src, len, mult)`: `[basis, upper, lower]`, all from bar `len - 1`. */
7
+ export function bollingerStep(state, key, value, len, mult) {
8
+ const middle = smaStep(state, `${key}q`, value, len);
9
+ const deviation = stdevStep(state, `${key}d`, value, len, false);
10
+ if (!isPresent(middle) || !isPresent(deviation) || mult === null)
11
+ return [middle, NONE, NONE];
12
+ return [middle, result(middle + mult * deviation), result(middle - mult * deviation)];
13
+ }
14
+ /** `bollinger(src, len, mult)` as a tail. */
15
+ export function bollingerTail(len = 20, mult = 2) {
16
+ return tailOf((state, value) => bollingerStep(state, '', value, len, mult));
17
+ }
18
+ /** `bollinger(src, len, mult)` over a whole series. */
19
+ export function bollinger(src, len = 20, mult = 2) {
20
+ return fold(bollingerTail(len, mult), src);
21
+ }
22
+ /** `bbWidth(src, len, mult)`: band width over the basis, from bar `len - 1`. */
23
+ export function bbWidthStep(state, key, value, len, mult) {
24
+ const trio = bollingerStep(state, key, value, len, mult);
25
+ const basis = at(trio, 0);
26
+ const upper = at(trio, 1);
27
+ const lower = at(trio, 2);
28
+ if (!isPresent(basis) || !isPresent(upper) || !isPresent(lower))
29
+ return NONE;
30
+ if (basis === 0)
31
+ return NONE;
32
+ return result((upper - lower) / basis);
33
+ }
34
+ /** `bbWidth(src, len, mult)` as a tail. */
35
+ export function bbWidthTail(len = 20, mult = 2) {
36
+ return tailOf((state, value) => bbWidthStep(state, '', value, len, mult));
37
+ }
38
+ /** `bbWidth(src, len, mult)` over a whole series. */
39
+ export function bbWidth(src, len = 20, mult = 2) {
40
+ return fold(bbWidthTail(len, mult), src);
41
+ }
42
+ /** `bbPercent(src, len, mult)`: where price sits between the bands, from bar `len - 1`. */
43
+ export function bbPercentStep(state, key, value, len, mult) {
44
+ const trio = bollingerStep(state, key, value, len, mult);
45
+ const upper = at(trio, 1);
46
+ const lower = at(trio, 2);
47
+ if (!isPresent(value) || !isPresent(upper) || !isPresent(lower))
48
+ return NONE;
49
+ const span = upper - lower;
50
+ if (span === 0)
51
+ return NONE;
52
+ return result((value - lower) / span);
53
+ }
54
+ /** `bbPercent(src, len, mult)` as a tail. */
55
+ export function bbPercentTail(len = 20, mult = 2) {
56
+ return tailOf((state, value) => bbPercentStep(state, '', value, len, mult));
57
+ }
58
+ /** `bbPercent(src, len, mult)` over a whole series. */
59
+ export function bbPercent(src, len = 20, mult = 2) {
60
+ return fold(bbPercentTail(len, mult), src);
61
+ }
62
+ /**
63
+ * `keltner(len, mult, atrLen, maType)`: `[basis, upper, lower]`, all from bar
64
+ * `max(len, atrLen) - 1`.
65
+ *
66
+ * The same picture as `bollinger` built from average true range instead of
67
+ * deviation, so the rails widen on how far the instrument travels rather than
68
+ * on how dispersed its closes were.
69
+ */
70
+ export function keltnerStep(state, key, gap, close, volume, len, mult, atrLen, maType) {
71
+ const middle = maStep(state, `${key}m`, { src: close, volume }, len, maType);
72
+ const width = atrStep(state, `${key}r`, gap, atrLen);
73
+ if (!isPresent(middle) || !isPresent(width) || mult === null)
74
+ return [middle, NONE, NONE];
75
+ return [middle, result(middle + mult * width), result(middle - mult * width)];
76
+ }
77
+ /** `keltner(len, mult, atrLen, maType)` as a tail. */
78
+ export function keltnerTail(len = 20, mult = 2, atrLen = 10, maType = 'ema') {
79
+ return tailOf((state, bar) => keltnerStep(state, '', gapOf(state, 'g', bar), bar.close, bar.volume, len, mult, atrLen, maType));
80
+ }
81
+ /** `keltner(len, mult, atrLen, maType)` over a run of bars. */
82
+ export function keltner(bars, len = 20, mult = 2, atrLen = 10, maType = 'ema') {
83
+ return fold(keltnerTail(len, mult, atrLen, maType), bars);
84
+ }
85
+ /** `donchian(len)`: `[upper, basis, lower]`, all from bar `len - 1`. */
86
+ export function donchianStep(state, key, high, low, len) {
87
+ const upper = extremeStep(state, `${key}h`, high, len, true, false);
88
+ const lower = extremeStep(state, `${key}l`, low, len, false, false);
89
+ if (!isPresent(upper) || !isPresent(lower))
90
+ return [upper, NONE, lower];
91
+ return [upper, result((upper + lower) / 2), lower];
92
+ }
93
+ /** `donchian(len)` as a tail. */
94
+ export function donchianTail(len = 20) {
95
+ return tailOf((state, bar) => donchianStep(state, '', bar.high, bar.low, len));
96
+ }
97
+ /** `donchian(len)` over a run of bars. */
98
+ export function donchian(bars, len = 20) {
99
+ return fold(donchianTail(len), bars);
100
+ }
101
+ //# sourceMappingURL=bands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bands.js","sourceRoot":"","sources":["../../../../src/core/stdlib/volatility/bands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * `variance` and `stdev`.
3
+ *
4
+ * **Population by default, the `len` divisor.** `stdlib.md` section 6 fixes it
5
+ * and gives the reason: that is what the band studies a chart has to reproduce
6
+ * use. `sample = true` switches to the `len - 1` divisor, so neither camp has
7
+ * to write the correction by hand and neither has to guess which one a chart
8
+ * drew.
9
+ *
10
+ * Two passes: the mean of the lookback first, then the deviations from it. The
11
+ * one pass arrangement that subtracts the square of the mean from the mean of
12
+ * the squares loses most of its significant digits on a price series, where the
13
+ * values are large and their spread is small, and can even produce a negative
14
+ * variance that then has to be floored at zero. A study whose implementation
15
+ * needs a floor to stay real is a study computing the wrong quantity.
16
+ */
17
+ import type { Series, StateRecord, Tail, Value } from '../values/index.js';
18
+ /** `variance(src, len, sample)`: the squared deviation over the lookback, from bar `len - 1`. */
19
+ export declare function varianceStep(state: StateRecord, key: string, value: Value, len: number | null, sample: boolean): Value;
20
+ /** `variance(src, len, sample)` as a tail. */
21
+ export declare function varianceTail(len: number, sample?: boolean): Tail<Value, Value>;
22
+ /** `variance(src, len, sample)` over a whole series. */
23
+ export declare function variance(src: Series, len: number, sample?: boolean): Value[];
24
+ /** `stdev(src, len, sample)`: the square root of the same, from bar `len - 1`. */
25
+ export declare function stdevStep(state: StateRecord, key: string, value: Value, len: number | null, sample: boolean): Value;
26
+ /** `stdev(src, len, sample)` as a tail. */
27
+ export declare function stdevTail(len: number, sample?: boolean): Tail<Value, Value>;
28
+ /** `stdev(src, len, sample)` over a whole series. */
29
+ export declare function stdev(src: Series, len: number, sample?: boolean): Value[];
30
+ /**
31
+ * The mean absolute deviation from the lookback's mean.
32
+ *
33
+ * Not a call of its own in `stdlib.md`, and here because `cci` is defined
34
+ * against it rather than against `stdev`: the 0.015 constant in that study is
35
+ * calibrated for this quantity, and substituting a standard deviation changes
36
+ * every reading.
37
+ */
38
+ export declare function meanDeviationStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
39
+ /** The mean absolute deviation as a tail. */
40
+ export declare function meanDeviationTail(len: number): Tail<Value, Value>;
41
+ /** The mean absolute deviation over a whole series. */
42
+ export declare function meanDeviation(src: Series, len: number): Value[];
43
+ //# sourceMappingURL=deviation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviation.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/volatility/deviation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3E,iGAAiG;AACjG,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,OAAO,GACd,KAAK,CAeP;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE5E;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,KAAK,EAAE,CAE1E;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,OAAO,GACd,KAAK,CAIP;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,KAAK,EAAE,CAEvE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAWP;AAED,6CAA6C;AAC7C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEjE;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE/D"}
@@ -0,0 +1,75 @@
1
+ import { NONE, fold, isPresent, result, ring, tailOf } from '../values/index.js';
2
+ /** `variance(src, len, sample)`: the squared deviation over the lookback, from bar `len - 1`. */
3
+ export function varianceStep(state, key, value, len, sample) {
4
+ const lookback = ring(state, key, len);
5
+ lookback.push(value);
6
+ if (len === null)
7
+ return NONE;
8
+ const divisor = sample ? len - 1 : len;
9
+ if (!lookback.complete() || divisor <= 0)
10
+ return NONE;
11
+ const mean = lookback.mean();
12
+ if (!isPresent(mean))
13
+ return NONE;
14
+ let squares = 0;
15
+ // Oldest bar first, the order of `lookback.ts`.
16
+ for (let back = len - 1; back >= 0; back -= 1) {
17
+ const deviation = lookback.at(back) - mean;
18
+ squares += deviation * deviation;
19
+ }
20
+ return result(squares / divisor);
21
+ }
22
+ /** `variance(src, len, sample)` as a tail. */
23
+ export function varianceTail(len, sample = false) {
24
+ return tailOf((state, value) => varianceStep(state, 'q', value, len, sample));
25
+ }
26
+ /** `variance(src, len, sample)` over a whole series. */
27
+ export function variance(src, len, sample = false) {
28
+ return fold(varianceTail(len, sample), src);
29
+ }
30
+ /** `stdev(src, len, sample)`: the square root of the same, from bar `len - 1`. */
31
+ export function stdevStep(state, key, value, len, sample) {
32
+ const squared = varianceStep(state, key, value, len, sample);
33
+ if (!isPresent(squared) || squared < 0)
34
+ return NONE;
35
+ return result(Math.sqrt(squared));
36
+ }
37
+ /** `stdev(src, len, sample)` as a tail. */
38
+ export function stdevTail(len, sample = false) {
39
+ return tailOf((state, value) => stdevStep(state, 'q', value, len, sample));
40
+ }
41
+ /** `stdev(src, len, sample)` over a whole series. */
42
+ export function stdev(src, len, sample = false) {
43
+ return fold(stdevTail(len, sample), src);
44
+ }
45
+ /**
46
+ * The mean absolute deviation from the lookback's mean.
47
+ *
48
+ * Not a call of its own in `stdlib.md`, and here because `cci` is defined
49
+ * against it rather than against `stdev`: the 0.015 constant in that study is
50
+ * calibrated for this quantity, and substituting a standard deviation changes
51
+ * every reading.
52
+ */
53
+ export function meanDeviationStep(state, key, value, len) {
54
+ const lookback = ring(state, key, len);
55
+ lookback.push(value);
56
+ if (len === null || !lookback.complete())
57
+ return NONE;
58
+ const mean = lookback.mean();
59
+ if (!isPresent(mean))
60
+ return NONE;
61
+ let total = 0;
62
+ for (let back = len - 1; back >= 0; back -= 1) {
63
+ total += Math.abs(lookback.at(back) - mean);
64
+ }
65
+ return result(total / len);
66
+ }
67
+ /** The mean absolute deviation as a tail. */
68
+ export function meanDeviationTail(len) {
69
+ return tailOf((state, value) => meanDeviationStep(state, 'q', value, len));
70
+ }
71
+ /** The mean absolute deviation over a whole series. */
72
+ export function meanDeviation(src, len) {
73
+ return fold(meanDeviationTail(len), src);
74
+ }
75
+ //# sourceMappingURL=deviation.js.map