openalgo-script 0.1.0-alpha.1 → 0.4.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.
- package/CHANGELOG.md +1469 -0
- package/README.md +85 -30
- package/dist/adapters/charts/alerts.d.ts +70 -0
- package/dist/adapters/charts/alerts.d.ts.map +1 -0
- package/dist/adapters/charts/alerts.js +52 -0
- package/dist/adapters/charts/alerts.js.map +1 -0
- package/dist/adapters/charts/bars.d.ts +39 -0
- package/dist/adapters/charts/bars.d.ts.map +1 -0
- package/dist/adapters/charts/bars.js +32 -0
- package/dist/adapters/charts/bars.js.map +1 -0
- package/dist/adapters/charts/candles.d.ts +40 -0
- package/dist/adapters/charts/candles.d.ts.map +1 -0
- package/dist/adapters/charts/candles.js +85 -0
- package/dist/adapters/charts/candles.js.map +1 -0
- package/dist/adapters/charts/colours.d.ts +47 -0
- package/dist/adapters/charts/colours.d.ts.map +1 -0
- package/dist/adapters/charts/colours.js +80 -0
- package/dist/adapters/charts/colours.js.map +1 -0
- package/dist/adapters/charts/columns.d.ts +37 -0
- package/dist/adapters/charts/columns.d.ts.map +1 -0
- package/dist/adapters/charts/columns.js +56 -0
- package/dist/adapters/charts/columns.js.map +1 -0
- package/dist/adapters/charts/contract.d.ts +278 -0
- package/dist/adapters/charts/contract.d.ts.map +1 -0
- package/dist/adapters/charts/contract.js +2 -0
- package/dist/adapters/charts/contract.js.map +1 -0
- package/dist/adapters/charts/descriptor.d.ts +48 -0
- package/dist/adapters/charts/descriptor.d.ts.map +1 -0
- package/dist/adapters/charts/descriptor.js +111 -0
- package/dist/adapters/charts/descriptor.js.map +1 -0
- package/dist/adapters/charts/drawings.d.ts +43 -0
- package/dist/adapters/charts/drawings.d.ts.map +1 -0
- package/dist/adapters/charts/drawings.js +172 -0
- package/dist/adapters/charts/drawings.js.map +1 -0
- package/dist/adapters/charts/errors.d.ts +28 -0
- package/dist/adapters/charts/errors.d.ts.map +1 -0
- package/dist/adapters/charts/errors.js +21 -0
- package/dist/adapters/charts/errors.js.map +1 -0
- package/dist/adapters/charts/fields.d.ts +33 -0
- package/dist/adapters/charts/fields.d.ts.map +1 -0
- package/dist/adapters/charts/fields.js +51 -0
- package/dist/adapters/charts/fields.js.map +1 -0
- package/dist/adapters/charts/fills.d.ts +23 -0
- package/dist/adapters/charts/fills.d.ts.map +1 -0
- package/dist/adapters/charts/fills.js +48 -0
- package/dist/adapters/charts/fills.js.map +1 -0
- package/dist/adapters/charts/index.d.ts +37 -0
- package/dist/adapters/charts/index.d.ts.map +1 -0
- package/dist/adapters/charts/index.js +33 -0
- package/dist/adapters/charts/index.js.map +1 -0
- package/dist/adapters/charts/levels.d.ts +39 -0
- package/dist/adapters/charts/levels.d.ts.map +1 -0
- package/dist/adapters/charts/levels.js +61 -0
- package/dist/adapters/charts/levels.js.map +1 -0
- package/dist/adapters/charts/markers.d.ts +41 -0
- package/dist/adapters/charts/markers.d.ts.map +1 -0
- package/dist/adapters/charts/markers.js +75 -0
- package/dist/adapters/charts/markers.js.map +1 -0
- package/dist/adapters/charts/paint.d.ts +61 -0
- package/dist/adapters/charts/paint.d.ts.map +1 -0
- package/dist/adapters/charts/paint.js +47 -0
- package/dist/adapters/charts/paint.js.map +1 -0
- package/dist/adapters/charts/plots.d.ts +39 -0
- package/dist/adapters/charts/plots.d.ts.map +1 -0
- package/dist/adapters/charts/plots.js +117 -0
- package/dist/adapters/charts/plots.js.map +1 -0
- package/dist/adapters/charts/produced.d.ts +57 -0
- package/dist/adapters/charts/produced.d.ts.map +1 -0
- package/dist/adapters/charts/produced.js +11 -0
- package/dist/adapters/charts/produced.js.map +1 -0
- package/dist/adapters/charts/requests.d.ts +114 -0
- package/dist/adapters/charts/requests.d.ts.map +1 -0
- package/dist/adapters/charts/requests.js +277 -0
- package/dist/adapters/charts/requests.js.map +1 -0
- package/dist/adapters/charts/run.d.ts +147 -0
- package/dist/adapters/charts/run.d.ts.map +1 -0
- package/dist/adapters/charts/run.js +148 -0
- package/dist/adapters/charts/run.js.map +1 -0
- package/dist/adapters/charts/settings.d.ts +78 -0
- package/dist/adapters/charts/settings.d.ts.map +1 -0
- package/dist/adapters/charts/settings.js +225 -0
- package/dist/adapters/charts/settings.js.map +1 -0
- package/dist/adapters/charts/surfaces.d.ts +221 -0
- package/dist/adapters/charts/surfaces.d.ts.map +1 -0
- package/dist/adapters/charts/surfaces.js +2 -0
- package/dist/adapters/charts/surfaces.js.map +1 -0
- package/dist/adapters/charts/tables.d.ts +65 -0
- package/dist/adapters/charts/tables.d.ts.map +1 -0
- package/dist/adapters/charts/tables.js +166 -0
- package/dist/adapters/charts/tables.js.map +1 -0
- package/dist/adapters/codemirror/commands.d.ts +14 -0
- package/dist/adapters/codemirror/commands.d.ts.map +1 -0
- package/dist/adapters/codemirror/commands.js +52 -0
- package/dist/adapters/codemirror/commands.js.map +1 -0
- package/dist/adapters/codemirror/completion.d.ts +15 -0
- package/dist/adapters/codemirror/completion.d.ts.map +1 -0
- package/dist/adapters/codemirror/completion.js +64 -0
- package/dist/adapters/codemirror/completion.js.map +1 -0
- package/dist/adapters/codemirror/contract.d.ts +156 -0
- package/dist/adapters/codemirror/contract.d.ts.map +1 -0
- package/dist/adapters/codemirror/contract.js +42 -0
- package/dist/adapters/codemirror/contract.js.map +1 -0
- package/dist/adapters/codemirror/index.d.ts +43 -0
- package/dist/adapters/codemirror/index.d.ts.map +1 -0
- package/dist/adapters/codemirror/index.js +8 -0
- package/dist/adapters/codemirror/index.js.map +1 -0
- package/dist/adapters/codemirror/lint.d.ts +17 -0
- package/dist/adapters/codemirror/lint.d.ts.map +1 -0
- package/dist/adapters/codemirror/lint.js +62 -0
- package/dist/adapters/codemirror/lint.js.map +1 -0
- package/dist/adapters/codemirror/positions.d.ts +16 -0
- package/dist/adapters/codemirror/positions.d.ts.map +1 -0
- package/dist/adapters/codemirror/positions.js +65 -0
- package/dist/adapters/codemirror/positions.js.map +1 -0
- package/dist/adapters/codemirror/stream.d.ts +23 -0
- package/dist/adapters/codemirror/stream.d.ts.map +1 -0
- package/dist/adapters/codemirror/stream.js +70 -0
- package/dist/adapters/codemirror/stream.js.map +1 -0
- package/dist/adapters/codemirror/tokens.d.ts +44 -0
- package/dist/adapters/codemirror/tokens.d.ts.map +1 -0
- package/dist/adapters/codemirror/tokens.js +34 -0
- package/dist/adapters/codemirror/tokens.js.map +1 -0
- package/dist/adapters/codemirror/tooltips.d.ts +35 -0
- package/dist/adapters/codemirror/tooltips.d.ts.map +1 -0
- package/dist/adapters/codemirror/tooltips.js +108 -0
- package/dist/adapters/codemirror/tooltips.js.map +1 -0
- package/dist/core/accounting/charges.d.ts +136 -0
- package/dist/core/accounting/charges.d.ts.map +1 -0
- package/dist/core/accounting/charges.js +362 -0
- package/dist/core/accounting/charges.js.map +1 -0
- package/dist/core/accounting/equity.d.ts +158 -0
- package/dist/core/accounting/equity.d.ts.map +1 -0
- package/dist/core/accounting/equity.js +155 -0
- package/dist/core/accounting/equity.js.map +1 -0
- package/dist/core/accounting/index.d.ts +44 -0
- package/dist/core/accounting/index.d.ts.map +1 -0
- package/dist/core/accounting/index.js +36 -0
- package/dist/core/accounting/index.js.map +1 -0
- package/dist/core/accounting/markers.d.ts +43 -0
- package/dist/core/accounting/markers.d.ts.map +1 -0
- package/dist/core/accounting/markers.js +64 -0
- package/dist/core/accounting/markers.js.map +1 -0
- package/dist/core/accounting/monthly.d.ts +52 -0
- package/dist/core/accounting/monthly.d.ts.map +1 -0
- package/dist/core/accounting/monthly.js +99 -0
- package/dist/core/accounting/monthly.js.map +1 -0
- package/dist/core/accounting/report.d.ts +38 -0
- package/dist/core/accounting/report.d.ts.map +1 -0
- package/dist/core/accounting/report.js +63 -0
- package/dist/core/accounting/report.js.map +1 -0
- package/dist/core/accounting/shapes.d.ts +70 -0
- package/dist/core/accounting/shapes.d.ts.map +1 -0
- package/dist/core/accounting/shapes.js +21 -0
- package/dist/core/accounting/shapes.js.map +1 -0
- package/dist/core/accounting/statistics.d.ts +75 -0
- package/dist/core/accounting/statistics.d.ts.map +1 -0
- package/dist/core/accounting/statistics.js +246 -0
- package/dist/core/accounting/statistics.js.map +1 -0
- package/dist/core/accounting/trades.d.ts +118 -0
- package/dist/core/accounting/trades.d.ts.map +1 -0
- package/dist/core/accounting/trades.js +186 -0
- package/dist/core/accounting/trades.js.map +1 -0
- package/dist/core/backtest/compare.d.ts +38 -0
- package/dist/core/backtest/compare.d.ts.map +1 -0
- package/dist/core/backtest/compare.js +189 -0
- package/dist/core/backtest/compare.js.map +1 -0
- package/dist/core/backtest/declaration.d.ts +52 -0
- package/dist/core/backtest/declaration.d.ts.map +1 -0
- package/dist/core/backtest/declaration.js +48 -0
- package/dist/core/backtest/declaration.js.map +1 -0
- package/dist/core/backtest/drive.d.ts +29 -0
- package/dist/core/backtest/drive.d.ts.map +1 -0
- package/dist/core/backtest/drive.js +262 -0
- package/dist/core/backtest/drive.js.map +1 -0
- package/dist/core/backtest/index.d.ts +46 -0
- package/dist/core/backtest/index.d.ts.map +1 -0
- package/dist/core/backtest/index.js +36 -0
- package/dist/core/backtest/index.js.map +1 -0
- package/dist/core/backtest/range.d.ts +84 -0
- package/dist/core/backtest/range.d.ts.map +1 -0
- package/dist/core/backtest/range.js +90 -0
- package/dist/core/backtest/range.js.map +1 -0
- package/dist/core/backtest/record.d.ts +238 -0
- package/dist/core/backtest/record.d.ts.map +1 -0
- package/dist/core/backtest/record.js +176 -0
- package/dist/core/backtest/record.js.map +1 -0
- package/dist/core/backtest/replay.d.ts +48 -0
- package/dist/core/backtest/replay.d.ts.map +1 -0
- package/dist/core/backtest/replay.js +127 -0
- package/dist/core/backtest/replay.js.map +1 -0
- package/dist/core/backtest/resting.d.ts +62 -0
- package/dist/core/backtest/resting.d.ts.map +1 -0
- package/dist/core/backtest/resting.js +59 -0
- package/dist/core/backtest/resting.js.map +1 -0
- package/dist/core/backtest/settings.d.ts +117 -0
- package/dist/core/backtest/settings.d.ts.map +1 -0
- package/dist/core/backtest/settings.js +207 -0
- package/dist/core/backtest/settings.js.map +1 -0
- package/dist/core/backtest/simulate.d.ts +146 -0
- package/dist/core/backtest/simulate.d.ts.map +1 -0
- package/dist/core/backtest/simulate.js +217 -0
- package/dist/core/backtest/simulate.js.map +1 -0
- package/dist/core/catalogue/catalogue.generated.d.ts +164 -10
- package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
- package/dist/core/catalogue/catalogue.generated.js +23 -9
- package/dist/core/catalogue/catalogue.generated.js.map +1 -1
- package/dist/core/catalogue/values.generated.d.ts +49 -0
- package/dist/core/catalogue/values.generated.d.ts.map +1 -1
- package/dist/core/check/arguments.d.ts +41 -0
- package/dist/core/check/arguments.d.ts.map +1 -0
- package/dist/core/check/arguments.js +84 -0
- package/dist/core/check/arguments.js.map +1 -0
- package/dist/core/check/call-sites.d.ts +22 -0
- package/dist/core/check/call-sites.d.ts.map +1 -0
- package/dist/core/check/call-sites.js +329 -0
- package/dist/core/check/call-sites.js.map +1 -0
- package/dist/core/check/call-warmup.d.ts +37 -0
- package/dist/core/check/call-warmup.d.ts.map +1 -0
- package/dist/core/check/call-warmup.js +97 -0
- package/dist/core/check/call-warmup.js.map +1 -0
- package/dist/core/check/calls.d.ts +33 -0
- package/dist/core/check/calls.d.ts.map +1 -0
- package/dist/core/check/calls.js +348 -0
- package/dist/core/check/calls.js.map +1 -0
- package/dist/core/check/check.d.ts +23 -0
- package/dist/core/check/check.d.ts.map +1 -0
- package/dist/core/check/check.js +163 -0
- package/dist/core/check/check.js.map +1 -0
- package/dist/core/check/checked.d.ts +198 -0
- package/dist/core/check/checked.d.ts.map +1 -0
- package/dist/core/check/checked.js +19 -0
- package/dist/core/check/checked.js.map +1 -0
- package/dist/core/check/checker.d.ts +182 -0
- package/dist/core/check/checker.d.ts.map +1 -0
- package/dist/core/check/checker.js +280 -0
- package/dist/core/check/checker.js.map +1 -0
- package/dist/core/check/conditional.d.ts +35 -0
- package/dist/core/check/conditional.d.ts.map +1 -0
- package/dist/core/check/conditional.js +100 -0
- package/dist/core/check/conditional.js.map +1 -0
- package/dist/core/check/constant.d.ts +47 -0
- package/dist/core/check/constant.d.ts.map +1 -0
- package/dist/core/check/constant.js +101 -0
- package/dist/core/check/constant.js.map +1 -0
- package/dist/core/check/declaration.d.ts +33 -0
- package/dist/core/check/declaration.d.ts.map +1 -0
- package/dist/core/check/declaration.js +181 -0
- package/dist/core/check/declaration.js.map +1 -0
- package/dist/core/check/expressions.d.ts +36 -0
- package/dist/core/check/expressions.d.ts.map +1 -0
- package/dist/core/check/expressions.js +398 -0
- package/dist/core/check/expressions.js.map +1 -0
- package/dist/core/check/functions.d.ts +31 -0
- package/dist/core/check/functions.d.ts.map +1 -0
- package/dist/core/check/functions.js +238 -0
- package/dist/core/check/functions.js.map +1 -0
- package/dist/core/check/handles.d.ts +48 -0
- package/dist/core/check/handles.d.ts.map +1 -0
- package/dist/core/check/handles.js +43 -0
- package/dist/core/check/handles.js.map +1 -0
- package/dist/core/check/index.d.ts +31 -0
- package/dist/core/check/index.d.ts.map +1 -0
- package/dist/core/check/index.js +26 -0
- package/dist/core/check/index.js.map +1 -0
- package/dist/core/check/library-bars.d.ts +7 -0
- package/dist/core/check/library-bars.d.ts.map +1 -0
- package/dist/core/check/library-bars.js +181 -0
- package/dist/core/check/library-bars.js.map +1 -0
- package/dist/core/check/library-orders.d.ts +5 -0
- package/dist/core/check/library-orders.d.ts.map +1 -0
- package/dist/core/check/library-orders.js +250 -0
- package/dist/core/check/library-orders.js.map +1 -0
- package/dist/core/check/library-output.d.ts +7 -0
- package/dist/core/check/library-output.d.ts.map +1 -0
- package/dist/core/check/library-output.js +195 -0
- package/dist/core/check/library-output.js.map +1 -0
- package/dist/core/check/library-prose.generated.d.ts +16 -0
- package/dist/core/check/library-prose.generated.d.ts.map +1 -0
- package/dist/core/check/library-prose.generated.js +353 -0
- package/dist/core/check/library-prose.generated.js.map +1 -0
- package/dist/core/check/library-series.d.ts +3 -0
- package/dist/core/check/library-series.d.ts.map +1 -0
- package/dist/core/check/library-series.js +415 -0
- package/dist/core/check/library-series.js.map +1 -0
- package/dist/core/check/library.d.ts +204 -0
- package/dist/core/check/library.d.ts.map +1 -0
- package/dist/core/check/library.js +198 -0
- package/dist/core/check/library.js.map +1 -0
- package/dist/core/check/literals.d.ts +19 -0
- package/dist/core/check/literals.d.ts.map +1 -0
- package/dist/core/check/literals.js +22 -0
- package/dist/core/check/literals.js.map +1 -0
- package/dist/core/check/outputs.d.ts +31 -0
- package/dist/core/check/outputs.d.ts.map +1 -0
- package/dist/core/check/outputs.js +113 -0
- package/dist/core/check/outputs.js.map +1 -0
- package/dist/core/check/statements.d.ts +25 -0
- package/dist/core/check/statements.d.ts.map +1 -0
- package/dist/core/check/statements.js +377 -0
- package/dist/core/check/statements.js.map +1 -0
- package/dist/core/check/suggest.d.ts +25 -0
- package/dist/core/check/suggest.d.ts.map +1 -0
- package/dist/core/check/suggest.js +61 -0
- package/dist/core/check/suggest.js.map +1 -0
- package/dist/core/check/surface.d.ts +62 -0
- package/dist/core/check/surface.d.ts.map +1 -0
- package/dist/core/check/surface.js +129 -0
- package/dist/core/check/surface.js.map +1 -0
- package/dist/core/check/tags.d.ts +4 -0
- package/dist/core/check/tags.d.ts.map +1 -0
- package/dist/core/check/tags.js +54 -0
- package/dist/core/check/tags.js.map +1 -0
- package/dist/core/check/types.d.ts +153 -0
- package/dist/core/check/types.d.ts.map +1 -0
- package/dist/core/check/types.js +221 -0
- package/dist/core/check/types.js.map +1 -0
- package/dist/core/check/warmup.d.ts +73 -0
- package/dist/core/check/warmup.d.ts.map +1 -0
- package/dist/core/check/warmup.js +62 -0
- package/dist/core/check/warmup.js.map +1 -0
- package/dist/core/diagnostics/collector.d.ts +12 -0
- package/dist/core/diagnostics/collector.d.ts.map +1 -1
- package/dist/core/diagnostics/collector.js +27 -1
- package/dist/core/diagnostics/collector.js.map +1 -1
- package/dist/core/emit/calls.d.ts +38 -0
- package/dist/core/emit/calls.d.ts.map +1 -0
- package/dist/core/emit/calls.js +347 -0
- package/dist/core/emit/calls.js.map +1 -0
- package/dist/core/emit/canonical.d.ts +39 -0
- package/dist/core/emit/canonical.d.ts.map +1 -0
- package/dist/core/emit/canonical.js +71 -0
- package/dist/core/emit/canonical.js.map +1 -0
- package/dist/core/emit/channels.d.ts +28 -0
- package/dist/core/emit/channels.d.ts.map +1 -0
- package/dist/core/emit/channels.js +110 -0
- package/dist/core/emit/channels.js.map +1 -0
- package/dist/core/emit/code.d.ts +75 -0
- package/dist/core/emit/code.d.ts.map +1 -0
- package/dist/core/emit/code.js +104 -0
- package/dist/core/emit/code.js.map +1 -0
- package/dist/core/emit/colours.d.ts +35 -0
- package/dist/core/emit/colours.d.ts.map +1 -0
- package/dist/core/emit/colours.js +50 -0
- package/dist/core/emit/colours.js.map +1 -0
- package/dist/core/emit/context.d.ts +271 -0
- package/dist/core/emit/context.d.ts.map +1 -0
- package/dist/core/emit/context.js +358 -0
- package/dist/core/emit/context.js.map +1 -0
- package/dist/core/emit/defaults.d.ts +64 -0
- package/dist/core/emit/defaults.d.ts.map +1 -0
- package/dist/core/emit/defaults.js +182 -0
- package/dist/core/emit/defaults.js.map +1 -0
- package/dist/core/emit/emit.d.ts +13 -0
- package/dist/core/emit/emit.d.ts.map +1 -0
- package/dist/core/emit/emit.js +281 -0
- package/dist/core/emit/emit.js.map +1 -0
- package/dist/core/emit/events.d.ts +21 -0
- package/dist/core/emit/events.d.ts.map +1 -0
- package/dist/core/emit/events.js +112 -0
- package/dist/core/emit/events.js.map +1 -0
- package/dist/core/emit/expressions.d.ts +23 -0
- package/dist/core/emit/expressions.d.ts.map +1 -0
- package/dist/core/emit/expressions.js +253 -0
- package/dist/core/emit/expressions.js.map +1 -0
- package/dist/core/emit/functions.d.ts +30 -0
- package/dist/core/emit/functions.d.ts.map +1 -0
- package/dist/core/emit/functions.js +171 -0
- package/dist/core/emit/functions.js.map +1 -0
- package/dist/core/emit/gaps.d.ts +34 -0
- package/dist/core/emit/gaps.d.ts.map +1 -0
- package/dist/core/emit/gaps.js +16 -0
- package/dist/core/emit/gaps.js.map +1 -0
- package/dist/core/emit/index.d.ts +31 -0
- package/dist/core/emit/index.d.ts.map +1 -0
- package/dist/core/emit/index.js +25 -0
- package/dist/core/emit/index.js.map +1 -0
- package/dist/core/emit/inputs.d.ts +47 -0
- package/dist/core/emit/inputs.d.ts.map +1 -0
- package/dist/core/emit/inputs.js +150 -0
- package/dist/core/emit/inputs.js.map +1 -0
- package/dist/core/emit/layout.d.ts +73 -0
- package/dist/core/emit/layout.d.ts.map +1 -0
- package/dist/core/emit/layout.js +126 -0
- package/dist/core/emit/layout.js.map +1 -0
- package/dist/core/emit/meta.d.ts +14 -0
- package/dist/core/emit/meta.d.ts.map +1 -0
- package/dist/core/emit/meta.js +68 -0
- package/dist/core/emit/meta.js.map +1 -0
- package/dist/core/emit/opcodes.d.ts +28 -0
- package/dist/core/emit/opcodes.d.ts.map +1 -0
- package/dist/core/emit/opcodes.js +137 -0
- package/dist/core/emit/opcodes.js.map +1 -0
- package/dist/core/emit/outputs.d.ts +67 -0
- package/dist/core/emit/outputs.d.ts.map +1 -0
- package/dist/core/emit/outputs.js +293 -0
- package/dist/core/emit/outputs.js.map +1 -0
- package/dist/core/emit/pool.d.ts +33 -0
- package/dist/core/emit/pool.d.ts.map +1 -0
- package/dist/core/emit/pool.js +79 -0
- package/dist/core/emit/pool.js.map +1 -0
- package/dist/core/emit/program.d.ts +333 -0
- package/dist/core/emit/program.d.ts.map +1 -0
- package/dist/core/emit/program.js +15 -0
- package/dist/core/emit/program.js.map +1 -0
- package/dist/core/emit/registers.d.ts +35 -0
- package/dist/core/emit/registers.d.ts.map +1 -0
- package/dist/core/emit/registers.js +170 -0
- package/dist/core/emit/registers.js.map +1 -0
- package/dist/core/emit/request-scope.d.ts +36 -0
- package/dist/core/emit/request-scope.d.ts.map +1 -0
- package/dist/core/emit/request-scope.js +41 -0
- package/dist/core/emit/request-scope.js.map +1 -0
- package/dist/core/emit/requests.d.ts +69 -0
- package/dist/core/emit/requests.d.ts.map +1 -0
- package/dist/core/emit/requests.js +230 -0
- package/dist/core/emit/requests.js.map +1 -0
- package/dist/core/emit/requires.d.ts +4 -0
- package/dist/core/emit/requires.d.ts.map +1 -0
- package/dist/core/emit/requires.js +71 -0
- package/dist/core/emit/requires.js.map +1 -0
- package/dist/core/emit/sha256.d.ts +24 -0
- package/dist/core/emit/sha256.d.ts.map +1 -0
- package/dist/core/emit/sha256.js +109 -0
- package/dist/core/emit/sha256.js.map +1 -0
- package/dist/core/emit/statements.d.ts +20 -0
- package/dist/core/emit/statements.d.ts.map +1 -0
- package/dist/core/emit/statements.js +393 -0
- package/dist/core/emit/statements.js.map +1 -0
- package/dist/core/emit/values.d.ts +80 -0
- package/dist/core/emit/values.d.ts.map +1 -0
- package/dist/core/emit/values.js +242 -0
- package/dist/core/emit/values.js.map +1 -0
- package/dist/core/engine/alerts.d.ts +66 -0
- package/dist/core/engine/alerts.d.ts.map +1 -0
- package/dist/core/engine/alerts.js +119 -0
- package/dist/core/engine/alerts.js.map +1 -0
- package/dist/core/engine/arithmetic.d.ts +82 -0
- package/dist/core/engine/arithmetic.d.ts.map +1 -0
- package/dist/core/engine/arithmetic.js +141 -0
- package/dist/core/engine/arithmetic.js.map +1 -0
- package/dist/core/engine/bars.d.ts +95 -0
- package/dist/core/engine/bars.d.ts.map +1 -0
- package/dist/core/engine/bars.js +133 -0
- package/dist/core/engine/bars.js.map +1 -0
- package/dist/core/engine/budget.d.ts +162 -0
- package/dist/core/engine/budget.d.ts.map +1 -0
- package/dist/core/engine/budget.js +188 -0
- package/dist/core/engine/budget.js.map +1 -0
- package/dist/core/engine/channels.d.ts +106 -0
- package/dist/core/engine/channels.d.ts.map +1 -0
- package/dist/core/engine/channels.js +99 -0
- package/dist/core/engine/channels.js.map +1 -0
- package/dist/core/engine/drawings.d.ts +64 -0
- package/dist/core/engine/drawings.d.ts.map +1 -0
- package/dist/core/engine/drawings.js +67 -0
- package/dist/core/engine/drawings.js.map +1 -0
- package/dist/core/engine/engine.d.ts +140 -0
- package/dist/core/engine/engine.d.ts.map +1 -0
- package/dist/core/engine/engine.js +405 -0
- package/dist/core/engine/engine.js.map +1 -0
- package/dist/core/engine/errors.d.ts +64 -0
- package/dist/core/engine/errors.d.ts.map +1 -0
- package/dist/core/engine/errors.js +63 -0
- package/dist/core/engine/errors.js.map +1 -0
- package/dist/core/engine/frames.d.ts +48 -0
- package/dist/core/engine/frames.d.ts.map +1 -0
- package/dist/core/engine/frames.js +41 -0
- package/dist/core/engine/frames.js.map +1 -0
- package/dist/core/engine/grids.d.ts +25 -0
- package/dist/core/engine/grids.d.ts.map +1 -0
- package/dist/core/engine/grids.js +77 -0
- package/dist/core/engine/grids.js.map +1 -0
- package/dist/core/engine/guard.d.ts +4 -0
- package/dist/core/engine/guard.d.ts.map +1 -0
- package/dist/core/engine/guard.js +46 -0
- package/dist/core/engine/guard.js.map +1 -0
- package/dist/core/engine/host.d.ts +219 -0
- package/dist/core/engine/host.d.ts.map +1 -0
- package/dist/core/engine/host.js +38 -0
- package/dist/core/engine/host.js.map +1 -0
- package/dist/core/engine/index.d.ts +49 -0
- package/dist/core/engine/index.d.ts.map +1 -0
- package/dist/core/engine/index.js +33 -0
- package/dist/core/engine/index.js.map +1 -0
- package/dist/core/engine/inputs.d.ts +77 -0
- package/dist/core/engine/inputs.d.ts.map +1 -0
- package/dist/core/engine/inputs.js +205 -0
- package/dist/core/engine/inputs.js.map +1 -0
- package/dist/core/engine/ledger/call.d.ts +63 -0
- package/dist/core/engine/ledger/call.d.ts.map +1 -0
- package/dist/core/engine/ledger/call.js +136 -0
- package/dist/core/engine/ledger/call.js.map +1 -0
- package/dist/core/engine/ledger/closable.d.ts +155 -0
- package/dist/core/engine/ledger/closable.d.ts.map +1 -0
- package/dist/core/engine/ledger/closable.js +173 -0
- package/dist/core/engine/ledger/closable.js.map +1 -0
- package/dist/core/engine/ledger/holdings.d.ts +194 -0
- package/dist/core/engine/ledger/holdings.d.ts.map +1 -0
- package/dist/core/engine/ledger/holdings.js +237 -0
- package/dist/core/engine/ledger/holdings.js.map +1 -0
- package/dist/core/engine/ledger/index.d.ts +19 -0
- package/dist/core/engine/ledger/index.d.ts.map +1 -0
- package/dist/core/engine/ledger/index.js +2 -0
- package/dist/core/engine/ledger/index.js.map +1 -0
- package/dist/core/engine/ledger/intent.d.ts +106 -0
- package/dist/core/engine/ledger/intent.d.ts.map +1 -0
- package/dist/core/engine/ledger/intent.js +21 -0
- package/dist/core/engine/ledger/intent.js.map +1 -0
- package/dist/core/engine/ledger/ledger.d.ts +143 -0
- package/dist/core/engine/ledger/ledger.d.ts.map +1 -0
- package/dist/core/engine/ledger/ledger.js +237 -0
- package/dist/core/engine/ledger/ledger.js.map +1 -0
- package/dist/core/engine/ledger/place.d.ts +75 -0
- package/dist/core/engine/ledger/place.d.ts.map +1 -0
- package/dist/core/engine/ledger/place.js +174 -0
- package/dist/core/engine/ledger/place.js.map +1 -0
- package/dist/core/engine/ledger/positions.d.ts +68 -0
- package/dist/core/engine/ledger/positions.d.ts.map +1 -0
- package/dist/core/engine/ledger/positions.js +114 -0
- package/dist/core/engine/ledger/positions.js.map +1 -0
- package/dist/core/engine/ledger/refuse.d.ts +43 -0
- package/dist/core/engine/ledger/refuse.d.ts.map +1 -0
- package/dist/core/engine/ledger/refuse.js +329 -0
- package/dist/core/engine/ledger/refuse.js.map +1 -0
- package/dist/core/engine/ledger/row.d.ts +176 -0
- package/dist/core/engine/ledger/row.d.ts.map +1 -0
- package/dist/core/engine/ledger/row.js +169 -0
- package/dist/core/engine/ledger/row.js.map +1 -0
- package/dist/core/engine/ledger/sizing.d.ts +142 -0
- package/dist/core/engine/ledger/sizing.d.ts.map +1 -0
- package/dist/core/engine/ledger/sizing.js +223 -0
- package/dist/core/engine/ledger/sizing.js.map +1 -0
- package/dist/core/engine/library/arrays.d.ts +14 -0
- package/dist/core/engine/library/arrays.d.ts.map +1 -0
- package/dist/core/engine/library/arrays.js +285 -0
- package/dist/core/engine/library/arrays.js.map +1 -0
- package/dist/core/engine/library/averages.d.ts +9 -0
- package/dist/core/engine/library/averages.d.ts.map +1 -0
- package/dist/core/engine/library/averages.js +41 -0
- package/dist/core/engine/library/averages.js.map +1 -0
- package/dist/core/engine/library/binding.d.ts +230 -0
- package/dist/core/engine/library/binding.d.ts.map +1 -0
- package/dist/core/engine/library/binding.js +109 -0
- package/dist/core/engine/library/binding.js.map +1 -0
- package/dist/core/engine/library/chart.d.ts +3 -0
- package/dist/core/engine/library/chart.d.ts.map +1 -0
- package/dist/core/engine/library/chart.js +83 -0
- package/dist/core/engine/library/chart.js.map +1 -0
- package/dist/core/engine/library/colours.d.ts +26 -0
- package/dist/core/engine/library/colours.d.ts.map +1 -0
- package/dist/core/engine/library/colours.js +81 -0
- package/dist/core/engine/library/colours.js.map +1 -0
- package/dist/core/engine/library/dates.d.ts +3 -0
- package/dist/core/engine/library/dates.d.ts.map +1 -0
- package/dist/core/engine/library/dates.js +75 -0
- package/dist/core/engine/library/dates.js.map +1 -0
- package/dist/core/engine/library/index.d.ts +13 -0
- package/dist/core/engine/library/index.d.ts.map +1 -0
- package/dist/core/engine/library/index.js +86 -0
- package/dist/core/engine/library/index.js.map +1 -0
- package/dist/core/engine/library/maths.d.ts +3 -0
- package/dist/core/engine/library/maths.d.ts.map +1 -0
- package/dist/core/engine/library/maths.js +89 -0
- package/dist/core/engine/library/maths.js.map +1 -0
- package/dist/core/engine/library/objects.d.ts +3 -0
- package/dist/core/engine/library/objects.d.ts.map +1 -0
- package/dist/core/engine/library/objects.js +199 -0
- package/dist/core/engine/library/objects.js.map +1 -0
- package/dist/core/engine/library/oscillators.d.ts +3 -0
- package/dist/core/engine/library/oscillators.d.ts.map +1 -0
- package/dist/core/engine/library/oscillators.js +29 -0
- package/dist/core/engine/library/oscillators.js.map +1 -0
- package/dist/core/engine/library/ranges.d.ts +3 -0
- package/dist/core/engine/library/ranges.d.ts.map +1 -0
- package/dist/core/engine/library/ranges.js +23 -0
- package/dist/core/engine/library/ranges.js.map +1 -0
- package/dist/core/engine/library/series.d.ts +3 -0
- package/dist/core/engine/library/series.d.ts.map +1 -0
- package/dist/core/engine/library/series.js +46 -0
- package/dist/core/engine/library/series.js.map +1 -0
- package/dist/core/engine/library/state.d.ts +35 -0
- package/dist/core/engine/library/state.d.ts.map +1 -0
- package/dist/core/engine/library/state.js +19 -0
- package/dist/core/engine/library/state.js.map +1 -0
- package/dist/core/engine/library/studies.d.ts +3 -0
- package/dist/core/engine/library/studies.d.ts.map +1 -0
- package/dist/core/engine/library/studies.js +35 -0
- package/dist/core/engine/library/studies.js.map +1 -0
- package/dist/core/engine/library/text.d.ts +6 -0
- package/dist/core/engine/library/text.d.ts.map +1 -0
- package/dist/core/engine/library/text.js +280 -0
- package/dist/core/engine/library/text.js.map +1 -0
- package/dist/core/engine/library/trend.d.ts +3 -0
- package/dist/core/engine/library/trend.d.ts.map +1 -0
- package/dist/core/engine/library/trend.js +29 -0
- package/dist/core/engine/library/trend.js.map +1 -0
- package/dist/core/engine/library/volume.d.ts +3 -0
- package/dist/core/engine/library/volume.d.ts.map +1 -0
- package/dist/core/engine/library/volume.js +51 -0
- package/dist/core/engine/library/volume.js.map +1 -0
- package/dist/core/engine/load.d.ts +59 -0
- package/dist/core/engine/load.d.ts.map +1 -0
- package/dist/core/engine/load.js +61 -0
- package/dist/core/engine/load.js.map +1 -0
- package/dist/core/engine/machine.d.ts +107 -0
- package/dist/core/engine/machine.d.ts.map +1 -0
- package/dist/core/engine/machine.js +337 -0
- package/dist/core/engine/machine.js.map +1 -0
- package/dist/core/engine/memory.d.ts +60 -0
- package/dist/core/engine/memory.d.ts.map +1 -0
- package/dist/core/engine/memory.js +92 -0
- package/dist/core/engine/memory.js.map +1 -0
- package/dist/core/engine/operations.d.ts +62 -0
- package/dist/core/engine/operations.d.ts.map +1 -0
- package/dist/core/engine/operations.js +149 -0
- package/dist/core/engine/operations.js.map +1 -0
- package/dist/core/engine/orders.d.ts +56 -0
- package/dist/core/engine/orders.d.ts.map +1 -0
- package/dist/core/engine/orders.js +83 -0
- package/dist/core/engine/orders.js.map +1 -0
- package/dist/core/engine/registers.d.ts +50 -0
- package/dist/core/engine/registers.d.ts.map +1 -0
- package/dist/core/engine/registers.js +85 -0
- package/dist/core/engine/registers.js.map +1 -0
- package/dist/core/engine/request-body.d.ts +138 -0
- package/dist/core/engine/request-body.d.ts.map +1 -0
- package/dist/core/engine/request-body.js +227 -0
- package/dist/core/engine/request-body.js.map +1 -0
- package/dist/core/engine/request-plan.d.ts +79 -0
- package/dist/core/engine/request-plan.d.ts.map +1 -0
- package/dist/core/engine/request-plan.js +228 -0
- package/dist/core/engine/request-plan.js.map +1 -0
- package/dist/core/engine/requests.d.ts +105 -0
- package/dist/core/engine/requests.d.ts.map +1 -0
- package/dist/core/engine/requests.js +260 -0
- package/dist/core/engine/requests.js.map +1 -0
- package/dist/core/engine/results.d.ts +40 -0
- package/dist/core/engine/results.d.ts.map +1 -0
- package/dist/core/engine/results.js +2 -0
- package/dist/core/engine/results.js.map +1 -0
- package/dist/core/engine/series.d.ts +61 -0
- package/dist/core/engine/series.d.ts.map +1 -0
- package/dist/core/engine/series.js +41 -0
- package/dist/core/engine/series.js.map +1 -0
- package/dist/core/engine/session/hours.d.ts +49 -0
- package/dist/core/engine/session/hours.d.ts.map +1 -0
- package/dist/core/engine/session/hours.js +31 -0
- package/dist/core/engine/session/hours.js.map +1 -0
- package/dist/core/engine/session/index.d.ts +17 -0
- package/dist/core/engine/session/index.d.ts.map +1 -0
- package/dist/core/engine/session/index.js +3 -0
- package/dist/core/engine/session/index.js.map +1 -0
- package/dist/core/engine/session/record.d.ts +56 -0
- package/dist/core/engine/session/record.d.ts.map +1 -0
- package/dist/core/engine/session/record.js +165 -0
- package/dist/core/engine/session/record.js.map +1 -0
- package/dist/core/engine/session/spec.d.ts +19 -0
- package/dist/core/engine/session/spec.d.ts.map +1 -0
- package/dist/core/engine/session/spec.js +31 -0
- package/dist/core/engine/session/spec.js.map +1 -0
- package/dist/core/engine/timeframe.d.ts +59 -0
- package/dist/core/engine/timeframe.d.ts.map +1 -0
- package/dist/core/engine/timeframe.js +140 -0
- package/dist/core/engine/timeframe.js.map +1 -0
- package/dist/core/engine/types.d.ts +15 -0
- package/dist/core/engine/types.d.ts.map +1 -0
- package/dist/core/engine/types.js +2 -0
- package/dist/core/engine/types.js.map +1 -0
- package/dist/core/engine/values/heap.d.ts +134 -0
- package/dist/core/engine/values/heap.d.ts.map +1 -0
- package/dist/core/engine/values/heap.js +230 -0
- package/dist/core/engine/values/heap.js.map +1 -0
- package/dist/core/engine/values/index.d.ts +13 -0
- package/dist/core/engine/values/index.d.ts.map +1 -0
- package/dist/core/engine/values/index.js +3 -0
- package/dist/core/engine/values/index.js.map +1 -0
- package/dist/core/engine/values/value.d.ts +82 -0
- package/dist/core/engine/values/value.d.ts.map +1 -0
- package/dist/core/engine/values/value.js +134 -0
- package/dist/core/engine/values/value.js.map +1 -0
- package/dist/core/engine/verify-budgets.d.ts +35 -0
- package/dist/core/engine/verify-budgets.d.ts.map +1 -0
- package/dist/core/engine/verify-budgets.js +172 -0
- package/dist/core/engine/verify-budgets.js.map +1 -0
- package/dist/core/engine/verify-code.d.ts +32 -0
- package/dist/core/engine/verify-code.d.ts.map +1 -0
- package/dist/core/engine/verify-code.js +278 -0
- package/dist/core/engine/verify-code.js.map +1 -0
- package/dist/core/engine/verify-requests.d.ts +44 -0
- package/dist/core/engine/verify-requests.d.ts.map +1 -0
- package/dist/core/engine/verify-requests.js +220 -0
- package/dist/core/engine/verify-requests.js.map +1 -0
- package/dist/core/engine/verify-shape.d.ts +46 -0
- package/dist/core/engine/verify-shape.d.ts.map +1 -0
- package/dist/core/engine/verify-shape.js +147 -0
- package/dist/core/engine/verify-shape.js.map +1 -0
- package/dist/core/engine/verify-tables.d.ts +19 -0
- package/dist/core/engine/verify-tables.d.ts.map +1 -0
- package/dist/core/engine/verify-tables.js +171 -0
- package/dist/core/engine/verify-tables.js.map +1 -0
- package/dist/core/engine/verify.d.ts +19 -0
- package/dist/core/engine/verify.d.ts.map +1 -0
- package/dist/core/engine/verify.js +309 -0
- package/dist/core/engine/verify.js.map +1 -0
- package/dist/core/index.d.ts +95 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +64 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/parse/expressions.js +1 -1
- package/dist/core/parse/expressions.js.map +1 -1
- package/dist/core/parse/names.d.ts +7 -1
- package/dist/core/parse/names.d.ts.map +1 -1
- package/dist/core/parse/names.js +28 -2
- package/dist/core/parse/names.js.map +1 -1
- package/dist/core/stdlib/averages/exponential.d.ts +51 -0
- package/dist/core/stdlib/averages/exponential.d.ts.map +1 -0
- package/dist/core/stdlib/averages/exponential.js +72 -0
- package/dist/core/stdlib/averages/exponential.js.map +1 -0
- package/dist/core/stdlib/averages/index.d.ts +7 -0
- package/dist/core/stdlib/averages/index.d.ts.map +1 -0
- package/dist/core/stdlib/averages/index.js +5 -0
- package/dist/core/stdlib/averages/index.js.map +1 -0
- package/dist/core/stdlib/averages/select.d.ts +35 -0
- package/dist/core/stdlib/averages/select.d.ts.map +1 -0
- package/dist/core/stdlib/averages/select.js +43 -0
- package/dist/core/stdlib/averages/select.js.map +1 -0
- package/dist/core/stdlib/averages/shaped.d.ts +61 -0
- package/dist/core/stdlib/averages/shaped.d.ts.map +1 -0
- package/dist/core/stdlib/averages/shaped.js +126 -0
- package/dist/core/stdlib/averages/shaped.js.map +1 -0
- package/dist/core/stdlib/averages/simple.d.ts +58 -0
- package/dist/core/stdlib/averages/simple.d.ts.map +1 -0
- package/dist/core/stdlib/averages/simple.js +92 -0
- package/dist/core/stdlib/averages/simple.js.map +1 -0
- package/dist/core/stdlib/calendar/civil.d.ts +56 -0
- package/dist/core/stdlib/calendar/civil.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/civil.js +70 -0
- package/dist/core/stdlib/calendar/civil.js.map +1 -0
- package/dist/core/stdlib/calendar/fields.d.ts +36 -0
- package/dist/core/stdlib/calendar/fields.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/fields.js +93 -0
- package/dist/core/stdlib/calendar/fields.js.map +1 -0
- package/dist/core/stdlib/calendar/format.d.ts +19 -0
- package/dist/core/stdlib/calendar/format.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/format.js +51 -0
- package/dist/core/stdlib/calendar/format.js.map +1 -0
- package/dist/core/stdlib/calendar/index.d.ts +7 -0
- package/dist/core/stdlib/calendar/index.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/index.js +5 -0
- package/dist/core/stdlib/calendar/index.js.map +1 -0
- package/dist/core/stdlib/calendar/zone.d.ts +53 -0
- package/dist/core/stdlib/calendar/zone.d.ts.map +1 -0
- package/dist/core/stdlib/calendar/zone.js +138 -0
- package/dist/core/stdlib/calendar/zone.js.map +1 -0
- package/dist/core/stdlib/index.d.ts +57 -0
- package/dist/core/stdlib/index.d.ts.map +1 -0
- package/dist/core/stdlib/index.js +51 -0
- package/dist/core/stdlib/index.js.map +1 -0
- package/dist/core/stdlib/maths/arithmetic.d.ts +38 -0
- package/dist/core/stdlib/maths/arithmetic.d.ts.map +1 -0
- package/dist/core/stdlib/maths/arithmetic.js +66 -0
- package/dist/core/stdlib/maths/arithmetic.js.map +1 -0
- package/dist/core/stdlib/maths/elementary.d.ts +65 -0
- package/dist/core/stdlib/maths/elementary.d.ts.map +1 -0
- package/dist/core/stdlib/maths/elementary.js +93 -0
- package/dist/core/stdlib/maths/elementary.js.map +1 -0
- package/dist/core/stdlib/maths/index.d.ts +4 -0
- package/dist/core/stdlib/maths/index.d.ts.map +1 -0
- package/dist/core/stdlib/maths/index.js +4 -0
- package/dist/core/stdlib/maths/index.js.map +1 -0
- package/dist/core/stdlib/maths/rounding.d.ts +43 -0
- package/dist/core/stdlib/maths/rounding.d.ts.map +1 -0
- package/dist/core/stdlib/maths/rounding.js +62 -0
- package/dist/core/stdlib/maths/rounding.js.map +1 -0
- package/dist/core/stdlib/momentum/convergence.d.ts +36 -0
- package/dist/core/stdlib/momentum/convergence.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/convergence.js +48 -0
- package/dist/core/stdlib/momentum/convergence.js.map +1 -0
- package/dist/core/stdlib/momentum/index.d.ts +6 -0
- package/dist/core/stdlib/momentum/index.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/index.js +6 -0
- package/dist/core/stdlib/momentum/index.js.map +1 -0
- package/dist/core/stdlib/momentum/pressure.d.ts +43 -0
- package/dist/core/stdlib/momentum/pressure.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/pressure.js +103 -0
- package/dist/core/stdlib/momentum/pressure.js.map +1 -0
- package/dist/core/stdlib/momentum/rates.d.ts +74 -0
- package/dist/core/stdlib/momentum/rates.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/rates.js +134 -0
- package/dist/core/stdlib/momentum/rates.js.map +1 -0
- package/dist/core/stdlib/momentum/rsi.d.ts +21 -0
- package/dist/core/stdlib/momentum/rsi.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/rsi.js +30 -0
- package/dist/core/stdlib/momentum/rsi.js.map +1 -0
- package/dist/core/stdlib/momentum/stochastic.d.ts +44 -0
- package/dist/core/stdlib/momentum/stochastic.d.ts.map +1 -0
- package/dist/core/stdlib/momentum/stochastic.js +97 -0
- package/dist/core/stdlib/momentum/stochastic.js.map +1 -0
- package/dist/core/stdlib/series/changes.d.ts +59 -0
- package/dist/core/stdlib/series/changes.d.ts.map +1 -0
- package/dist/core/stdlib/series/changes.js +129 -0
- package/dist/core/stdlib/series/changes.js.map +1 -0
- package/dist/core/stdlib/series/conditions.d.ts +34 -0
- package/dist/core/stdlib/series/conditions.d.ts.map +1 -0
- package/dist/core/stdlib/series/conditions.js +52 -0
- package/dist/core/stdlib/series/conditions.js.map +1 -0
- package/dist/core/stdlib/series/extremes.d.ts +29 -0
- package/dist/core/stdlib/series/extremes.d.ts.map +1 -0
- package/dist/core/stdlib/series/extremes.js +62 -0
- package/dist/core/stdlib/series/extremes.js.map +1 -0
- package/dist/core/stdlib/series/index.d.ts +9 -0
- package/dist/core/stdlib/series/index.d.ts.map +1 -0
- package/dist/core/stdlib/series/index.js +7 -0
- package/dist/core/stdlib/series/index.js.map +1 -0
- package/dist/core/stdlib/series/pivots.d.ts +25 -0
- package/dist/core/stdlib/series/pivots.d.ts.map +1 -0
- package/dist/core/stdlib/series/pivots.js +42 -0
- package/dist/core/stdlib/series/pivots.js.map +1 -0
- package/dist/core/stdlib/series/statistics.d.ts +64 -0
- package/dist/core/stdlib/series/statistics.d.ts.map +1 -0
- package/dist/core/stdlib/series/statistics.js +148 -0
- package/dist/core/stdlib/series/statistics.js.map +1 -0
- package/dist/core/stdlib/series/totals.d.ts +68 -0
- package/dist/core/stdlib/series/totals.d.ts.map +1 -0
- package/dist/core/stdlib/series/totals.js +115 -0
- package/dist/core/stdlib/series/totals.js.map +1 -0
- package/dist/core/stdlib/trend/directional.d.ts +69 -0
- package/dist/core/stdlib/trend/directional.d.ts.map +1 -0
- package/dist/core/stdlib/trend/directional.js +151 -0
- package/dist/core/stdlib/trend/directional.js.map +1 -0
- package/dist/core/stdlib/trend/index.d.ts +4 -0
- package/dist/core/stdlib/trend/index.d.ts.map +1 -0
- package/dist/core/stdlib/trend/index.js +4 -0
- package/dist/core/stdlib/trend/index.js.map +1 -0
- package/dist/core/stdlib/trend/psar.d.ts +33 -0
- package/dist/core/stdlib/trend/psar.d.ts.map +1 -0
- package/dist/core/stdlib/trend/psar.js +86 -0
- package/dist/core/stdlib/trend/psar.js.map +1 -0
- package/dist/core/stdlib/trend/supertrend.d.ts +30 -0
- package/dist/core/stdlib/trend/supertrend.d.ts.map +1 -0
- package/dist/core/stdlib/trend/supertrend.js +65 -0
- package/dist/core/stdlib/trend/supertrend.js.map +1 -0
- package/dist/core/stdlib/values/bar.d.ts +39 -0
- package/dist/core/stdlib/values/bar.d.ts.map +1 -0
- package/dist/core/stdlib/values/bar.js +33 -0
- package/dist/core/stdlib/values/bar.js.map +1 -0
- package/dist/core/stdlib/values/index.d.ts +11 -0
- package/dist/core/stdlib/values/index.d.ts.map +1 -0
- package/dist/core/stdlib/values/index.js +6 -0
- package/dist/core/stdlib/values/index.js.map +1 -0
- package/dist/core/stdlib/values/lookback.d.ts +83 -0
- package/dist/core/stdlib/values/lookback.d.ts.map +1 -0
- package/dist/core/stdlib/values/lookback.js +134 -0
- package/dist/core/stdlib/values/lookback.js.map +1 -0
- package/dist/core/stdlib/values/region.d.ts +55 -0
- package/dist/core/stdlib/values/region.d.ts.map +1 -0
- package/dist/core/stdlib/values/region.js +73 -0
- package/dist/core/stdlib/values/region.js.map +1 -0
- package/dist/core/stdlib/values/tail.d.ts +44 -0
- package/dist/core/stdlib/values/tail.d.ts.map +1 -0
- package/dist/core/stdlib/values/tail.js +23 -0
- package/dist/core/stdlib/values/tail.js.map +1 -0
- package/dist/core/stdlib/values/value.d.ts +64 -0
- package/dist/core/stdlib/values/value.d.ts.map +1 -0
- package/dist/core/stdlib/values/value.js +61 -0
- package/dist/core/stdlib/values/value.js.map +1 -0
- package/dist/core/stdlib/volatility/bands.d.ts +50 -0
- package/dist/core/stdlib/volatility/bands.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/bands.js +101 -0
- package/dist/core/stdlib/volatility/bands.js.map +1 -0
- package/dist/core/stdlib/volatility/deviation.d.ts +43 -0
- package/dist/core/stdlib/volatility/deviation.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/deviation.js +75 -0
- package/dist/core/stdlib/volatility/deviation.js.map +1 -0
- package/dist/core/stdlib/volatility/index.d.ts +6 -0
- package/dist/core/stdlib/volatility/index.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/index.js +5 -0
- package/dist/core/stdlib/volatility/index.js.map +1 -0
- package/dist/core/stdlib/volatility/measures.d.ts +48 -0
- package/dist/core/stdlib/volatility/measures.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/measures.js +73 -0
- package/dist/core/stdlib/volatility/measures.js.map +1 -0
- package/dist/core/stdlib/volatility/range.d.ts +69 -0
- package/dist/core/stdlib/volatility/range.d.ts.map +1 -0
- package/dist/core/stdlib/volatility/range.js +86 -0
- package/dist/core/stdlib/volatility/range.js.map +1 -0
- package/dist/core/stdlib/volume/accumulation.d.ts +61 -0
- package/dist/core/stdlib/volume/accumulation.d.ts.map +1 -0
- package/dist/core/stdlib/volume/accumulation.js +127 -0
- package/dist/core/stdlib/volume/accumulation.js.map +1 -0
- package/dist/core/stdlib/volume/flow.d.ts +60 -0
- package/dist/core/stdlib/volume/flow.d.ts.map +1 -0
- package/dist/core/stdlib/volume/flow.js +125 -0
- package/dist/core/stdlib/volume/flow.js.map +1 -0
- package/dist/core/stdlib/volume/index.d.ts +5 -0
- package/dist/core/stdlib/volume/index.d.ts.map +1 -0
- package/dist/core/stdlib/volume/index.js +4 -0
- package/dist/core/stdlib/volume/index.js.map +1 -0
- package/dist/core/stdlib/volume/weighted.d.ts +52 -0
- package/dist/core/stdlib/volume/weighted.d.ts.map +1 -0
- package/dist/core/stdlib/volume/weighted.js +64 -0
- package/dist/core/stdlib/volume/weighted.js.map +1 -0
- package/dist/core/version/version.generated.d.ts +2 -2
- package/dist/core/version/version.generated.d.ts.map +1 -1
- package/dist/core/version/version.generated.js +2 -2
- package/dist/core/version/version.generated.js.map +1 -1
- package/dist/editor/complete.d.ts +40 -0
- package/dist/editor/complete.d.ts.map +1 -0
- package/dist/editor/complete.js +206 -0
- package/dist/editor/complete.js.map +1 -0
- package/dist/editor/diagnose.d.ts +18 -0
- package/dist/editor/diagnose.d.ts.map +1 -0
- package/dist/editor/diagnose.js +70 -0
- package/dist/editor/diagnose.js.map +1 -0
- package/dist/editor/format.d.ts +11 -0
- package/dist/editor/format.d.ts.map +1 -0
- package/dist/editor/format.js +50 -0
- package/dist/editor/format.js.map +1 -0
- package/dist/editor/highlight.d.ts +28 -0
- package/dist/editor/highlight.d.ts.map +1 -0
- package/dist/editor/highlight.js +65 -0
- package/dist/editor/highlight.js.map +1 -0
- package/dist/editor/hover.d.ts +40 -0
- package/dist/editor/hover.d.ts.map +1 -0
- package/dist/editor/hover.js +147 -0
- package/dist/editor/hover.js.map +1 -0
- package/dist/editor/index.d.ts +60 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +7 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/kinds.d.ts +27 -0
- package/dist/editor/kinds.d.ts.map +1 -0
- package/dist/editor/kinds.js +118 -0
- package/dist/editor/kinds.js.map +1 -0
- package/dist/editor/layout.d.ts +47 -0
- package/dist/editor/layout.d.ts.map +1 -0
- package/dist/editor/layout.js +135 -0
- package/dist/editor/layout.js.map +1 -0
- package/dist/editor/manifest.d.ts +47 -0
- package/dist/editor/manifest.d.ts.map +1 -0
- package/dist/editor/manifest.js +93 -0
- package/dist/editor/manifest.js.map +1 -0
- package/dist/editor/reading.d.ts +41 -0
- package/dist/editor/reading.d.ts.map +1 -0
- package/dist/editor/reading.js +51 -0
- package/dist/editor/reading.js.map +1 -0
- package/dist/editor/scan.d.ts +26 -0
- package/dist/editor/scan.d.ts.map +1 -0
- package/dist/editor/scan.js +139 -0
- package/dist/editor/scan.js.map +1 -0
- package/dist/editor/scope.d.ts +19 -0
- package/dist/editor/scope.d.ts.map +1 -0
- package/dist/editor/scope.js +99 -0
- package/dist/editor/scope.js.map +1 -0
- package/dist/editor/signature.d.ts +38 -0
- package/dist/editor/signature.d.ts.map +1 -0
- package/dist/editor/signature.js +112 -0
- package/dist/editor/signature.js.map +1 -0
- package/dist/editor/site.d.ts +46 -0
- package/dist/editor/site.d.ts.map +1 -0
- package/dist/editor/site.js +184 -0
- package/dist/editor/site.js.map +1 -0
- package/dist/editor/spacing.d.ts +29 -0
- package/dist/editor/spacing.d.ts.map +1 -0
- package/dist/editor/spacing.js +116 -0
- package/dist/editor/spacing.js.map +1 -0
- package/package.json +66 -15
- package/spec/errors.json +522 -183
- package/src/adapters/charts/alerts.ts +116 -0
- package/src/adapters/charts/bars.ts +63 -0
- package/src/adapters/charts/candles.ts +137 -0
- package/src/adapters/charts/colours.ts +113 -0
- package/src/adapters/charts/columns.ts +99 -0
- package/src/adapters/charts/contract.ts +320 -0
- package/src/adapters/charts/descriptor.ts +199 -0
- package/src/adapters/charts/drawings.ts +213 -0
- package/src/adapters/charts/errors.ts +45 -0
- package/src/adapters/charts/fields.ts +74 -0
- package/src/adapters/charts/fills.ts +71 -0
- package/src/adapters/charts/index.ts +78 -0
- package/src/adapters/charts/levels.ts +92 -0
- package/src/adapters/charts/markers.ts +119 -0
- package/src/adapters/charts/paint.ts +101 -0
- package/src/adapters/charts/plots.ts +185 -0
- package/src/adapters/charts/produced.ts +68 -0
- package/src/adapters/charts/requests.ts +357 -0
- package/src/adapters/charts/run.ts +327 -0
- package/src/adapters/charts/settings.ts +273 -0
- package/src/adapters/charts/surfaces.ts +255 -0
- package/src/adapters/charts/tables.ts +243 -0
- package/src/adapters/codemirror/commands.ts +53 -0
- package/src/adapters/codemirror/completion.ts +74 -0
- package/src/adapters/codemirror/contract.ts +156 -0
- package/src/adapters/codemirror/index.ts +66 -0
- package/src/adapters/codemirror/lint.ts +66 -0
- package/src/adapters/codemirror/positions.ts +79 -0
- package/src/adapters/codemirror/stream.ts +87 -0
- package/src/adapters/codemirror/tokens.ts +64 -0
- package/src/adapters/codemirror/tooltips.ts +113 -0
- package/src/core/accounting/charges.ts +452 -0
- package/src/core/accounting/equity.ts +276 -0
- package/src/core/accounting/index.ts +49 -0
- package/src/core/accounting/markers.ts +95 -0
- package/src/core/accounting/monthly.ts +137 -0
- package/src/core/accounting/report.ts +89 -0
- package/src/core/accounting/shapes.ts +73 -0
- package/src/core/accounting/statistics.ts +350 -0
- package/src/core/accounting/trades.ts +313 -0
- package/src/core/backtest/compare.ts +244 -0
- package/src/core/backtest/declaration.ts +97 -0
- package/src/core/backtest/drive.ts +364 -0
- package/src/core/backtest/index.ts +52 -0
- package/src/core/backtest/range.ts +137 -0
- package/src/core/backtest/record.ts +341 -0
- package/src/core/backtest/replay.ts +158 -0
- package/src/core/backtest/resting.ts +125 -0
- package/src/core/backtest/settings.ts +280 -0
- package/src/core/backtest/simulate.ts +304 -0
- package/src/core/catalogue/catalogue.generated.ts +23 -9
- package/src/core/catalogue/values.generated.ts +14 -0
- package/src/core/check/arguments.ts +126 -0
- package/src/core/check/call-sites.ts +385 -0
- package/src/core/check/call-warmup.ts +121 -0
- package/src/core/check/calls.ts +412 -0
- package/src/core/check/check.ts +183 -0
- package/src/core/check/checked.ts +228 -0
- package/src/core/check/checker.ts +393 -0
- package/src/core/check/conditional.ts +143 -0
- package/src/core/check/constant.ts +127 -0
- package/src/core/check/declaration.ts +230 -0
- package/src/core/check/expressions.ts +471 -0
- package/src/core/check/functions.ts +283 -0
- package/src/core/check/handles.ts +75 -0
- package/src/core/check/index.ts +70 -0
- package/src/core/check/library-bars.ts +194 -0
- package/src/core/check/library-orders.ts +290 -0
- package/src/core/check/library-output.ts +241 -0
- package/src/core/check/library-prose.generated.ts +367 -0
- package/src/core/check/library-series.ts +457 -0
- package/src/core/check/library.ts +374 -0
- package/src/core/check/literals.ts +35 -0
- package/src/core/check/outputs.ts +152 -0
- package/src/core/check/statements.ts +465 -0
- package/src/core/check/suggest.ts +63 -0
- package/src/core/check/surface.ts +149 -0
- package/src/core/check/tags.ts +94 -0
- package/src/core/check/types.ts +260 -0
- package/src/core/check/warmup.ts +100 -0
- package/src/core/diagnostics/collector.ts +27 -1
- package/src/core/emit/calls.ts +415 -0
- package/src/core/emit/canonical.ts +81 -0
- package/src/core/emit/channels.ts +144 -0
- package/src/core/emit/code.ts +155 -0
- package/src/core/emit/colours.ts +75 -0
- package/src/core/emit/context.ts +461 -0
- package/src/core/emit/defaults.ts +220 -0
- package/src/core/emit/emit.ts +313 -0
- package/src/core/emit/events.ts +141 -0
- package/src/core/emit/expressions.ts +292 -0
- package/src/core/emit/functions.ts +195 -0
- package/src/core/emit/gaps.ts +44 -0
- package/src/core/emit/index.ts +76 -0
- package/src/core/emit/inputs.ts +179 -0
- package/src/core/emit/layout.ts +165 -0
- package/src/core/emit/meta.ts +104 -0
- package/src/core/emit/opcodes.ts +160 -0
- package/src/core/emit/outputs.ts +357 -0
- package/src/core/emit/pool.ts +102 -0
- package/src/core/emit/program.ts +385 -0
- package/src/core/emit/registers.ts +179 -0
- package/src/core/emit/request-scope.ts +52 -0
- package/src/core/emit/requests.ts +258 -0
- package/src/core/emit/requires.ts +91 -0
- package/src/core/emit/sha256.ts +119 -0
- package/src/core/emit/statements.ts +438 -0
- package/src/core/emit/values.ts +284 -0
- package/src/core/engine/alerts.ts +152 -0
- package/src/core/engine/arithmetic.ts +165 -0
- package/src/core/engine/bars.ts +224 -0
- package/src/core/engine/budget.ts +284 -0
- package/src/core/engine/channels.ts +171 -0
- package/src/core/engine/drawings.ts +127 -0
- package/src/core/engine/engine.ts +498 -0
- package/src/core/engine/errors.ts +100 -0
- package/src/core/engine/frames.ts +85 -0
- package/src/core/engine/grids.ts +98 -0
- package/src/core/engine/guard.ts +71 -0
- package/src/core/engine/host.ts +251 -0
- package/src/core/engine/index.ts +93 -0
- package/src/core/engine/inputs.ts +263 -0
- package/src/core/engine/ledger/call.ts +218 -0
- package/src/core/engine/ledger/closable.ts +269 -0
- package/src/core/engine/ledger/holdings.ts +354 -0
- package/src/core/engine/ledger/index.ts +28 -0
- package/src/core/engine/ledger/intent.ts +112 -0
- package/src/core/engine/ledger/ledger.ts +314 -0
- package/src/core/engine/ledger/place.ts +277 -0
- package/src/core/engine/ledger/positions.ts +123 -0
- package/src/core/engine/ledger/refuse.ts +378 -0
- package/src/core/engine/ledger/row.ts +318 -0
- package/src/core/engine/ledger/sizing.ts +292 -0
- package/src/core/engine/library/arrays.ts +316 -0
- package/src/core/engine/library/averages.ts +97 -0
- package/src/core/engine/library/binding.ts +325 -0
- package/src/core/engine/library/chart.ts +115 -0
- package/src/core/engine/library/colours.ts +111 -0
- package/src/core/engine/library/dates.ts +109 -0
- package/src/core/engine/library/index.ts +103 -0
- package/src/core/engine/library/maths.ts +134 -0
- package/src/core/engine/library/objects.ts +265 -0
- package/src/core/engine/library/oscillators.ts +124 -0
- package/src/core/engine/library/ranges.ts +51 -0
- package/src/core/engine/library/series.ts +236 -0
- package/src/core/engine/library/state.ts +47 -0
- package/src/core/engine/library/studies.ts +150 -0
- package/src/core/engine/library/text.ts +303 -0
- package/src/core/engine/library/trend.ts +79 -0
- package/src/core/engine/library/volume.ts +101 -0
- package/src/core/engine/load.ts +118 -0
- package/src/core/engine/machine.ts +446 -0
- package/src/core/engine/memory.ts +129 -0
- package/src/core/engine/operations.ts +171 -0
- package/src/core/engine/orders.ts +121 -0
- package/src/core/engine/registers.ts +104 -0
- package/src/core/engine/request-body.ts +328 -0
- package/src/core/engine/request-plan.ts +270 -0
- package/src/core/engine/requests.ts +382 -0
- package/src/core/engine/results.ts +41 -0
- package/src/core/engine/series.ts +82 -0
- package/src/core/engine/session/hours.ts +86 -0
- package/src/core/engine/session/index.ts +17 -0
- package/src/core/engine/session/record.ts +191 -0
- package/src/core/engine/session/spec.ts +45 -0
- package/src/core/engine/timeframe.ts +161 -0
- package/src/core/engine/types.ts +47 -0
- package/src/core/engine/values/heap.ts +295 -0
- package/src/core/engine/values/index.ts +34 -0
- package/src/core/engine/values/value.ts +158 -0
- package/src/core/engine/verify-budgets.ts +202 -0
- package/src/core/engine/verify-code.ts +332 -0
- package/src/core/engine/verify-requests.ts +255 -0
- package/src/core/engine/verify-shape.ts +164 -0
- package/src/core/engine/verify-tables.ts +176 -0
- package/src/core/engine/verify.ts +341 -0
- package/src/core/index.ts +212 -6
- package/src/core/parse/expressions.ts +1 -1
- package/src/core/parse/names.ts +29 -2
- package/src/core/stdlib/averages/exponential.ts +119 -0
- package/src/core/stdlib/averages/index.ts +45 -0
- package/src/core/stdlib/averages/select.ts +71 -0
- package/src/core/stdlib/averages/shaped.ts +161 -0
- package/src/core/stdlib/averages/simple.ts +139 -0
- package/src/core/stdlib/calendar/civil.ts +89 -0
- package/src/core/stdlib/calendar/fields.ts +124 -0
- package/src/core/stdlib/calendar/format.ts +71 -0
- package/src/core/stdlib/calendar/index.ts +15 -0
- package/src/core/stdlib/calendar/zone.ts +161 -0
- package/src/core/stdlib/index.ts +400 -0
- package/src/core/stdlib/maths/arithmetic.ts +74 -0
- package/src/core/stdlib/maths/elementary.ts +124 -0
- package/src/core/stdlib/maths/index.ts +43 -0
- package/src/core/stdlib/maths/rounding.ts +78 -0
- package/src/core/stdlib/momentum/convergence.ts +82 -0
- package/src/core/stdlib/momentum/index.ts +47 -0
- package/src/core/stdlib/momentum/pressure.ts +141 -0
- package/src/core/stdlib/momentum/rates.ts +188 -0
- package/src/core/stdlib/momentum/rsi.ts +49 -0
- package/src/core/stdlib/momentum/stochastic.ts +147 -0
- package/src/core/stdlib/series/changes.ts +177 -0
- package/src/core/stdlib/series/conditions.ts +74 -0
- package/src/core/stdlib/series/extremes.ts +92 -0
- package/src/core/stdlib/series/index.ts +83 -0
- package/src/core/stdlib/series/pivots.ts +63 -0
- package/src/core/stdlib/series/statistics.ts +207 -0
- package/src/core/stdlib/series/totals.ts +164 -0
- package/src/core/stdlib/trend/directional.ts +196 -0
- package/src/core/stdlib/trend/index.ts +13 -0
- package/src/core/stdlib/trend/psar.ts +131 -0
- package/src/core/stdlib/trend/supertrend.ts +100 -0
- package/src/core/stdlib/values/bar.ts +54 -0
- package/src/core/stdlib/values/index.ts +14 -0
- package/src/core/stdlib/values/lookback.ts +198 -0
- package/src/core/stdlib/values/region.ts +86 -0
- package/src/core/stdlib/values/tail.ts +58 -0
- package/src/core/stdlib/values/value.ts +82 -0
- package/src/core/stdlib/volatility/bands.ts +178 -0
- package/src/core/stdlib/volatility/deviation.ts +111 -0
- package/src/core/stdlib/volatility/index.ts +48 -0
- package/src/core/stdlib/volatility/measures.ts +96 -0
- package/src/core/stdlib/volatility/range.ts +143 -0
- package/src/core/stdlib/volume/accumulation.ts +152 -0
- package/src/core/stdlib/volume/flow.ts +173 -0
- package/src/core/stdlib/volume/index.ts +43 -0
- package/src/core/stdlib/volume/weighted.ts +101 -0
- package/src/core/version/version.generated.ts +2 -2
- package/src/editor/complete.ts +266 -0
- package/src/editor/diagnose.ts +71 -0
- package/src/editor/format.ts +85 -0
- package/src/editor/highlight.ts +110 -0
- package/src/editor/hover.ts +199 -0
- package/src/editor/index.ts +65 -0
- package/src/editor/kinds.ts +157 -0
- package/src/editor/layout.ts +189 -0
- package/src/editor/manifest.ts +119 -0
- package/src/editor/reading.ts +69 -0
- package/src/editor/scan.ts +162 -0
- package/src/editor/scope.ts +122 -0
- package/src/editor/signature.ts +150 -0
- package/src/editor/site.ts +233 -0
- package/src/editor/spacing.ts +132 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { newState } from './region.js';
|
|
2
|
+
import { NONE, isLength, isPresent, result } from './value.js';
|
|
3
|
+
/**
|
|
4
|
+
* A lookback of `len` bars, held in a region under `key`.
|
|
5
|
+
*
|
|
6
|
+
* A length outside its contract yields a lookback that never fills, so every
|
|
7
|
+
* function built on it returns absence rather than a number computed from a
|
|
8
|
+
* nonsense length. See `isLength` for why that is absence and not a diagnostic.
|
|
9
|
+
*/
|
|
10
|
+
export function ring(record, key, len) {
|
|
11
|
+
const size = len !== null && isLength(len) ? len : 0;
|
|
12
|
+
const bars = `${key}:q`;
|
|
13
|
+
const nextKey = `${key}:n`;
|
|
14
|
+
const seenKey = `${key}:s`;
|
|
15
|
+
const held = record[bars];
|
|
16
|
+
let items;
|
|
17
|
+
if (Array.isArray(held) && held.length === size) {
|
|
18
|
+
items = held;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
items = new Array(size).fill(NONE);
|
|
22
|
+
record[bars] = items;
|
|
23
|
+
record[nextKey] = 0;
|
|
24
|
+
record[seenKey] = 0;
|
|
25
|
+
}
|
|
26
|
+
const count = (name) => {
|
|
27
|
+
const value = record[name];
|
|
28
|
+
return typeof value === 'number' ? value : 0;
|
|
29
|
+
};
|
|
30
|
+
const index = (back) => {
|
|
31
|
+
const from = count(nextKey) - 1 - back;
|
|
32
|
+
return ((from % size) + size) % size;
|
|
33
|
+
};
|
|
34
|
+
const lookback = {
|
|
35
|
+
push(value) {
|
|
36
|
+
if (size === 0)
|
|
37
|
+
return;
|
|
38
|
+
items[count(nextKey)] = value;
|
|
39
|
+
const next = count(nextKey) + 1;
|
|
40
|
+
record[nextKey] = next === size ? 0 : next;
|
|
41
|
+
if (count(seenKey) < size)
|
|
42
|
+
record[seenKey] = count(seenKey) + 1;
|
|
43
|
+
},
|
|
44
|
+
filled() {
|
|
45
|
+
return size > 0 && count(seenKey) === size;
|
|
46
|
+
},
|
|
47
|
+
at(back) {
|
|
48
|
+
if (size === 0 || back < 0 || back >= size)
|
|
49
|
+
return NONE;
|
|
50
|
+
const value = items[index(back)];
|
|
51
|
+
return typeof value === 'number' ? value : NONE;
|
|
52
|
+
},
|
|
53
|
+
presentCount() {
|
|
54
|
+
let counted = 0;
|
|
55
|
+
for (let back = size - 1; back >= 0; back -= 1) {
|
|
56
|
+
if (isPresent(lookback.at(back)))
|
|
57
|
+
counted += 1;
|
|
58
|
+
}
|
|
59
|
+
return counted;
|
|
60
|
+
},
|
|
61
|
+
complete() {
|
|
62
|
+
return lookback.filled() && lookback.presentCount() === size;
|
|
63
|
+
},
|
|
64
|
+
sum() {
|
|
65
|
+
if (!lookback.complete())
|
|
66
|
+
return NONE;
|
|
67
|
+
let total = 0;
|
|
68
|
+
// Oldest first: `back` counts down to the bar just pushed.
|
|
69
|
+
for (let back = size - 1; back >= 0; back -= 1) {
|
|
70
|
+
total += lookback.at(back);
|
|
71
|
+
}
|
|
72
|
+
return result(total);
|
|
73
|
+
},
|
|
74
|
+
sumPresent() {
|
|
75
|
+
if (!lookback.filled())
|
|
76
|
+
return NONE;
|
|
77
|
+
let total = 0;
|
|
78
|
+
for (let back = size - 1; back >= 0; back -= 1) {
|
|
79
|
+
const value = lookback.at(back);
|
|
80
|
+
if (isPresent(value))
|
|
81
|
+
total += value;
|
|
82
|
+
}
|
|
83
|
+
return result(total);
|
|
84
|
+
},
|
|
85
|
+
mean() {
|
|
86
|
+
const total = lookback.sum();
|
|
87
|
+
return isPresent(total) ? result(total / size) : NONE;
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
return lookback;
|
|
91
|
+
}
|
|
92
|
+
/** A lookback of `len` bars in a region of its own, for a caller that has none. */
|
|
93
|
+
export function makeLookback(len) {
|
|
94
|
+
return ring(newState(), 'q', len);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Seeded smoothing: the mean of the first complete lookback, then one step per
|
|
98
|
+
* bar.
|
|
99
|
+
*
|
|
100
|
+
* The seed lookback is complete only when it holds `len` present values, so an
|
|
101
|
+
* average taken over another study's output starts counting at that study's
|
|
102
|
+
* first value rather than at bar 0. That is what makes the warmups of
|
|
103
|
+
* `stdlib.md` compose, and it is why `ema(sma(close, 10), 10)` is absent until
|
|
104
|
+
* bar 18 rather than bar 9.
|
|
105
|
+
*
|
|
106
|
+
* A hole in the input freezes the recurrence: an absent bar after seeding
|
|
107
|
+
* produces an absent bar out and leaves the running value untouched, so the
|
|
108
|
+
* next present bar continues from where the last one left off. The alternatives
|
|
109
|
+
* are worse: consuming absence as zero would drag the average toward nothing,
|
|
110
|
+
* and re-seeding would let one missing bar restart a two hundred bar average.
|
|
111
|
+
*/
|
|
112
|
+
export function smoothed(record, key, len, value, step) {
|
|
113
|
+
const seed = ring(record, `${key}~`, len);
|
|
114
|
+
const runningKey = `${key}:r`;
|
|
115
|
+
const startedKey = `${key}:o`;
|
|
116
|
+
if (record[startedKey] !== true) {
|
|
117
|
+
seed.push(value);
|
|
118
|
+
const mean = seed.mean();
|
|
119
|
+
if (!isPresent(mean))
|
|
120
|
+
return NONE;
|
|
121
|
+
record[startedKey] = true;
|
|
122
|
+
record[runningKey] = mean;
|
|
123
|
+
return result(mean);
|
|
124
|
+
}
|
|
125
|
+
if (!isPresent(value))
|
|
126
|
+
return NONE;
|
|
127
|
+
const previous = record[runningKey];
|
|
128
|
+
if (typeof previous !== 'number')
|
|
129
|
+
return NONE;
|
|
130
|
+
const next = step(previous, value);
|
|
131
|
+
record[runningKey] = next;
|
|
132
|
+
return result(next);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=lookback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookback.js","sourceRoot":"","sources":["../../../../src/core/stdlib/values/lookback.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|