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,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What is settled about a read before bar 0, `compiled-program.md` 2.16.
|
|
3
|
+
*
|
|
4
|
+
* **A request's identity is fixed before bar 0.** That is what lets the whole
|
|
5
|
+
* set be known at load, what lets a host fetch in parallel and cache by
|
|
6
|
+
* instrument and timeframe, and what makes a request that changed afterwards
|
|
7
|
+
* OS6013. So the three identity fields are resolved here, once, from the value
|
|
8
|
+
* the script wrote, the setting it named or the chart fact it named, and
|
|
9
|
+
* nothing below bar 0 ever asks again.
|
|
10
|
+
*
|
|
11
|
+
* **Two refusals belong at load and four belong to the host.** A timeframe the
|
|
12
|
+
* language does not know (OS6001), one finer than the chart's (OS6002) and one
|
|
13
|
+
* that does not fold into the chart's (OS6015) are facts about the program and
|
|
14
|
+
* the chart, both known before a bar runs, so they stop the load and name what
|
|
15
|
+
* was refused. An unknown instrument (OS6007), a range with no bars (OS6008), a
|
|
16
|
+
* source that refused (OS6009) and an interval the feed does not carry (OS6014)
|
|
17
|
+
* are the host's answers: they leave the read absent, put the reason in
|
|
18
|
+
* `req.error(read)` and let the study keep drawing everything else, which is
|
|
19
|
+
* `stdlib.md` 15.5.
|
|
20
|
+
*/
|
|
21
|
+
import { diagnosticFor } from '../diagnostics/index.js';
|
|
22
|
+
import { NO_POSITION, failure } from './errors.js';
|
|
23
|
+
import { foldRefusal, isIntraday, parseTimeframe } from './timeframe.js';
|
|
24
|
+
/**
|
|
25
|
+
* One of the three identity fields, resolved.
|
|
26
|
+
*
|
|
27
|
+
* Three forms and no fourth: the string the script wrote, the value of the
|
|
28
|
+
* setting it named, and one of the three chart facts that identify a chart
|
|
29
|
+
* rather than describe it.
|
|
30
|
+
*/
|
|
31
|
+
export function identityOf(field, inputs, host) {
|
|
32
|
+
if (typeof field === 'string')
|
|
33
|
+
return field;
|
|
34
|
+
if (field === null || typeof field !== 'object' || Array.isArray(field))
|
|
35
|
+
return null;
|
|
36
|
+
const named = field;
|
|
37
|
+
if (typeof named.input === 'string') {
|
|
38
|
+
const found = inputs.find((one) => one.key === named.input);
|
|
39
|
+
return typeof found?.value === 'string' ? found.value : null;
|
|
40
|
+
}
|
|
41
|
+
if (named.chart === 'symbol')
|
|
42
|
+
return host.instrument?.symbol ?? null;
|
|
43
|
+
if (named.chart === 'exchange')
|
|
44
|
+
return host.instrument?.exchange ?? null;
|
|
45
|
+
if (named.chart === 'interval')
|
|
46
|
+
return host.instrument?.interval ?? null;
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Every read the program makes, with its identity settled.
|
|
51
|
+
*
|
|
52
|
+
* Walks the nested reads as well, because a read written inside another is part
|
|
53
|
+
* of the program and a host handed a list with one missing would fetch less
|
|
54
|
+
* than the file asks for.
|
|
55
|
+
*/
|
|
56
|
+
export function planRequests(requests, inputs, host) {
|
|
57
|
+
const chart = chartTimeframe(host);
|
|
58
|
+
const plans = [];
|
|
59
|
+
const problem = collect(requests, inputs, host, chart, plans);
|
|
60
|
+
if (problem !== undefined)
|
|
61
|
+
return { ok: false, diagnostic: problem };
|
|
62
|
+
return { ok: true, plans };
|
|
63
|
+
}
|
|
64
|
+
function collect(requests, inputs, host, chart, into) {
|
|
65
|
+
for (const request of requests) {
|
|
66
|
+
const written = identityOf(request.timeframe, inputs, host);
|
|
67
|
+
const timeframe = written === null ? undefined : parseTimeframe(written);
|
|
68
|
+
if (timeframe === undefined) {
|
|
69
|
+
return failure('OS6001', NO_POSITION, { value: written ?? 'nothing' });
|
|
70
|
+
}
|
|
71
|
+
// The chart's interval is a host fact and a host may state none. Without it
|
|
72
|
+
// there is nothing to compare a request against, so the two comparisons are
|
|
73
|
+
// skipped rather than answered from a value nobody supplied.
|
|
74
|
+
const refusal = chart === undefined ? undefined : foldRefusal(timeframe, chart);
|
|
75
|
+
if (refusal !== undefined && chart !== undefined) {
|
|
76
|
+
if (refusal.code === 'OS6002') {
|
|
77
|
+
return failure('OS6002', NO_POSITION, { chart: chart.text, requested: timeframe.text });
|
|
78
|
+
}
|
|
79
|
+
return failure('OS6015', NO_POSITION, {
|
|
80
|
+
requested: timeframe.text,
|
|
81
|
+
chart: chart.text,
|
|
82
|
+
suggestion: refusal.suggestion,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
into.push({
|
|
86
|
+
request,
|
|
87
|
+
timeframe,
|
|
88
|
+
zone: host.instrument?.timezone ?? null,
|
|
89
|
+
query: {
|
|
90
|
+
id: request.id,
|
|
91
|
+
read: request.read,
|
|
92
|
+
instrument: instrumentOf(request, inputs, host),
|
|
93
|
+
exchange: exchangeOf(request, inputs, host),
|
|
94
|
+
timeframe: timeframe.text,
|
|
95
|
+
mode: request.mode,
|
|
96
|
+
warmup: request.warmup,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
const nested = collect(request.body.requests, inputs, host, timeframe, into);
|
|
100
|
+
if (nested !== undefined)
|
|
101
|
+
return nested;
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The instrument a read asks about, with the format's own default applied.
|
|
107
|
+
*
|
|
108
|
+
* 2.16 spells a read of the chart's own instrument as a `null` `symbol`, so
|
|
109
|
+
* resolving it here is applying the format's rule rather than inventing one:
|
|
110
|
+
* the host is handed the identity it gave for the chart, which is what
|
|
111
|
+
* `host-interface.md` 5.2 says a request carries.
|
|
112
|
+
*
|
|
113
|
+
* **The default belongs to a `"timeframe"` read and to nothing else.** A
|
|
114
|
+
* `"symbol"` read whose identity did not resolve, because the setting behind it
|
|
115
|
+
* holds something that is not an instrument, stays absent. Falling back there
|
|
116
|
+
* would turn a read of another instrument into a second read of this one, and
|
|
117
|
+
* the study would draw a line nobody asked for with nothing to say it had
|
|
118
|
+
* substituted anything.
|
|
119
|
+
*/
|
|
120
|
+
function instrumentOf(request, inputs, host) {
|
|
121
|
+
const named = identityOf(request.symbol, inputs, host);
|
|
122
|
+
if (named !== null)
|
|
123
|
+
return named;
|
|
124
|
+
return request.read === 'timeframe' ? host.instrument?.symbol ?? null : null;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Where a read's instrument trades, with `stdlib.md` 15.1's default applied.
|
|
128
|
+
*
|
|
129
|
+
* `req.symbol`'s signature defaults `exchange` to `chart.exchange`, and 2.16
|
|
130
|
+
* spells the omission as `null`, "means the chart's exchange". A host handed
|
|
131
|
+
* that `null` would have to apply the rule against the record it supplied, and
|
|
132
|
+
* a host that applied it differently, or not at all, would resolve an
|
|
133
|
+
* instrument on a venue the script never named. So it is applied once, here.
|
|
134
|
+
*/
|
|
135
|
+
function exchangeOf(request, inputs, host) {
|
|
136
|
+
return identityOf(request.exchange, inputs, host) ?? host.instrument?.exchange ?? null;
|
|
137
|
+
}
|
|
138
|
+
/** The chart's own interval as a timeframe, when the host stated a usable one. */
|
|
139
|
+
function chartTimeframe(host) {
|
|
140
|
+
const interval = host.instrument?.interval;
|
|
141
|
+
return interval === undefined ? undefined : parseTimeframe(interval);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* What the host says about one read.
|
|
145
|
+
*
|
|
146
|
+
* A host with no provider is not asked. A read of the chart's own instrument is
|
|
147
|
+
* then folded from the bars the engine already holds, and a read of another
|
|
148
|
+
* instrument cannot be: the engine holds none of that instrument's bars, so
|
|
149
|
+
* nothing to serve is the same answer as an instrument the host does not know.
|
|
150
|
+
*/
|
|
151
|
+
export function askHost(plan, host) {
|
|
152
|
+
const answer = host.requestBars?.(plan.query);
|
|
153
|
+
if (answer !== undefined)
|
|
154
|
+
return answer;
|
|
155
|
+
if (plan.query.read === 'timeframe')
|
|
156
|
+
return undefined;
|
|
157
|
+
return { refused: { code: 'OS6007' } };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Whether this read can date a bucket at all.
|
|
161
|
+
*
|
|
162
|
+
* A day, week or month request is folded by the calendar, and a calendar
|
|
163
|
+
* boundary is a civil date read in a zone (`timeframe.ts`). A host that stated
|
|
164
|
+
* no timezone leaves the fold with no key for any bar, so the read is absent on
|
|
165
|
+
* every bar of the run and will be on every future one: nothing that arrives
|
|
166
|
+
* later supplies a fact the instrument record does not hold.
|
|
167
|
+
*
|
|
168
|
+
* That is a dead read, and a dead read a study cannot explain is the worst of
|
|
169
|
+
* the three: the trader has already looked at the blank pane. So it is answered
|
|
170
|
+
* here rather than left as absence, and `req.isReady` and `req.error` say it.
|
|
171
|
+
*/
|
|
172
|
+
export function undatable(plan) {
|
|
173
|
+
return !isIntraday(plan.timeframe) && plan.zone === null;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* What `req.error(read)` says about a read with no zone to date its buckets.
|
|
177
|
+
*
|
|
178
|
+
* OS6012's own message, because the zone is an instrument fact the host did not
|
|
179
|
+
* supply and that is exactly what this read needs and cannot default. Nothing
|
|
180
|
+
* is raised: a fact the host did not state leaves the read absent, and this is
|
|
181
|
+
* the sentence that explains the absence rather than a second answer to the
|
|
182
|
+
* question `host-interface.md` 4.5 leaves open.
|
|
183
|
+
*/
|
|
184
|
+
export function undatableReason(query) {
|
|
185
|
+
return diagnosticFor('OS6012', NO_POSITION, { fact: 'a timezone', symbol: named(query) }).message;
|
|
186
|
+
}
|
|
187
|
+
/** The instrument a reason names: the one the read asked for, or the chart's. */
|
|
188
|
+
function named(query) {
|
|
189
|
+
return query.instrument ?? 'the chart\'s instrument';
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* The reason a refusal reads as through `req.error(read)`.
|
|
193
|
+
*
|
|
194
|
+
* The catalogue's own message, filled with the identity the read asked for and
|
|
195
|
+
* with the host's own words where it gave them. The host's words are carried
|
|
196
|
+
* and not paraphrased, because "the account's data subscription does not cover
|
|
197
|
+
* this instrument" is actionable and "the request failed" is not.
|
|
198
|
+
*/
|
|
199
|
+
export function reasonFor(refusal, query) {
|
|
200
|
+
const symbol = named(query);
|
|
201
|
+
const exchange = query.exchange ?? 'the chart\'s exchange';
|
|
202
|
+
const reason = refusal.reason ?? 'the host gave no reason';
|
|
203
|
+
switch (refusal.code) {
|
|
204
|
+
case 'OS6007':
|
|
205
|
+
return diagnosticFor('OS6007', NO_POSITION, { symbol, exchange }).message;
|
|
206
|
+
case 'OS6008':
|
|
207
|
+
return diagnosticFor('OS6008', NO_POSITION, { symbol, timeframe: query.timeframe }).message;
|
|
208
|
+
case 'OS6014':
|
|
209
|
+
return diagnosticFor('OS6014', NO_POSITION, {
|
|
210
|
+
timeframe: query.timeframe,
|
|
211
|
+
symbol,
|
|
212
|
+
available: refusal.available ?? 'nothing it named',
|
|
213
|
+
}).message;
|
|
214
|
+
case 'OS6015':
|
|
215
|
+
return diagnosticFor('OS6015', NO_POSITION, {
|
|
216
|
+
requested: query.timeframe,
|
|
217
|
+
chart: 'the chart\'s interval',
|
|
218
|
+
suggestion: refusal.available ?? 'a whole multiple of it',
|
|
219
|
+
}).message;
|
|
220
|
+
default:
|
|
221
|
+
return diagnosticFor('OS6009', NO_POSITION, {
|
|
222
|
+
symbol,
|
|
223
|
+
timeframe: query.timeframe,
|
|
224
|
+
reason,
|
|
225
|
+
}).message;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=request-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-plan.js","sourceRoot":"","sources":["../../../src/core/engine/request-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Higher timeframe and other instrument reads, folded onto the chart's bars.
|
|
3
|
+
*
|
|
4
|
+
* A read is an expression evaluated over a **different set of bars** than the
|
|
5
|
+
* chart's, whose value is then folded back onto the chart's. Two halves, and
|
|
6
|
+
* they are in two files: `request-body.ts` runs the expression once per
|
|
7
|
+
* requested bar, and this decides which requested bar each chart bar is allowed
|
|
8
|
+
* to see. The second half is where the off-by-one lives, so it is written as
|
|
9
|
+
* one comparison repeated three times rather than as three rules.
|
|
10
|
+
*
|
|
11
|
+
* **Bars in, buckets out.** Source bars are grouped by the bucket key of their
|
|
12
|
+
* open instant (`timeframe.ts`); a bucket becomes one requested bar. The source
|
|
13
|
+
* is the chart's own bars for a read of the chart's instrument, which is the
|
|
14
|
+
* read `host-interface.md` 5.1 says an engine can satisfy from what it already
|
|
15
|
+
* holds, and the host's answer for a read of another instrument, which it never
|
|
16
|
+
* can. One fold serves both, so the two kinds of read cannot drift apart.
|
|
17
|
+
*
|
|
18
|
+
* **The three modes differ in one thing: how far past the chart bar the fold is
|
|
19
|
+
* allowed to look.** Everything else about them is the same code.
|
|
20
|
+
*
|
|
21
|
+
* | Mode | Source bars it may consume | Value the chart bar takes |
|
|
22
|
+
* |---|---|---|
|
|
23
|
+
* | `"confirmed"` | Those opening at or before this chart bar | The last bucket that closed |
|
|
24
|
+
* | `"developing"` | Those opening at or before this chart bar | The bucket this bar is inside, so far |
|
|
25
|
+
* | `"lookahead"` | Those belonging to this bar's bucket or earlier | The bucket this bar is inside, in full |
|
|
26
|
+
*
|
|
27
|
+
* Read the middle column, because it is the repainting question written out.
|
|
28
|
+
* Confirmed and developing stop at the chart bar and can be computed live;
|
|
29
|
+
* lookahead reads past it, which is why it repaints on history permanently and
|
|
30
|
+
* by design, and why on the newest bucket, where there is nothing past the bar
|
|
31
|
+
* to read, it is the bucket so far and nothing better exists.
|
|
32
|
+
*
|
|
33
|
+
* **The boundary.** A bucket has begun on the first chart bar whose key is the
|
|
34
|
+
* new one, because a bar's open instant is what dates it. So a confirmed read
|
|
35
|
+
* steps to the closed bucket's value on the first chart bar of the next bucket,
|
|
36
|
+
* holds it across every bar inside that bucket including the last, and steps
|
|
37
|
+
* again on the first bar of the one after. The bar a bucket closes on still
|
|
38
|
+
* reads the bucket before it: at that bar's open, the bucket it is inside had
|
|
39
|
+
* not closed.
|
|
40
|
+
*
|
|
41
|
+
* **Warmup translates by arithmetic and not by a rule.** The expression runs on
|
|
42
|
+
* requested bars, so its own warmup is counted in requested bars and its absence
|
|
43
|
+
* folds onto the chart like any other value: a twenty period average of daily
|
|
44
|
+
* closes is absent until twenty daily bars exist, which on a five minute chart
|
|
45
|
+
* is about a month in. The `warmup` field of the compiled program is what a host
|
|
46
|
+
* extends the fetch range backwards by, a floor and not a promise, and an engine
|
|
47
|
+
* given less gets a read that is absent for longer rather than a wrong number.
|
|
48
|
+
*/
|
|
49
|
+
import type { Span } from '../span/index.js';
|
|
50
|
+
import type { HostBar } from './bars.js';
|
|
51
|
+
import type { Clock, EngineLimits } from './budget.js';
|
|
52
|
+
import type { EngineHost } from './host.js';
|
|
53
|
+
import type { ResolvedInput } from './inputs.js';
|
|
54
|
+
import type { HostFacts, ManifestEntry, PositionFacts } from './library/index.js';
|
|
55
|
+
import type { Registers } from './registers.js';
|
|
56
|
+
import type { RequestPlan } from './request-plan.js';
|
|
57
|
+
import type { CompiledProgram, Request } from './types.js';
|
|
58
|
+
import type { Heap, Value } from './values/index.js';
|
|
59
|
+
export interface RequestParts {
|
|
60
|
+
readonly program: CompiledProgram;
|
|
61
|
+
/** Every read in the program, nested ones included, keyed by its own id. */
|
|
62
|
+
readonly plans: ReadonlyMap<number, RequestPlan>;
|
|
63
|
+
readonly host: EngineHost;
|
|
64
|
+
readonly limits: EngineLimits;
|
|
65
|
+
readonly clock: Clock | undefined;
|
|
66
|
+
readonly library: readonly ManifestEntry[];
|
|
67
|
+
readonly inputs: readonly ResolvedInput[];
|
|
68
|
+
/** The facts a body inherits, with its own identity written over three of them. */
|
|
69
|
+
readonly facts: HostFacts;
|
|
70
|
+
/** The strategy's own position, which a body reads as the chart's bars do. */
|
|
71
|
+
readonly position: PositionFacts;
|
|
72
|
+
/**
|
|
73
|
+
* The heap of the machine these reads land in, read when a bar asks for it.
|
|
74
|
+
*
|
|
75
|
+
* A function rather than the heap, because a read written inside another lands
|
|
76
|
+
* in the enclosing body's heap and that body does not exist until its own
|
|
77
|
+
* reads have been built.
|
|
78
|
+
*/
|
|
79
|
+
heapOf(): Heap;
|
|
80
|
+
spanAt(line: number, column: number): Span;
|
|
81
|
+
}
|
|
82
|
+
export declare class RequestSet {
|
|
83
|
+
private readonly reads;
|
|
84
|
+
private readonly byId;
|
|
85
|
+
private readonly parts;
|
|
86
|
+
constructor(parts: RequestParts, requests: readonly Request[]);
|
|
87
|
+
get empty(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Step 4: each read's value for this bar, written into its `"request"`
|
|
90
|
+
* register.
|
|
91
|
+
*
|
|
92
|
+
* `fresh` says whether this is the first execution of this bar. A bar that is
|
|
93
|
+
* executing again restores the fold to where it stood when the bar began and
|
|
94
|
+
* rebuilds the bucket now forming from the source as it now stands, which is
|
|
95
|
+
* what makes a moving bar idempotent one level down: the newest chart bar may
|
|
96
|
+
* have been revised since the last execution, and the bucket it is inside has
|
|
97
|
+
* to be rebuilt from the revision rather than from the reading it replaced.
|
|
98
|
+
*/
|
|
99
|
+
fill(registers: Registers, bars: readonly HostBar[], index: number, fresh: boolean): void;
|
|
100
|
+
/** `req.isReady(read)`: whether the host has answered this one yet. */
|
|
101
|
+
answered(id: Value): Value;
|
|
102
|
+
/** `req.error(read)`: the reason it failed, or the empty string when none has. */
|
|
103
|
+
failure(id: Value): Value;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=requests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../src/core/engine/requests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAgCD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE;IAW7D,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;;;;;;;OAUG;IACH,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAczF,uEAAuE;IACvE,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK;IAI1B,kFAAkF;IAClF,OAAO,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK;CAG1B"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { RequestBody, bodyProgram } from './request-body.js';
|
|
2
|
+
import { askHost, reasonFor, undatable, undatableReason } from './request-plan.js';
|
|
3
|
+
import { bucketKeyOf } from './timeframe.js';
|
|
4
|
+
import { ABSENT } from './values/index.js';
|
|
5
|
+
const START = { cursor: 0, openKey: undefined, openFrom: 0 };
|
|
6
|
+
export class RequestSet {
|
|
7
|
+
reads = [];
|
|
8
|
+
byId = new Map();
|
|
9
|
+
parts;
|
|
10
|
+
constructor(parts, requests) {
|
|
11
|
+
this.parts = parts;
|
|
12
|
+
for (const request of requests) {
|
|
13
|
+
const plan = parts.plans.get(request.id);
|
|
14
|
+
if (plan === undefined)
|
|
15
|
+
continue;
|
|
16
|
+
const read = build(parts, request, plan);
|
|
17
|
+
this.reads.push(read);
|
|
18
|
+
this.byId.set(request.id, read);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
get empty() {
|
|
22
|
+
return this.reads.length === 0;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Step 4: each read's value for this bar, written into its `"request"`
|
|
26
|
+
* register.
|
|
27
|
+
*
|
|
28
|
+
* `fresh` says whether this is the first execution of this bar. A bar that is
|
|
29
|
+
* executing again restores the fold to where it stood when the bar began and
|
|
30
|
+
* rebuilds the bucket now forming from the source as it now stands, which is
|
|
31
|
+
* what makes a moving bar idempotent one level down: the newest chart bar may
|
|
32
|
+
* have been revised since the last execution, and the bucket it is inside has
|
|
33
|
+
* to be rebuilt from the revision rather than from the reading it replaced.
|
|
34
|
+
*/
|
|
35
|
+
fill(registers, bars, index, fresh) {
|
|
36
|
+
const heap = this.parts.heapOf();
|
|
37
|
+
for (const read of this.reads) {
|
|
38
|
+
if (fresh) {
|
|
39
|
+
read.mark = { cursor: read.cursor, openKey: read.openKey, openFrom: read.openFrom };
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
restore(read, bars);
|
|
43
|
+
}
|
|
44
|
+
// The body's value is the body's, in the body's heap. `carry` is what
|
|
45
|
+
// makes it a value of the machine that is about to read it.
|
|
46
|
+
registers.set(read.register, read.body.carry(valueOf(read, bars, index), heap));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** `req.isReady(read)`: whether the host has answered this one yet. */
|
|
50
|
+
answered(id) {
|
|
51
|
+
return typeof id === 'number' ? this.byId.get(id)?.ready === true : false;
|
|
52
|
+
}
|
|
53
|
+
/** `req.error(read)`: the reason it failed, or the empty string when none has. */
|
|
54
|
+
failure(id) {
|
|
55
|
+
return typeof id === 'number' ? this.byId.get(id)?.reason ?? '' : '';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function build(parts, request, plan) {
|
|
59
|
+
const view = bodyProgram(parts.program, request);
|
|
60
|
+
const answer = askHost(plan, parts.host);
|
|
61
|
+
const refused = answer !== undefined && 'refused' in answer ? answer.refused : undefined;
|
|
62
|
+
let body;
|
|
63
|
+
// The facts a body reads are the chart's, except the three that identify an
|
|
64
|
+
// instrument: inside a read, those are the instrument and the interval the
|
|
65
|
+
// read asked for. The two request calls answer about the reads written inside
|
|
66
|
+
// this body, which is why the set below is built before the body is.
|
|
67
|
+
let nested;
|
|
68
|
+
const facts = {
|
|
69
|
+
...parts.facts,
|
|
70
|
+
symbol: () => plan.query.instrument ?? parts.facts.symbol(),
|
|
71
|
+
exchange: () => plan.query.exchange ?? parts.facts.exchange(),
|
|
72
|
+
interval: () => plan.query.timeframe,
|
|
73
|
+
requestReady: (id) => nested?.answered(id) ?? false,
|
|
74
|
+
requestError: (id) => nested?.failure(id) ?? '',
|
|
75
|
+
};
|
|
76
|
+
nested = new RequestSet(
|
|
77
|
+
// A read inside this one lands in this body's heap, which is built below.
|
|
78
|
+
{ ...parts, program: view, facts, heapOf: () => body.objects }, request.body.requests);
|
|
79
|
+
body = new RequestBody({
|
|
80
|
+
program: view,
|
|
81
|
+
limits: parts.limits,
|
|
82
|
+
clock: parts.clock,
|
|
83
|
+
host: facts,
|
|
84
|
+
position: parts.position,
|
|
85
|
+
library: parts.library,
|
|
86
|
+
inputs: request.body.inputs.map((one) => ({
|
|
87
|
+
series: one.series,
|
|
88
|
+
value: parts.inputs.find((input) => input.key === one.input)?.value ?? null,
|
|
89
|
+
})),
|
|
90
|
+
nested,
|
|
91
|
+
spanAt: parts.spanAt,
|
|
92
|
+
});
|
|
93
|
+
// A reason is the read saying why it will never answer. A refusal is the
|
|
94
|
+
// host's; a calendar fold with no zone to date a bucket in is the engine's,
|
|
95
|
+
// and it is stated here rather than left as an absence the study cannot
|
|
96
|
+
// explain. The host's own words win where both hold: a source that refused is
|
|
97
|
+
// the fix the user can act on first.
|
|
98
|
+
const reason = refused !== undefined
|
|
99
|
+
? reasonFor(refused, plan.query)
|
|
100
|
+
: undatable(plan)
|
|
101
|
+
? undatableReason(plan.query)
|
|
102
|
+
: '';
|
|
103
|
+
return {
|
|
104
|
+
plan,
|
|
105
|
+
register: request.series,
|
|
106
|
+
body,
|
|
107
|
+
source: answer !== undefined && 'bars' in answer ? answer.bars : undefined,
|
|
108
|
+
// A fold of the chart's own bars needs nothing from the host, so it is
|
|
109
|
+
// answered the moment it is planned. A read the host is still fetching is
|
|
110
|
+
// not: the read is absent, `req.isReady` is false, and the study keeps
|
|
111
|
+
// drawing everything that does not depend on it. A read with a reason is
|
|
112
|
+
// never ready: it is not waiting for anything.
|
|
113
|
+
ready: reason === '' && (answer === undefined ? plan.query.read === 'timeframe' : 'bars' in answer),
|
|
114
|
+
reason,
|
|
115
|
+
cursor: 0,
|
|
116
|
+
openKey: undefined,
|
|
117
|
+
openFrom: 0,
|
|
118
|
+
open: undefined,
|
|
119
|
+
closedValue: ABSENT,
|
|
120
|
+
highestClosed: undefined,
|
|
121
|
+
mark: START,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/** The read's value for the chart bar at `index`, and the fold that gets there. */
|
|
125
|
+
function valueOf(read, bars, index) {
|
|
126
|
+
if (!read.ready)
|
|
127
|
+
return ABSENT;
|
|
128
|
+
const bar = bars[index];
|
|
129
|
+
const at = bar?.time ?? null;
|
|
130
|
+
if (at === null)
|
|
131
|
+
return ABSENT;
|
|
132
|
+
const key = keyOf(read, at);
|
|
133
|
+
if (key === undefined)
|
|
134
|
+
return ABSENT;
|
|
135
|
+
const source = read.source ?? bars;
|
|
136
|
+
const lookahead = read.plan.request.mode === 'lookahead';
|
|
137
|
+
for (;;) {
|
|
138
|
+
const next = source[read.cursor];
|
|
139
|
+
if (next === undefined)
|
|
140
|
+
break;
|
|
141
|
+
const found = next.time === null ? undefined : keyOf(read, next.time);
|
|
142
|
+
if (found === undefined) {
|
|
143
|
+
// A source bar with no time, or none this calendar can date, belongs to
|
|
144
|
+
// no bucket. It is stepped over rather than folded into whichever bucket
|
|
145
|
+
// happens to be open.
|
|
146
|
+
read.cursor += 1;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
// The one line the three modes differ in. A lookahead read may read to the
|
|
150
|
+
// end of the bucket the chart bar is inside; the other two stop at the bar.
|
|
151
|
+
if (lookahead ? found > key : (next.time ?? 0) > at)
|
|
152
|
+
break;
|
|
153
|
+
read.cursor += 1;
|
|
154
|
+
feed(read, next, found);
|
|
155
|
+
}
|
|
156
|
+
if (read.plan.request.mode === 'confirmed')
|
|
157
|
+
return read.closedValue;
|
|
158
|
+
if (read.openKey !== key || read.open === undefined)
|
|
159
|
+
return ABSENT;
|
|
160
|
+
return read.body.peek(read.open);
|
|
161
|
+
}
|
|
162
|
+
function keyOf(read, instant) {
|
|
163
|
+
return bucketKeyOf(instant, read.plan.timeframe, read.plan.zone);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* One source bar folded in.
|
|
167
|
+
*
|
|
168
|
+
* A bar whose key is the open bucket's extends it. A bar whose key is new
|
|
169
|
+
* closes the open bucket, which is the only place a requested bar ever settles:
|
|
170
|
+
* a bucket is closed by something later, never by the clock. The guard on
|
|
171
|
+
* `highestClosed` is what makes that idempotent, because a chart bar that
|
|
172
|
+
* closed a bucket on its first execution must not close it again on its second.
|
|
173
|
+
*/
|
|
174
|
+
function feed(read, bar, key) {
|
|
175
|
+
if (read.openKey === key && read.open !== undefined) {
|
|
176
|
+
read.open = extend(read.open, bar);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (read.openKey !== undefined && read.open !== undefined) {
|
|
180
|
+
if (read.highestClosed === undefined || read.openKey > read.highestClosed) {
|
|
181
|
+
read.closedValue = read.body.settle(read.open);
|
|
182
|
+
read.highestClosed = read.openKey;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
read.openKey = key;
|
|
186
|
+
read.openFrom = read.cursor - 1;
|
|
187
|
+
read.open = start(bar);
|
|
188
|
+
}
|
|
189
|
+
/** A re-executed bar: the fold as it stood when the bar began. */
|
|
190
|
+
function restore(read, bars) {
|
|
191
|
+
read.cursor = read.mark.cursor;
|
|
192
|
+
read.openKey = read.mark.openKey;
|
|
193
|
+
read.openFrom = read.mark.openFrom;
|
|
194
|
+
read.open = undefined;
|
|
195
|
+
if (read.openKey === undefined)
|
|
196
|
+
return;
|
|
197
|
+
const source = read.source ?? bars;
|
|
198
|
+
for (let at = read.openFrom; at < read.cursor; at += 1) {
|
|
199
|
+
const bar = source[at];
|
|
200
|
+
if (bar === undefined || bar.time === null)
|
|
201
|
+
continue;
|
|
202
|
+
if (keyOf(read, bar.time) !== read.openKey)
|
|
203
|
+
continue;
|
|
204
|
+
read.open = read.open === undefined ? start(bar) : extend(read.open, bar);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* The first source bar of a bucket, as a bar of its own.
|
|
209
|
+
*
|
|
210
|
+
* The bucket's `time` is this bar's open instant rather than the instant the
|
|
211
|
+
* bucket's key names. The two differ whenever trading begins after the boundary,
|
|
212
|
+
* which is every session on a daily fold, and the first bar's instant is a
|
|
213
|
+
* reading from the data while the boundary is a number the engine chose.
|
|
214
|
+
*/
|
|
215
|
+
function start(bar) {
|
|
216
|
+
return {
|
|
217
|
+
open: bar.open,
|
|
218
|
+
high: bar.high,
|
|
219
|
+
low: bar.low,
|
|
220
|
+
close: bar.close,
|
|
221
|
+
volume: bar.volume ?? null,
|
|
222
|
+
time: bar.time,
|
|
223
|
+
oi: bar.oi ?? null,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* One more source bar in the same bucket.
|
|
228
|
+
*
|
|
229
|
+
* **Absence propagates through every field**, which is `host-interface.md` 3.1:
|
|
230
|
+
* an absent price is a hole and what it feeds turns absent. So a bucket whose
|
|
231
|
+
* high is missing from one of its bars has no high, rather than the highest of
|
|
232
|
+
* the bars that did report one, which would be a number with no name. Open is
|
|
233
|
+
* the first bar's, close is the last bar's, and open interest is a level rather
|
|
234
|
+
* than a flow so the coarser bar takes the last and never the sum.
|
|
235
|
+
*/
|
|
236
|
+
function extend(into, bar) {
|
|
237
|
+
return {
|
|
238
|
+
open: into.open,
|
|
239
|
+
high: higher(into.high, bar.high),
|
|
240
|
+
low: lower(into.low, bar.low),
|
|
241
|
+
close: bar.close ?? null,
|
|
242
|
+
volume: both(into.volume ?? null, bar.volume ?? null),
|
|
243
|
+
time: into.time,
|
|
244
|
+
oi: bar.oi ?? null,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function higher(a, b) {
|
|
248
|
+
if (a === null || typeof b !== 'number')
|
|
249
|
+
return null;
|
|
250
|
+
return b > a ? b : a;
|
|
251
|
+
}
|
|
252
|
+
function lower(a, b) {
|
|
253
|
+
if (a === null || typeof b !== 'number')
|
|
254
|
+
return null;
|
|
255
|
+
return b < a ? b : a;
|
|
256
|
+
}
|
|
257
|
+
function both(a, b) {
|
|
258
|
+
return a === null || b === null ? null : a + b;
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=requests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../src/core/engine/requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a host reads back from a bar and from a run.
|
|
3
|
+
*
|
|
4
|
+
* Declared apart from the loop that fills it, because these are the shapes an
|
|
5
|
+
* adapter, a test and a second engine's harness all read, and a shape somebody
|
|
6
|
+
* outside this repository depends on is worth being able to read on its own.
|
|
7
|
+
*
|
|
8
|
+
* Four of the six fields are about one bar's execution and two are about what
|
|
9
|
+
* that execution sent and was told: the effects it applied, each carrying the
|
|
10
|
+
* intents it became, and what the frames that arrived before it did to the
|
|
11
|
+
* ledger. A run that places no orders carries both empty for every bar.
|
|
12
|
+
*/
|
|
13
|
+
import type { Diagnostic } from '../diagnostics/index.js';
|
|
14
|
+
import type { AlertFiring } from './alerts.js';
|
|
15
|
+
import type { RoutedEffect } from './host.js';
|
|
16
|
+
import type { FrameOutcome } from './ledger/index.js';
|
|
17
|
+
import type { Value } from './values/index.js';
|
|
18
|
+
/** What one execution of one bar produced. */
|
|
19
|
+
export interface BarResult {
|
|
20
|
+
readonly index: number;
|
|
21
|
+
/** One value per channel, absent where nothing wrote, in channel order. */
|
|
22
|
+
readonly columns: readonly Value[];
|
|
23
|
+
/** Whether step 9 applied the deferred channels and the pending effects. */
|
|
24
|
+
readonly applied: boolean;
|
|
25
|
+
readonly effects: readonly RoutedEffect[];
|
|
26
|
+
/**
|
|
27
|
+
* What the frames delivered since the previous bar did to the ledger, a
|
|
28
|
+
* refused one included (`stdlib.md` 17.14).
|
|
29
|
+
*/
|
|
30
|
+
readonly frames: readonly FrameOutcome[];
|
|
31
|
+
/** The watched conditions this bar raised, empty on a bar that raised none. */
|
|
32
|
+
readonly alerts: readonly AlertFiring[];
|
|
33
|
+
/** The failure that stopped the bar, when one did. */
|
|
34
|
+
readonly diagnostic: Diagnostic | undefined;
|
|
35
|
+
}
|
|
36
|
+
export interface RunResult {
|
|
37
|
+
readonly bars: readonly BarResult[];
|
|
38
|
+
readonly diagnostic: Diagnostic | undefined;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=results.d.ts.map
|