openalgo-script 0.1.0-alpha.1 → 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 (990) hide show
  1. package/CHANGELOG.md +1200 -0
  2. package/README.md +49 -28
  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 +61 -6
  590. package/dist/core/index.d.ts.map +1 -1
  591. package/dist/core/index.js +48 -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/version.generated.d.ts +2 -2
  788. package/dist/core/version/version.generated.d.ts.map +1 -1
  789. package/dist/core/version/version.generated.js +2 -2
  790. package/dist/core/version/version.generated.js.map +1 -1
  791. package/package.json +38 -14
  792. package/spec/errors.json +382 -183
  793. package/src/adapters/charts/alerts.ts +116 -0
  794. package/src/adapters/charts/bars.ts +63 -0
  795. package/src/adapters/charts/candles.ts +137 -0
  796. package/src/adapters/charts/colours.ts +113 -0
  797. package/src/adapters/charts/columns.ts +99 -0
  798. package/src/adapters/charts/contract.ts +320 -0
  799. package/src/adapters/charts/descriptor.ts +199 -0
  800. package/src/adapters/charts/drawings.ts +213 -0
  801. package/src/adapters/charts/errors.ts +45 -0
  802. package/src/adapters/charts/fields.ts +74 -0
  803. package/src/adapters/charts/fills.ts +71 -0
  804. package/src/adapters/charts/index.ts +78 -0
  805. package/src/adapters/charts/levels.ts +92 -0
  806. package/src/adapters/charts/markers.ts +119 -0
  807. package/src/adapters/charts/paint.ts +101 -0
  808. package/src/adapters/charts/plots.ts +185 -0
  809. package/src/adapters/charts/produced.ts +68 -0
  810. package/src/adapters/charts/requests.ts +357 -0
  811. package/src/adapters/charts/run.ts +327 -0
  812. package/src/adapters/charts/settings.ts +273 -0
  813. package/src/adapters/charts/surfaces.ts +238 -0
  814. package/src/adapters/charts/tables.ts +155 -0
  815. package/src/core/catalogue/catalogue.generated.ts +17 -9
  816. package/src/core/catalogue/values.generated.ts +8 -0
  817. package/src/core/check/arguments.ts +126 -0
  818. package/src/core/check/call-sites.ts +385 -0
  819. package/src/core/check/call-warmup.ts +121 -0
  820. package/src/core/check/calls.ts +412 -0
  821. package/src/core/check/check.ts +183 -0
  822. package/src/core/check/checked.ts +228 -0
  823. package/src/core/check/checker.ts +393 -0
  824. package/src/core/check/conditional.ts +143 -0
  825. package/src/core/check/constant.ts +127 -0
  826. package/src/core/check/declaration.ts +230 -0
  827. package/src/core/check/expressions.ts +471 -0
  828. package/src/core/check/functions.ts +283 -0
  829. package/src/core/check/handles.ts +75 -0
  830. package/src/core/check/index.ts +67 -0
  831. package/src/core/check/library-bars.ts +194 -0
  832. package/src/core/check/library-orders.ts +290 -0
  833. package/src/core/check/library-output.ts +241 -0
  834. package/src/core/check/library-series.ts +457 -0
  835. package/src/core/check/library.ts +374 -0
  836. package/src/core/check/literals.ts +35 -0
  837. package/src/core/check/outputs.ts +152 -0
  838. package/src/core/check/statements.ts +465 -0
  839. package/src/core/check/suggest.ts +63 -0
  840. package/src/core/check/surface.ts +115 -0
  841. package/src/core/check/tags.ts +94 -0
  842. package/src/core/check/types.ts +260 -0
  843. package/src/core/check/warmup.ts +100 -0
  844. package/src/core/diagnostics/collector.ts +27 -1
  845. package/src/core/emit/calls.ts +415 -0
  846. package/src/core/emit/canonical.ts +81 -0
  847. package/src/core/emit/channels.ts +144 -0
  848. package/src/core/emit/code.ts +155 -0
  849. package/src/core/emit/colours.ts +75 -0
  850. package/src/core/emit/context.ts +461 -0
  851. package/src/core/emit/defaults.ts +150 -0
  852. package/src/core/emit/emit.ts +313 -0
  853. package/src/core/emit/events.ts +141 -0
  854. package/src/core/emit/expressions.ts +292 -0
  855. package/src/core/emit/functions.ts +195 -0
  856. package/src/core/emit/gaps.ts +44 -0
  857. package/src/core/emit/index.ts +74 -0
  858. package/src/core/emit/inputs.ts +179 -0
  859. package/src/core/emit/layout.ts +165 -0
  860. package/src/core/emit/meta.ts +104 -0
  861. package/src/core/emit/opcodes.ts +160 -0
  862. package/src/core/emit/outputs.ts +357 -0
  863. package/src/core/emit/pool.ts +102 -0
  864. package/src/core/emit/program.ts +385 -0
  865. package/src/core/emit/registers.ts +179 -0
  866. package/src/core/emit/request-scope.ts +52 -0
  867. package/src/core/emit/requests.ts +258 -0
  868. package/src/core/emit/requires.ts +91 -0
  869. package/src/core/emit/sha256.ts +119 -0
  870. package/src/core/emit/statements.ts +438 -0
  871. package/src/core/emit/values.ts +284 -0
  872. package/src/core/engine/alerts.ts +152 -0
  873. package/src/core/engine/arithmetic.ts +165 -0
  874. package/src/core/engine/bars.ts +224 -0
  875. package/src/core/engine/budget.ts +284 -0
  876. package/src/core/engine/channels.ts +171 -0
  877. package/src/core/engine/drawings.ts +127 -0
  878. package/src/core/engine/engine.ts +498 -0
  879. package/src/core/engine/errors.ts +100 -0
  880. package/src/core/engine/frames.ts +85 -0
  881. package/src/core/engine/grids.ts +98 -0
  882. package/src/core/engine/guard.ts +71 -0
  883. package/src/core/engine/host.ts +251 -0
  884. package/src/core/engine/index.ts +93 -0
  885. package/src/core/engine/inputs.ts +263 -0
  886. package/src/core/engine/ledger/call.ts +218 -0
  887. package/src/core/engine/ledger/closable.ts +269 -0
  888. package/src/core/engine/ledger/holdings.ts +354 -0
  889. package/src/core/engine/ledger/index.ts +28 -0
  890. package/src/core/engine/ledger/intent.ts +112 -0
  891. package/src/core/engine/ledger/ledger.ts +314 -0
  892. package/src/core/engine/ledger/place.ts +277 -0
  893. package/src/core/engine/ledger/positions.ts +123 -0
  894. package/src/core/engine/ledger/refuse.ts +378 -0
  895. package/src/core/engine/ledger/row.ts +318 -0
  896. package/src/core/engine/ledger/sizing.ts +292 -0
  897. package/src/core/engine/library/arrays.ts +316 -0
  898. package/src/core/engine/library/averages.ts +97 -0
  899. package/src/core/engine/library/binding.ts +325 -0
  900. package/src/core/engine/library/chart.ts +115 -0
  901. package/src/core/engine/library/colours.ts +111 -0
  902. package/src/core/engine/library/dates.ts +109 -0
  903. package/src/core/engine/library/index.ts +103 -0
  904. package/src/core/engine/library/maths.ts +134 -0
  905. package/src/core/engine/library/objects.ts +265 -0
  906. package/src/core/engine/library/oscillators.ts +124 -0
  907. package/src/core/engine/library/ranges.ts +51 -0
  908. package/src/core/engine/library/series.ts +236 -0
  909. package/src/core/engine/library/state.ts +47 -0
  910. package/src/core/engine/library/studies.ts +150 -0
  911. package/src/core/engine/library/text.ts +303 -0
  912. package/src/core/engine/library/trend.ts +79 -0
  913. package/src/core/engine/library/volume.ts +101 -0
  914. package/src/core/engine/load.ts +104 -0
  915. package/src/core/engine/machine.ts +446 -0
  916. package/src/core/engine/memory.ts +129 -0
  917. package/src/core/engine/operations.ts +171 -0
  918. package/src/core/engine/orders.ts +121 -0
  919. package/src/core/engine/registers.ts +104 -0
  920. package/src/core/engine/request-body.ts +328 -0
  921. package/src/core/engine/request-plan.ts +270 -0
  922. package/src/core/engine/requests.ts +382 -0
  923. package/src/core/engine/results.ts +41 -0
  924. package/src/core/engine/series.ts +82 -0
  925. package/src/core/engine/session/hours.ts +86 -0
  926. package/src/core/engine/session/index.ts +17 -0
  927. package/src/core/engine/session/record.ts +191 -0
  928. package/src/core/engine/session/spec.ts +45 -0
  929. package/src/core/engine/timeframe.ts +161 -0
  930. package/src/core/engine/types.ts +47 -0
  931. package/src/core/engine/values/heap.ts +295 -0
  932. package/src/core/engine/values/index.ts +34 -0
  933. package/src/core/engine/values/value.ts +158 -0
  934. package/src/core/engine/verify-budgets.ts +202 -0
  935. package/src/core/engine/verify-code.ts +332 -0
  936. package/src/core/engine/verify-requests.ts +255 -0
  937. package/src/core/engine/verify-shape.ts +164 -0
  938. package/src/core/engine/verify-tables.ts +176 -0
  939. package/src/core/engine/verify.ts +341 -0
  940. package/src/core/index.ts +128 -6
  941. package/src/core/parse/expressions.ts +1 -1
  942. package/src/core/parse/names.ts +29 -2
  943. package/src/core/stdlib/averages/exponential.ts +119 -0
  944. package/src/core/stdlib/averages/index.ts +45 -0
  945. package/src/core/stdlib/averages/select.ts +71 -0
  946. package/src/core/stdlib/averages/shaped.ts +161 -0
  947. package/src/core/stdlib/averages/simple.ts +139 -0
  948. package/src/core/stdlib/calendar/civil.ts +89 -0
  949. package/src/core/stdlib/calendar/fields.ts +124 -0
  950. package/src/core/stdlib/calendar/format.ts +71 -0
  951. package/src/core/stdlib/calendar/index.ts +15 -0
  952. package/src/core/stdlib/calendar/zone.ts +161 -0
  953. package/src/core/stdlib/index.ts +400 -0
  954. package/src/core/stdlib/maths/arithmetic.ts +74 -0
  955. package/src/core/stdlib/maths/elementary.ts +124 -0
  956. package/src/core/stdlib/maths/index.ts +43 -0
  957. package/src/core/stdlib/maths/rounding.ts +78 -0
  958. package/src/core/stdlib/momentum/convergence.ts +82 -0
  959. package/src/core/stdlib/momentum/index.ts +47 -0
  960. package/src/core/stdlib/momentum/pressure.ts +141 -0
  961. package/src/core/stdlib/momentum/rates.ts +188 -0
  962. package/src/core/stdlib/momentum/rsi.ts +49 -0
  963. package/src/core/stdlib/momentum/stochastic.ts +147 -0
  964. package/src/core/stdlib/series/changes.ts +177 -0
  965. package/src/core/stdlib/series/conditions.ts +74 -0
  966. package/src/core/stdlib/series/extremes.ts +92 -0
  967. package/src/core/stdlib/series/index.ts +83 -0
  968. package/src/core/stdlib/series/pivots.ts +63 -0
  969. package/src/core/stdlib/series/statistics.ts +207 -0
  970. package/src/core/stdlib/series/totals.ts +164 -0
  971. package/src/core/stdlib/trend/directional.ts +196 -0
  972. package/src/core/stdlib/trend/index.ts +13 -0
  973. package/src/core/stdlib/trend/psar.ts +131 -0
  974. package/src/core/stdlib/trend/supertrend.ts +100 -0
  975. package/src/core/stdlib/values/bar.ts +54 -0
  976. package/src/core/stdlib/values/index.ts +14 -0
  977. package/src/core/stdlib/values/lookback.ts +198 -0
  978. package/src/core/stdlib/values/region.ts +86 -0
  979. package/src/core/stdlib/values/tail.ts +58 -0
  980. package/src/core/stdlib/values/value.ts +82 -0
  981. package/src/core/stdlib/volatility/bands.ts +178 -0
  982. package/src/core/stdlib/volatility/deviation.ts +111 -0
  983. package/src/core/stdlib/volatility/index.ts +48 -0
  984. package/src/core/stdlib/volatility/measures.ts +96 -0
  985. package/src/core/stdlib/volatility/range.ts +143 -0
  986. package/src/core/stdlib/volume/accumulation.ts +152 -0
  987. package/src/core/stdlib/volume/flow.ts +173 -0
  988. package/src/core/stdlib/volume/index.ts +43 -0
  989. package/src/core/stdlib/volume/weighted.ts +101 -0
  990. package/src/core/version/version.generated.ts +2 -2
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Totals and counts over a lookback, and the three functions that deliberately
3
+ * ignore absent bars.
4
+ *
5
+ * `sum` propagates absence, as every lookback function does. `sumSkip`,
6
+ * `avgSkip` and `countPresent` do not, and they say so in their names because
7
+ * a function that quietly ignored a gap would report a total over a lookback it
8
+ * never had.
9
+ */
10
+ import type { Flag, Flags, Series, StateRecord, Tail, Value } from '../values/index.js';
11
+ import { NONE, fold, isPresent, result, ring, slot, tailOf } from '../values/index.js';
12
+
13
+ /** `sum(src, len)`: the total over the lookback, from bar `len - 1`. */
14
+ export function sumStep(
15
+ state: StateRecord,
16
+ key: string,
17
+ value: Value,
18
+ len: number | null,
19
+ ): Value {
20
+ const lookback = ring(state, key, len);
21
+ lookback.push(value);
22
+ return lookback.sum();
23
+ }
24
+
25
+ /** `sum(src, len)` as a tail. */
26
+ export function sumTail(len: number): Tail<Value, Value> {
27
+ return tailOf((state, value: Value) => sumStep(state, 'q', value, len));
28
+ }
29
+
30
+ /** `sum(src, len)` over a whole series. */
31
+ export function sum(src: Series, len: number): Value[] {
32
+ return fold(sumTail(len), src);
33
+ }
34
+
35
+ /**
36
+ * `cum(src)`: the running total from the first bar, from bar 0.
37
+ *
38
+ * An absent bar produces an absent bar out and leaves the total where it was.
39
+ * The alternatives are both wrong: treating absence as zero would report a
40
+ * total over bars that had no value, and propagating it into the total would
41
+ * end the series permanently at the first gap.
42
+ */
43
+ export function cumStep(state: StateRecord, key: string, value: Value): Value {
44
+ if (!isPresent(value)) return NONE;
45
+ const total = slot(state, key, 0) + value;
46
+ state[key] = total;
47
+ return result(total);
48
+ }
49
+
50
+ /** `cum(src)` as a tail. */
51
+ export function cumTail(): Tail<Value, Value> {
52
+ return tailOf((state, value: Value) => cumStep(state, 't', value));
53
+ }
54
+
55
+ /** `cum(src)` over a whole series. */
56
+ export function cum(src: Series): Value[] {
57
+ return fold(cumTail(), src);
58
+ }
59
+
60
+ /**
61
+ * `count(cond, len)`: how many of the last `len` bars the condition held on,
62
+ * from bar `len - 1`.
63
+ *
64
+ * An absent condition is a condition that did not hold, matching the rule that
65
+ * absence is false at a branch (`language.md` section 6). Propagating it
66
+ * instead would make a count over a condition built from an average absent for
67
+ * a second warmup on top of the average's own.
68
+ */
69
+ export function countStep(
70
+ state: StateRecord,
71
+ key: string,
72
+ cond: Flag,
73
+ len: number | null,
74
+ ): Value {
75
+ const lookback = ring(state, key, len);
76
+ lookback.push(cond === true ? 1 : 0);
77
+ return lookback.sum();
78
+ }
79
+
80
+ /** `count(cond, len)` as a tail. */
81
+ export function countTail(len: number): Tail<Flag, Value> {
82
+ return tailOf((state, cond: Flag) => countStep(state, 'q', cond, len));
83
+ }
84
+
85
+ /** `count(cond, len)` over a whole series. */
86
+ export function count(cond: Flags, len: number): Value[] {
87
+ return fold(countTail(len), cond);
88
+ }
89
+
90
+ /** `sumSkip(src, len)`: the total over the lookback, ignoring absent bars. */
91
+ export function sumSkipStep(
92
+ state: StateRecord,
93
+ key: string,
94
+ value: Value,
95
+ len: number | null,
96
+ ): Value {
97
+ const lookback = ring(state, key, len);
98
+ lookback.push(value);
99
+ return lookback.sumPresent();
100
+ }
101
+
102
+ /** `sumSkip(src, len)` as a tail. */
103
+ export function sumSkipTail(len: number): Tail<Value, Value> {
104
+ return tailOf((state, value: Value) => sumSkipStep(state, 'q', value, len));
105
+ }
106
+
107
+ /** `sumSkip(src, len)` over a whole series. */
108
+ export function sumSkip(src: Series, len: number): Value[] {
109
+ return fold(sumSkipTail(len), src);
110
+ }
111
+
112
+ /** `countPresent(src, len)`: how many bars of the lookback had a value. */
113
+ export function countPresentStep(
114
+ state: StateRecord,
115
+ key: string,
116
+ value: Value,
117
+ len: number | null,
118
+ ): Value {
119
+ const lookback = ring(state, key, len);
120
+ lookback.push(value);
121
+ return lookback.filled() ? lookback.presentCount() : NONE;
122
+ }
123
+
124
+ /** `countPresent(src, len)` as a tail. */
125
+ export function countPresentTail(len: number): Tail<Value, Value> {
126
+ return tailOf((state, value: Value) => countPresentStep(state, 'q', value, len));
127
+ }
128
+
129
+ /** `countPresent(src, len)` over a whole series. */
130
+ export function countPresent(src: Series, len: number): Value[] {
131
+ return fold(countPresentTail(len), src);
132
+ }
133
+
134
+ /**
135
+ * `avgSkip(src, len)`: the mean over the lookback, ignoring absent bars.
136
+ *
137
+ * A lookback with nothing present in it is absent, not zero: there is no mean of
138
+ * no values, and a division by zero is absence by the rule of `stdlib.md`
139
+ * section 2.4.
140
+ */
141
+ export function avgSkipStep(
142
+ state: StateRecord,
143
+ key: string,
144
+ value: Value,
145
+ len: number | null,
146
+ ): Value {
147
+ const lookback = ring(state, key, len);
148
+ lookback.push(value);
149
+ if (!lookback.filled()) return NONE;
150
+ const counted = lookback.presentCount();
151
+ const total = lookback.sumPresent();
152
+ if (counted === 0 || !isPresent(total)) return NONE;
153
+ return result(total / counted);
154
+ }
155
+
156
+ /** `avgSkip(src, len)` as a tail. */
157
+ export function avgSkipTail(len: number): Tail<Value, Value> {
158
+ return tailOf((state, value: Value) => avgSkipStep(state, 'q', value, len));
159
+ }
160
+
161
+ /** `avgSkip(src, len)` over a whole series. */
162
+ export function avgSkip(src: Series, len: number): Value[] {
163
+ return fold(avgSkipTail(len), src);
164
+ }
@@ -0,0 +1,196 @@
1
+ /**
2
+ * `adx(diLen, adxLen)`, `aroon(len)` and `ichimoku(convLen, baseLen, spanLen)`:
3
+ * how strong the trend is, which side owns it, and the five line frame.
4
+ *
5
+ * Each is written once, as a step over a state region, and its tail is that
6
+ * step over a region of its own. An engine calls the same step against the
7
+ * region it holds for the call site, so there is no second arrangement of the
8
+ * arithmetic anywhere for the two to drift apart in.
9
+ */
10
+ import type { Bar, StateRecord, Tail, Value } from '../values/index.js';
11
+ import { NONE, fold, held, isPresent, result, ring, tailOf } from '../values/index.js';
12
+ import { rmaStep } from '../averages/index.js';
13
+ import { extremeStep } from '../series/index.js';
14
+ import type { Gap } from '../volatility/index.js';
15
+ import { gapOf, trueRangeOf } from '../volatility/index.js';
16
+
17
+ /**
18
+ * `adx(diLen, adxLen)`: `[adx, plusDI, minusDI]`, elements 1 and 2 from bar
19
+ * `diLen` and element 0 from bar `diLen + adxLen - 1`.
20
+ *
21
+ * Directional movement is the part of this bar's range that lies outside the
22
+ * previous bar's, on whichever side is larger. It needs the bar before it, so
23
+ * the smoothing's lookback is bars 1 to `diLen` and the first reading is at bar
24
+ * `diLen`. The true range in the denominator uses the gap-aware form for the
25
+ * same reason, so all three smoothed quantities cover the same bars: seeding
26
+ * one of them a bar earlier than the other two would bias every reading after
27
+ * it while still looking entirely plausible.
28
+ *
29
+ * The previous bar's two extremes are held in the region, because they are the
30
+ * arithmetic's own history. The previous close is not: it arrives with the gap,
31
+ * for the reason `range.ts` sets out.
32
+ */
33
+ export function adxStep(
34
+ state: StateRecord,
35
+ key: string,
36
+ gap: Gap,
37
+ diLen: number | null,
38
+ adxLen: number | null,
39
+ ): Value[] {
40
+ const highKey = `${key}h`;
41
+ const lowKey = `${key}l`;
42
+ const seenKey = `${key}k`;
43
+ const beforeHigh = held(state, highKey);
44
+ const beforeLow = held(state, lowKey);
45
+ const started = state[seenKey] === true;
46
+ state[seenKey] = true;
47
+ state[highKey] = gap.high;
48
+ state[lowKey] = gap.low;
49
+
50
+ let upMove: Value = NONE;
51
+ let downMove: Value = NONE;
52
+ if (
53
+ started &&
54
+ isPresent(gap.high) &&
55
+ isPresent(gap.low) &&
56
+ isPresent(beforeHigh) &&
57
+ isPresent(beforeLow)
58
+ ) {
59
+ const up = gap.high - beforeHigh;
60
+ const down = beforeLow - gap.low;
61
+ upMove = up > down && up > 0 ? result(up) : 0;
62
+ downMove = down > up && down > 0 ? result(down) : 0;
63
+ }
64
+
65
+ const trueRange = rmaStep(state, `${key}r`, trueRangeOf(gap, false), diLen);
66
+ const rise = rmaStep(state, `${key}u`, upMove, diLen);
67
+ const fall = rmaStep(state, `${key}d`, downMove, diLen);
68
+
69
+ let plus: Value = NONE;
70
+ let minus: Value = NONE;
71
+ if (isPresent(trueRange) && trueRange !== 0) {
72
+ if (isPresent(rise)) plus = result((rise / trueRange) * 100);
73
+ if (isPresent(fall)) minus = result((fall / trueRange) * 100);
74
+ }
75
+
76
+ let spread: Value = NONE;
77
+ if (isPresent(plus) && isPresent(minus)) {
78
+ const total = plus + minus;
79
+ spread = total > 0 ? result((Math.abs(plus - minus) / total) * 100) : 0;
80
+ }
81
+
82
+ return [rmaStep(state, `${key}x`, spread, adxLen), plus, minus];
83
+ }
84
+
85
+ /** `adx(diLen, adxLen)` as a tail. */
86
+ export function adxTail(diLen = 14, adxLen = 14): Tail<Bar, Value[]> {
87
+ return tailOf((state, bar: Bar) => adxStep(state, '', gapOf(state, 'g', bar), diLen, adxLen));
88
+ }
89
+
90
+ /** `adx(diLen, adxLen)` over a run of bars. */
91
+ export function adx(bars: readonly Bar[], diLen = 14, adxLen = 14): Value[][] {
92
+ return fold(adxTail(diLen, adxLen), bars);
93
+ }
94
+
95
+ /**
96
+ * `aroon(len)`: `[up, down]`, both from bar `len`.
97
+ *
98
+ * How recently the lookback's high and low were set, as a percentage: 100 when it
99
+ * was this bar, 0 when it was `len` bars ago. The lookback is `len + 1` bars
100
+ * wide, because a reading of 0 has to be reachable and an extreme `len` bars
101
+ * back has to still be inside the lookback for that. That extra bar is where the
102
+ * declared warmup of bar `len` rather than bar `len - 1` comes from.
103
+ */
104
+ export function aroonStep(
105
+ state: StateRecord,
106
+ key: string,
107
+ high: Value,
108
+ low: Value,
109
+ len: number | null,
110
+ ): Value[] {
111
+ const wide = len === null ? null : len + 1;
112
+ const highAge = extremeStep(state, `${key}h`, high, wide, true, true);
113
+ const lowAge = extremeStep(state, `${key}l`, low, wide, false, true);
114
+ if (len === null) return [NONE, NONE];
115
+ const up = isPresent(highAge) ? result((100 * (len - highAge)) / len) : NONE;
116
+ const down = isPresent(lowAge) ? result((100 * (len - lowAge)) / len) : NONE;
117
+ return [up, down];
118
+ }
119
+
120
+ /** `aroon(len)` as a tail. */
121
+ export function aroonTail(len = 14): Tail<Bar, Value[]> {
122
+ return tailOf((state, bar: Bar) => aroonStep(state, '', bar.high, bar.low, len));
123
+ }
124
+
125
+ /** `aroon(len)` over a run of bars. */
126
+ export function aroon(bars: readonly Bar[], len = 14): Value[][] {
127
+ return fold(aroonTail(len), bars);
128
+ }
129
+
130
+ /**
131
+ * `ichimoku(convLen, baseLen, spanLen)`: `[conversion, base, spanA, spanB,
132
+ * lagging]`, at bars `convLen - 1`, `baseLen - 1`, `baseLen - 1`,
133
+ * `spanLen - 1` and `baseLen - 1`.
134
+ *
135
+ * Each of the first four lines is the midpoint of a lookback's outright high and
136
+ * low, over a different length. **The spans are returned undisplaced, at the
137
+ * bar they are computed on**, per `stdlib.md` section 4: a study draws them
138
+ * forward with the plot's `offset` argument, because a series that has already
139
+ * been shifted cannot be compared with anything else in the script without
140
+ * shifting it back.
141
+ *
142
+ * The lagging line is this bar's close, and it is drawn backward by the same
143
+ * plot argument. It is absent until bar `baseLen - 1`, which is the warmup the
144
+ * specification declares for it, and which is the first bar there is enough
145
+ * history for the displacement to land on.
146
+ */
147
+ export function ichimokuStep(
148
+ state: StateRecord,
149
+ key: string,
150
+ bar: Bar,
151
+ convLen: number | null,
152
+ baseLen: number | null,
153
+ spanLen: number | null,
154
+ ): Value[] {
155
+ const near = midpointStep(state, `${key}c`, bar, convLen);
156
+ const middle = midpointStep(state, `${key}b`, bar, baseLen);
157
+ const leading = isPresent(near) && isPresent(middle) ? result((near + middle) / 2) : NONE;
158
+ const behind = midpointStep(state, `${key}s`, bar, spanLen);
159
+ const closes = ring(state, `${key}g`, baseLen);
160
+ closes.push(bar.close);
161
+ const lagging = closes.filled() ? closes.at(0) : NONE;
162
+ return [near, middle, leading, behind, lagging];
163
+ }
164
+
165
+ /** `ichimoku(convLen, baseLen, spanLen)` as a tail. */
166
+ export function ichimokuTail(convLen = 9, baseLen = 26, spanLen = 52): Tail<Bar, Value[]> {
167
+ return tailOf((state, bar: Bar) => ichimokuStep(state, '', bar, convLen, baseLen, spanLen));
168
+ }
169
+
170
+ /** `ichimoku(convLen, baseLen, spanLen)` over a run of bars. */
171
+ export function ichimoku(
172
+ bars: readonly Bar[],
173
+ convLen = 9,
174
+ baseLen = 26,
175
+ spanLen = 52,
176
+ ): Value[][] {
177
+ return fold(ichimokuTail(convLen, baseLen, spanLen), bars);
178
+ }
179
+
180
+ /** The midpoint of a lookback's outright high and low. */
181
+ function midpointStep(state: StateRecord, key: string, bar: Bar, len: number | null): Value {
182
+ const highs = ring(state, `${key}h`, len);
183
+ const lows = ring(state, `${key}l`, len);
184
+ highs.push(bar.high);
185
+ lows.push(bar.low);
186
+ if (len === null || !highs.complete() || !lows.complete()) return NONE;
187
+ let top = highs.at(len - 1) as number;
188
+ let bottom = lows.at(len - 1) as number;
189
+ for (let back = len - 2; back >= 0; back -= 1) {
190
+ const high = highs.at(back) as number;
191
+ const low = lows.at(back) as number;
192
+ if (high > top) top = high;
193
+ if (low < bottom) bottom = low;
194
+ }
195
+ return result((top + bottom) / 2);
196
+ }
@@ -0,0 +1,13 @@
1
+ export { supertrend, supertrendStep, supertrendTail } from './supertrend.js';
2
+ export { psar, psarStep, psarTail } from './psar.js';
3
+ export {
4
+ adx,
5
+ adxStep,
6
+ adxTail,
7
+ aroon,
8
+ aroonStep,
9
+ aroonTail,
10
+ ichimoku,
11
+ ichimokuStep,
12
+ ichimokuTail,
13
+ } from './directional.js';
@@ -0,0 +1,131 @@
1
+ /**
2
+ * `psar(start, step, max)`: `[sar, direction]`, both from bar 1.
3
+ *
4
+ * A stop that accelerates toward price. It sits below price in an uptrend and
5
+ * above it in a downtrend, moves a fraction of the way to the extreme reached
6
+ * so far on every bar, and that fraction grows each time a new extreme is set,
7
+ * up to a ceiling. When price reaches the stop the trend flips and the stop
8
+ * restarts at the extreme the old trend had reached.
9
+ *
10
+ * Seeded from bar 0's range, per `stdlib.md` section 4: the direction at bar 1
11
+ * is taken from whether that bar closed above bar 0, and the stop starts at bar
12
+ * 0's low in an uptrend or its high in a downtrend.
13
+ *
14
+ * `direction` is -1 long and 1 short, the same convention `supertrend` uses.
15
+ *
16
+ * **What this does not include**, said plainly rather than left to be
17
+ * discovered: the clamp some published versions apply, which forbids the stop
18
+ * from entering the previous two bars' range. `stdlib.md` section 20.3 fixes
19
+ * its absence, so a stop drawn with the clamp is a different function rather
20
+ * than a different arrangement of this one.
21
+ *
22
+ * Everything the algorithm carries between bars is a number or a flag in a
23
+ * state region, which is what lets an engine advance one bar at a time over the
24
+ * same step this file's tail folds over a run.
25
+ */
26
+ import type { Bar, StateRecord, Tail, Value } from '../values/index.js';
27
+ import { NONE, flag, fold, held, isPresent, result, slot, tailOf } from '../values/index.js';
28
+
29
+ /** `psar(start, step, max)`. */
30
+ export function psarStep(
31
+ state: StateRecord,
32
+ key: string,
33
+ bar: Bar,
34
+ start: number | null,
35
+ step: number | null,
36
+ ceiling: number | null,
37
+ ): Value[] {
38
+ const seenKey = `${key}k`;
39
+ const beforeHigh = held(state, `${key}h`);
40
+ const beforeLow = held(state, `${key}l`);
41
+ const beforeClose = held(state, `${key}c`);
42
+ const started = state[seenKey] === true;
43
+ state[seenKey] = true;
44
+ state[`${key}h`] = bar.high;
45
+ state[`${key}l`] = bar.low;
46
+ state[`${key}c`] = bar.close;
47
+
48
+ if (start === null || step === null || ceiling === null) return [NONE, NONE];
49
+ if (!isPresent(bar.high) || !isPresent(bar.low) || !isPresent(bar.close)) {
50
+ return [NONE, NONE];
51
+ }
52
+
53
+ const seededKey = `${key}s`;
54
+ const longKey = `${key}g`;
55
+ const extremeKey = `${key}e`;
56
+ const stopKey = `${key}p`;
57
+ const rateKey = `${key}a`;
58
+
59
+ // Seeding waits for a pair of complete bars rather than for bar 1 by
60
+ // number. On clean data that is bar 1, which is the declared warmup; on
61
+ // data with a hole at the start it is the first bar the seed can honestly
62
+ // be taken from, rather than a stop placed at whatever the state happened
63
+ // to hold.
64
+ if (!flag(state, seededKey)) {
65
+ if (!started) return [NONE, NONE];
66
+ if (!isPresent(beforeHigh) || !isPresent(beforeLow) || !isPresent(beforeClose)) {
67
+ return [NONE, NONE];
68
+ }
69
+ const up = bar.close > beforeClose;
70
+ const seed = up ? beforeLow : beforeHigh;
71
+ state[longKey] = up;
72
+ state[extremeKey] = up ? bar.high : bar.low;
73
+ state[stopKey] = seed;
74
+ state[rateKey] = start;
75
+ state[seededKey] = true;
76
+ return [result(seed), up ? -1 : 1];
77
+ }
78
+
79
+ let long = flag(state, longKey);
80
+ let extreme = slot(state, extremeKey, 0);
81
+ let acceleration = slot(state, rateKey, start);
82
+ let stop = slot(state, stopKey, 0);
83
+
84
+ stop = stop + acceleration * (extreme - stop);
85
+
86
+ if (long) {
87
+ if (stop > bar.low) {
88
+ long = false;
89
+ stop = extreme;
90
+ extreme = bar.low;
91
+ acceleration = start;
92
+ }
93
+ } else if (stop < bar.high) {
94
+ long = true;
95
+ stop = extreme;
96
+ extreme = bar.high;
97
+ acceleration = start;
98
+ }
99
+
100
+ if (long) {
101
+ if (bar.high > extreme) {
102
+ extreme = bar.high;
103
+ acceleration = Math.min(acceleration + step, ceiling);
104
+ }
105
+ } else if (bar.low < extreme) {
106
+ extreme = bar.low;
107
+ acceleration = Math.min(acceleration + step, ceiling);
108
+ }
109
+
110
+ state[longKey] = long;
111
+ state[extremeKey] = extreme;
112
+ state[stopKey] = stop;
113
+ state[rateKey] = acceleration;
114
+
115
+ return [result(stop), long ? -1 : 1];
116
+ }
117
+
118
+ /** `psar(start, step, max)` as a tail. */
119
+ export function psarTail(start = 0.02, step = 0.02, ceiling = 0.2): Tail<Bar, Value[]> {
120
+ return tailOf((state, bar: Bar) => psarStep(state, '', bar, start, step, ceiling));
121
+ }
122
+
123
+ /** `psar(start, step, max)` over a run of bars. */
124
+ export function psar(
125
+ bars: readonly Bar[],
126
+ start = 0.02,
127
+ step = 0.02,
128
+ ceiling = 0.2,
129
+ ): Value[][] {
130
+ return fold(psarTail(start, step, ceiling), bars);
131
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * `supertrend(factor, atrLen)`: `[line, direction]`, both from bar `atrLen`.
3
+ *
4
+ * A trailing band built from average true range, which ratchets in the
5
+ * direction of the trend and never gives ground: the upper band may only fall
6
+ * while price stays below it, the lower band may only rise while price stays
7
+ * above it, and the line flips to the other band when price closes through the
8
+ * one it was following.
9
+ *
10
+ * **The first value is at bar `atrLen`, one bar after `atr` has one.** The band
11
+ * carry-forward and the flip test both read the previous bar's close and the
12
+ * previous bar's bands, and on the bar average true range first exists there is
13
+ * no previous bar of either. That bar seeds the state and reports nothing,
14
+ * which is what `stdlib.md` section 4 declares. An implementation that reported
15
+ * it would be reporting a direction chosen by its own seeding rule rather than
16
+ * by the data.
17
+ *
18
+ * `direction` is -1 long and 1 short, the sign of the side the band is
19
+ * protecting against, and it is a number rather than a bool so that
20
+ * `direction != direction[1]` reads as the flip test.
21
+ */
22
+ import type { Bar, StateRecord, Tail, Value } from '../values/index.js';
23
+ import { NONE, flag, fold, hl2, isPresent, result, slot, tailOf } from '../values/index.js';
24
+ import type { Gap } from '../volatility/index.js';
25
+ import { atrStep, gapOf } from '../volatility/index.js';
26
+
27
+ /** `supertrend(factor, atrLen)`. */
28
+ export function supertrendStep(
29
+ state: StateRecord,
30
+ key: string,
31
+ gap: Gap,
32
+ close: Value,
33
+ factor: number | null,
34
+ atrLen: number | null,
35
+ ): Value[] {
36
+ const width = atrStep(state, key, gap, atrLen);
37
+ const midpoint = hl2(gap);
38
+ if (!isPresent(width) || !isPresent(midpoint) || !isPresent(close) || factor === null) {
39
+ return [NONE, NONE];
40
+ }
41
+
42
+ const rawUpper = midpoint + factor * width;
43
+ const rawLower = midpoint - factor * width;
44
+ const seeded = flag(state, `${key}k`);
45
+ const previousUpper = slot(state, `${key}pu`, 0);
46
+ const previousLower = slot(state, `${key}pl`, 0);
47
+ const previousClose = slot(state, `${key}pc`, 0);
48
+ let followingUpper = state[`${key}fu`] !== false;
49
+
50
+ // The band holds where it is unless price broke it or it moved inward.
51
+ const upper = !seeded
52
+ ? rawUpper
53
+ : rawUpper < previousUpper || previousClose > previousUpper
54
+ ? rawUpper
55
+ : previousUpper;
56
+ const lower = !seeded
57
+ ? rawLower
58
+ : rawLower > previousLower || previousClose < previousLower
59
+ ? rawLower
60
+ : previousLower;
61
+
62
+ let line: number;
63
+ if (!seeded || followingUpper) {
64
+ if (close <= upper) {
65
+ line = upper;
66
+ followingUpper = true;
67
+ } else {
68
+ line = lower;
69
+ followingUpper = false;
70
+ }
71
+ } else if (close >= lower) {
72
+ line = lower;
73
+ followingUpper = false;
74
+ } else {
75
+ line = upper;
76
+ followingUpper = true;
77
+ }
78
+
79
+ const first = !seeded;
80
+ state[`${key}k`] = true;
81
+ state[`${key}pu`] = upper;
82
+ state[`${key}pl`] = lower;
83
+ state[`${key}pc`] = close;
84
+ state[`${key}fu`] = followingUpper;
85
+
86
+ if (first) return [NONE, NONE];
87
+ return [result(line), followingUpper ? 1 : -1];
88
+ }
89
+
90
+ /** `supertrend(factor, atrLen)` as a tail. */
91
+ export function supertrendTail(factor = 3, atrLen = 10): Tail<Bar, Value[]> {
92
+ return tailOf((state, bar: Bar) =>
93
+ supertrendStep(state, '', gapOf(state, 'g', bar), bar.close, factor, atrLen),
94
+ );
95
+ }
96
+
97
+ /** `supertrend(factor, atrLen)` over a run of bars. */
98
+ export function supertrend(bars: readonly Bar[], factor = 3, atrLen = 10): Value[][] {
99
+ return fold(supertrendTail(factor, atrLen), bars);
100
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * A bar, and the derived prices a study reaches for by name.
3
+ *
4
+ * The functions `stdlib.md` writes without a source argument, `atr(len)` and
5
+ * `cci(len)` among them, read the bar rather than a series. This library is
6
+ * pure, so it takes the bar explicitly and an engine binds it; the function
7
+ * names and the arithmetic are the specification's, the plumbing is not.
8
+ *
9
+ * `volume` is absent, not zero, on an instrument the host has no volume for
10
+ * (`stdlib.md` section 3.1). Zero is a real reading meaning nobody traded, and
11
+ * conflating the two would make a volume study draw a flat line where it should
12
+ * draw nothing.
13
+ */
14
+ import type { Value } from './value.js';
15
+ import { NONE, isPresent, result } from './value.js';
16
+
17
+ /** One bar of price and quantity. */
18
+ export interface Bar {
19
+ readonly open: Value;
20
+ readonly high: Value;
21
+ readonly low: Value;
22
+ readonly close: Value;
23
+ readonly volume: Value;
24
+ }
25
+
26
+ /**
27
+ * `(high + low) / 2`, the bar's midpoint.
28
+ *
29
+ * It takes the two extremes rather than the whole bar, because the studies
30
+ * built on a range hold those two and the close before them rather than a bar.
31
+ */
32
+ export function hl2(bar: { readonly high: Value; readonly low: Value }): Value {
33
+ if (!isPresent(bar.high) || !isPresent(bar.low)) return NONE;
34
+ return result((bar.high + bar.low) / 2);
35
+ }
36
+
37
+ /** `(high + low + close) / 3`, the typical price. */
38
+ export function hlc3(bar: Bar): Value {
39
+ if (!isPresent(bar.high) || !isPresent(bar.low) || !isPresent(bar.close)) return NONE;
40
+ return result((bar.high + bar.low + bar.close) / 3);
41
+ }
42
+
43
+ /** `(open + high + low + close) / 4`, the average price. */
44
+ export function ohlc4(bar: Bar): Value {
45
+ if (!isPresent(bar.open) || !isPresent(bar.high)) return NONE;
46
+ if (!isPresent(bar.low) || !isPresent(bar.close)) return NONE;
47
+ return result((bar.open + bar.high + bar.low + bar.close) / 4);
48
+ }
49
+
50
+ /** `(high + low + close + close) / 4`, the close-weighted average price. */
51
+ export function hlcc4(bar: Bar): Value {
52
+ if (!isPresent(bar.high) || !isPresent(bar.low) || !isPresent(bar.close)) return NONE;
53
+ return result((bar.high + bar.low + bar.close + bar.close) / 4);
54
+ }
@@ -0,0 +1,14 @@
1
+ export type { Flag, Flags, Series, Value } from './value.js';
2
+ export { NONE, at, isLength, isPresent, result } from './value.js';
3
+
4
+ export type { StateField, StateRecord, StateSlot } from './region.js';
5
+ export { copyState, flag, held, newState, queue, slot } from './region.js';
6
+
7
+ export type { Tail } from './tail.js';
8
+ export { fold, tailOf } from './tail.js';
9
+
10
+ export type { Lookback, Recurrence } from './lookback.js';
11
+ export { makeLookback, ring, smoothed } from './lookback.js';
12
+
13
+ export type { Bar } from './bar.js';
14
+ export { hl2, hlc3, hlcc4, ohlc4 } from './bar.js';