openalgo-script 0.1.0-alpha.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1200 -0
- package/README.md +49 -28
- 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 +204 -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 +84 -0
- package/dist/adapters/charts/tables.js.map +1 -0
- package/dist/core/catalogue/catalogue.generated.d.ts +98 -10
- package/dist/core/catalogue/catalogue.generated.d.ts.map +1 -1
- package/dist/core/catalogue/catalogue.generated.js +17 -9
- package/dist/core/catalogue/catalogue.generated.js.map +1 -1
- package/dist/core/catalogue/values.generated.d.ts +25 -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 +30 -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-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 +38 -0
- package/dist/core/check/surface.d.ts.map +1 -0
- package/dist/core/check/surface.js +100 -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 +45 -0
- package/dist/core/emit/defaults.d.ts.map +1 -0
- package/dist/core/emit/defaults.js +116 -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 +29 -0
- package/dist/core/emit/index.d.ts.map +1 -0
- package/dist/core/emit/index.js +23 -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 +45 -0
- package/dist/core/engine/load.d.ts.map +1 -0
- package/dist/core/engine/load.js +60 -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 +61 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +48 -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/package.json +38 -14
- package/spec/errors.json +382 -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 +238 -0
- package/src/adapters/charts/tables.ts +155 -0
- package/src/core/catalogue/catalogue.generated.ts +17 -9
- package/src/core/catalogue/values.generated.ts +8 -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 +67 -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-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 +115 -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 +150 -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 +74 -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 +104 -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 +128 -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/core/index.ts
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenScript, the compiler
|
|
2
|
+
* OpenScript, the compiler and the engine.
|
|
3
3
|
*
|
|
4
|
-
* This is the whole of what a host needs to
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* This is the whole of what a host needs to take a script and produce values,
|
|
5
|
+
* and it knows nothing about a chart, an editor or a broker. It imports no
|
|
6
|
+
* package and touches no browser global, so the same file runs in a worker, on
|
|
7
|
+
* a server and inside somebody else's application under a content security
|
|
8
|
+
* policy that forbids turning text into code.
|
|
9
|
+
*
|
|
10
|
+
* Three things a host does, and the names that do them:
|
|
11
|
+
*
|
|
12
|
+
* sourceFile, parse, check, emit source text becomes a compiled program
|
|
13
|
+
* load a program is verified and made runnable
|
|
14
|
+
* Engine.run, Engine.append it runs over bars, and values come out
|
|
15
|
+
*
|
|
16
|
+
* Every name below is a promise to somebody who is not in this repository, so
|
|
17
|
+
* the surface is a decision rather than everything the modules hold: a pass, a
|
|
18
|
+
* table or an instruction stays behind its module's door, and a host never has
|
|
19
|
+
* to reach past this file to compile or run a script.
|
|
9
20
|
*
|
|
10
21
|
* The tiers above it are separate entry points, so a host that wants only this
|
|
11
22
|
* one never loads the editor intelligence or an adapter.
|
|
@@ -144,4 +155,115 @@ export {
|
|
|
144
155
|
export { lex } from './lex/index.js';
|
|
145
156
|
|
|
146
157
|
export { parse, parseTokens } from './parse/index.js';
|
|
158
|
+
|
|
159
|
+
export type {
|
|
160
|
+
Binding,
|
|
161
|
+
BindingKind,
|
|
162
|
+
CheckedCall,
|
|
163
|
+
CheckedDeclaration,
|
|
164
|
+
CheckedFunction,
|
|
165
|
+
CheckedInput,
|
|
166
|
+
CheckedOutput,
|
|
167
|
+
CheckedRequest,
|
|
168
|
+
CheckedScript,
|
|
169
|
+
HandleKind,
|
|
170
|
+
InputKind,
|
|
171
|
+
LibraryEntry,
|
|
172
|
+
LibraryParameter,
|
|
173
|
+
ObjectKind,
|
|
174
|
+
RequestMode,
|
|
175
|
+
Storage,
|
|
176
|
+
Type,
|
|
177
|
+
ValueKind,
|
|
178
|
+
WarmupRule,
|
|
179
|
+
Warmup,
|
|
180
|
+
} from './check/index.js';
|
|
181
|
+
export {
|
|
182
|
+
BAR_ZERO,
|
|
183
|
+
HANDLE_KINDS,
|
|
184
|
+
NAMESPACES,
|
|
185
|
+
OBJECT_KINDS,
|
|
186
|
+
STRATEGY_NAMESPACES,
|
|
187
|
+
VALUE_KINDS,
|
|
188
|
+
accepts,
|
|
189
|
+
allOf,
|
|
190
|
+
arrayOf,
|
|
191
|
+
atBar,
|
|
192
|
+
atLeastBar,
|
|
193
|
+
check,
|
|
194
|
+
delayed,
|
|
195
|
+
earlier,
|
|
196
|
+
elementOf,
|
|
197
|
+
isLibraryName,
|
|
198
|
+
isNamespace,
|
|
199
|
+
isNever,
|
|
200
|
+
isSeries,
|
|
201
|
+
join,
|
|
202
|
+
later,
|
|
203
|
+
libraryEntries,
|
|
204
|
+
libraryNames,
|
|
205
|
+
membersOf,
|
|
206
|
+
sameType,
|
|
207
|
+
seriesOf,
|
|
208
|
+
typeText,
|
|
209
|
+
} from './check/index.js';
|
|
210
|
+
export { REQUEST_NAMES } from './check/index.js';
|
|
147
211
|
export { COMPILED_FORMAT_VERSION, VERSION } from './version/index.js';
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* The emitter: a checked script becomes the compiled program.
|
|
215
|
+
*
|
|
216
|
+
* The program is plain data, so a host may store it, send it, and run it here
|
|
217
|
+
* or on an engine somebody else wrote from the specification.
|
|
218
|
+
*
|
|
219
|
+
* `canonicalise` is the encoding the two hashes are taken over and the bytes
|
|
220
|
+
* that travel. A host that records the source hash and the program hash beside
|
|
221
|
+
* a result can later prove an engine upgrade did not change it, which is what
|
|
222
|
+
* `compiled-program.md` 9.5 promises.
|
|
223
|
+
*/
|
|
224
|
+
export { emit } from './emit/index.js';
|
|
225
|
+
export type { EmitOptions, EmitResult } from './emit/index.js';
|
|
226
|
+
export type { CompiledProgram } from './emit/index.js';
|
|
227
|
+
export { canonicalise, programHash, sourceHash } from './emit/index.js';
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* The engine: a program in, one bar at a time, values out.
|
|
231
|
+
*
|
|
232
|
+
* `load` verifies the program in full before a bar executes and answers with a
|
|
233
|
+
* diagnostic rather than an exception, because a host runs many scripts in one
|
|
234
|
+
* process and one failing script must take nothing else down. `verify` is that
|
|
235
|
+
* same check on its own, for a host that keeps compiled programs and wants to
|
|
236
|
+
* refuse a bad one when it arrives rather than when it is first drawn.
|
|
237
|
+
*
|
|
238
|
+
* `capabilitiesFor` and `LANGUAGE_VERSIONS` are this engine's half of the
|
|
239
|
+
* compatibility statement in 9.1, beside `COMPILED_FORMAT_VERSION` above.
|
|
240
|
+
*/
|
|
241
|
+
export { load } from './engine/index.js';
|
|
242
|
+
export type { BarResult, Engine, LoadOptions, LoadResult, RunResult } from './engine/index.js';
|
|
243
|
+
export type {
|
|
244
|
+
BarState,
|
|
245
|
+
EffectRoute,
|
|
246
|
+
EngineHost,
|
|
247
|
+
HostBar,
|
|
248
|
+
Instrument,
|
|
249
|
+
PendingEffect,
|
|
250
|
+
RoutedEffect,
|
|
251
|
+
} from './engine/index.js';
|
|
252
|
+
/**
|
|
253
|
+
* The order boundary: what a strategy sends, what a host reports back, and the
|
|
254
|
+
* ledger the two fold into (`host-interface.md` 7, `stdlib.md` 17.7).
|
|
255
|
+
*/
|
|
256
|
+
export type {
|
|
257
|
+
FrameOutcome,
|
|
258
|
+
Identity,
|
|
259
|
+
LedgerRow,
|
|
260
|
+
OrderFrame,
|
|
261
|
+
OrderIntent,
|
|
262
|
+
OrderStatus,
|
|
263
|
+
} from './engine/index.js';
|
|
264
|
+
export { DEFAULT_LIMITS } from './engine/index.js';
|
|
265
|
+
export type { EngineLimits } from './engine/index.js';
|
|
266
|
+
export { isAbsent } from './engine/index.js';
|
|
267
|
+
export type { Value } from './engine/index.js';
|
|
268
|
+
export { LANGUAGE_VERSIONS, capabilitiesFor, verify } from './engine/index.js';
|
|
269
|
+
export type { VerifyOptions, VerifyResult } from './engine/index.js';
|
|
@@ -303,7 +303,7 @@ function parsePrimary(cursor: Cursor): Expression {
|
|
|
303
303
|
// not read, and the next thing the reader is told is that a bracket they
|
|
304
304
|
// plainly closed was never closed.
|
|
305
305
|
if (isMeantAsAName(token.kind)) {
|
|
306
|
-
const name = takeName(cursor);
|
|
306
|
+
const name = takeName(cursor, true);
|
|
307
307
|
return makeNode('nameReference', name.span, { name: name.text });
|
|
308
308
|
}
|
|
309
309
|
return expressionExpected(cursor);
|
package/src/core/parse/names.ts
CHANGED
|
@@ -76,6 +76,26 @@ function unreservedNear(word: string): string {
|
|
|
76
76
|
return `${word}Value`;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
/**
|
|
80
|
+
* The library spelling of a reserved word somebody wrote as a call.
|
|
81
|
+
*
|
|
82
|
+
* `bool` and `number` name types, and the two conversions to those types have to
|
|
83
|
+
* be called by a name, which a reserved word is not. For one release the library
|
|
84
|
+
* published them under the type names anyway: the checker called them functions,
|
|
85
|
+
* the lexer called the same words reserved, and every spelling a reader could
|
|
86
|
+
* write was refused with advice to rename a variable they had not declared. The
|
|
87
|
+
* conversions are `toBool` and `toNumber`, and this is the table that says so to
|
|
88
|
+
* whoever wrote the natural thing.
|
|
89
|
+
*
|
|
90
|
+
* It is two entries because two names collided, not because a rule needs a list:
|
|
91
|
+
* a library name is never a reserved word, and `tests/unit/library-names.test.ts`
|
|
92
|
+
* fails the build if one ever is again.
|
|
93
|
+
*/
|
|
94
|
+
const CALLED_INSTEAD: ReadonlyMap<string, string> = new Map([
|
|
95
|
+
['bool', 'toBool'],
|
|
96
|
+
['number', 'toNumber'],
|
|
97
|
+
]);
|
|
98
|
+
|
|
79
99
|
/** No word where one was required, which leaves the statement without its subject. */
|
|
80
100
|
function missingWord(cursor: Cursor): Name {
|
|
81
101
|
const hole = cursor.holeSpan();
|
|
@@ -91,16 +111,23 @@ function missingWord(cursor: Cursor): Name {
|
|
|
91
111
|
* The word is taken either way. A script that named something `type` still
|
|
92
112
|
* meant to declare it, and every later diagnostic about that name is more use
|
|
93
113
|
* to the reader than a hole where the declaration should have been.
|
|
114
|
+
*
|
|
115
|
+
* `asValue` is set by the one reader that takes a word from where a value
|
|
116
|
+
* belongs, and it is what lets the fix be true of the program in front of it. A
|
|
117
|
+
* word with an argument list after it is a call, and a reader who wrote one
|
|
118
|
+
* wants the name the library really publishes; the same word being declared or
|
|
119
|
+
* assigned to wants a name of their own, and the library's would collide.
|
|
94
120
|
*/
|
|
95
|
-
export function takeName(cursor: Cursor): Name {
|
|
121
|
+
export function takeName(cursor: Cursor, asValue = false): Name {
|
|
96
122
|
const token = cursor.token;
|
|
97
123
|
if (!isWordKind(token.kind)) return missingWord(cursor);
|
|
98
124
|
|
|
99
125
|
cursor.advance();
|
|
100
126
|
if (token.kind !== 'identifier') {
|
|
127
|
+
const called = asValue && cursor.kind === '(' ? CALLED_INSTEAD.get(token.text) : undefined;
|
|
101
128
|
cursor.report('OS1019', token.span, {
|
|
102
129
|
word: token.text,
|
|
103
|
-
suggestion: unreservedNear(token.text),
|
|
130
|
+
suggestion: called ?? unreservedNear(token.text),
|
|
104
131
|
});
|
|
105
132
|
}
|
|
106
133
|
return makeNode('name', token.span, { text: token.text });
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The exponential family: `ema`, `rma`, `dema` and `tema`.
|
|
3
|
+
*
|
|
4
|
+
* All four share one seeding rule, which `stdlib.md` section 4 states for `ema`
|
|
5
|
+
* and then refers `rma` to: the average is seeded on bar `len - 1` with the
|
|
6
|
+
* simple average of those `len` values, and is absent before it. Seeding from
|
|
7
|
+
* bar 0 instead, which is common and cheaper, draws a line where there should
|
|
8
|
+
* be a gap and stays materially wrong until the seed decays away. The seeding
|
|
9
|
+
* itself is `smoothed` in `lookback.ts`, which every seeded average here and in
|
|
10
|
+
* the studies built on them goes through.
|
|
11
|
+
*
|
|
12
|
+
* **Two arrangements, deliberately.** `ema` steps as `value * k + prev * (1 - k)`
|
|
13
|
+
* and `rma` steps as `(prev * (len - 1) + value) / len`. Those are the same
|
|
14
|
+
* function in exact arithmetic and two different numbers in binary64, and each
|
|
15
|
+
* is the arrangement its name has always meant. Writing `rma` as a weight of
|
|
16
|
+
* `1 / len` in `ema`'s shape would disagree in the last bits with every
|
|
17
|
+
* implementation of the classic oscillators, which is precisely what this
|
|
18
|
+
* project treats as a release blocker.
|
|
19
|
+
*/
|
|
20
|
+
import type { Series, StateRecord, Tail, Value } from '../values/index.js';
|
|
21
|
+
import { NONE, fold, isPresent, result, smoothed, tailOf } from '../values/index.js';
|
|
22
|
+
|
|
23
|
+
/** `ema(src, len)`: exponential mean, weight `2 / (len + 1)`, from bar `len - 1`. */
|
|
24
|
+
export function emaStep(
|
|
25
|
+
state: StateRecord,
|
|
26
|
+
key: string,
|
|
27
|
+
value: Value,
|
|
28
|
+
len: number | null,
|
|
29
|
+
): Value {
|
|
30
|
+
if (len === null) return NONE;
|
|
31
|
+
const weight = 2 / (len + 1);
|
|
32
|
+
const rest = 1 - weight;
|
|
33
|
+
return smoothed(state, key, len, value, (previous, next) => next * weight + previous * rest);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** `ema(src, len)` as a tail. */
|
|
37
|
+
export function emaTail(len: number): Tail<Value, Value> {
|
|
38
|
+
return tailOf((state, value: Value) => emaStep(state, 'e', value, len));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** `ema(src, len)` over a whole series. */
|
|
42
|
+
export function ema(src: Series, len: number): Value[] {
|
|
43
|
+
return fold(emaTail(len), src);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** `rma(src, len)`: the smoothing the classic oscillators use, from bar `len - 1`. */
|
|
47
|
+
export function rmaStep(
|
|
48
|
+
state: StateRecord,
|
|
49
|
+
key: string,
|
|
50
|
+
value: Value,
|
|
51
|
+
len: number | null,
|
|
52
|
+
): Value {
|
|
53
|
+
if (len === null) return NONE;
|
|
54
|
+
return smoothed(state, key, len, value, (previous, next) => (previous * (len - 1) + next) / len);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** `rma(src, len)` as a tail. */
|
|
58
|
+
export function rmaTail(len: number): Tail<Value, Value> {
|
|
59
|
+
return tailOf((state, value: Value) => rmaStep(state, 'r', value, len));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** `rma(src, len)` over a whole series. */
|
|
63
|
+
export function rma(src: Series, len: number): Value[] {
|
|
64
|
+
return fold(rmaTail(len), src);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* `dema(src, len)`: `2 * ema - ema(ema)`, from bar `2 * len - 2`.
|
|
69
|
+
*
|
|
70
|
+
* The second average is fed the first one's output, absences and all, so it
|
|
71
|
+
* seeds on the first `len` values the first average produced. That is where the
|
|
72
|
+
* declared warmup comes from rather than being asserted alongside it.
|
|
73
|
+
*/
|
|
74
|
+
export function demaStep(
|
|
75
|
+
state: StateRecord,
|
|
76
|
+
key: string,
|
|
77
|
+
value: Value,
|
|
78
|
+
len: number | null,
|
|
79
|
+
): Value {
|
|
80
|
+
const once = emaStep(state, `${key}a`, value, len);
|
|
81
|
+
const twice = emaStep(state, `${key}b`, once, len);
|
|
82
|
+
if (!isPresent(once) || !isPresent(twice)) return NONE;
|
|
83
|
+
return result(2 * once - twice);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** `dema(src, len)` as a tail. */
|
|
87
|
+
export function demaTail(len: number): Tail<Value, Value> {
|
|
88
|
+
return tailOf((state, value: Value) => demaStep(state, 'e', value, len));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** `dema(src, len)` over a whole series. */
|
|
92
|
+
export function dema(src: Series, len: number): Value[] {
|
|
93
|
+
return fold(demaTail(len), src);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** `tema(src, len)`: `3 * e1 - 3 * e2 + e3`, from bar `3 * len - 3`. */
|
|
97
|
+
export function temaStep(
|
|
98
|
+
state: StateRecord,
|
|
99
|
+
key: string,
|
|
100
|
+
value: Value,
|
|
101
|
+
len: number | null,
|
|
102
|
+
): Value {
|
|
103
|
+
const once = emaStep(state, `${key}a`, value, len);
|
|
104
|
+
const twice = emaStep(state, `${key}b`, once, len);
|
|
105
|
+
const thrice = emaStep(state, `${key}c`, twice, len);
|
|
106
|
+
if (!isPresent(once) || !isPresent(twice) || !isPresent(thrice)) return NONE;
|
|
107
|
+
// Left to right, as written: 3 * e1, less 3 * e2, plus e3.
|
|
108
|
+
return result(3 * once - 3 * twice + thrice);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** `tema(src, len)` as a tail. */
|
|
112
|
+
export function temaTail(len: number): Tail<Value, Value> {
|
|
113
|
+
return tailOf((state, value: Value) => temaStep(state, 'e', value, len));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** `tema(src, len)` over a whole series. */
|
|
117
|
+
export function tema(src: Series, len: number): Value[] {
|
|
118
|
+
return fold(temaTail(len), src);
|
|
119
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type { Weighted } from './simple.js';
|
|
2
|
+
export {
|
|
3
|
+
sma,
|
|
4
|
+
smaStep,
|
|
5
|
+
smaTail,
|
|
6
|
+
swma,
|
|
7
|
+
swmaStep,
|
|
8
|
+
swmaTail,
|
|
9
|
+
vwma,
|
|
10
|
+
vwmaStep,
|
|
11
|
+
vwmaTail,
|
|
12
|
+
wma,
|
|
13
|
+
wmaStep,
|
|
14
|
+
wmaTail,
|
|
15
|
+
} from './simple.js';
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
dema,
|
|
19
|
+
demaStep,
|
|
20
|
+
demaTail,
|
|
21
|
+
ema,
|
|
22
|
+
emaStep,
|
|
23
|
+
emaTail,
|
|
24
|
+
rma,
|
|
25
|
+
rmaStep,
|
|
26
|
+
rmaTail,
|
|
27
|
+
tema,
|
|
28
|
+
temaStep,
|
|
29
|
+
temaTail,
|
|
30
|
+
} from './exponential.js';
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
alma,
|
|
34
|
+
almaStep,
|
|
35
|
+
almaTail,
|
|
36
|
+
hma,
|
|
37
|
+
hmaStep,
|
|
38
|
+
hmaTail,
|
|
39
|
+
linreg,
|
|
40
|
+
linregStep,
|
|
41
|
+
linregTail,
|
|
42
|
+
} from './shaped.js';
|
|
43
|
+
|
|
44
|
+
export type { MaType } from './select.js';
|
|
45
|
+
export { isMaType, ma, maStep, maTail } from './select.js';
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ma(src, len, type)`: one call whose shape a select input can switch.
|
|
3
|
+
*
|
|
4
|
+
* The point of it is that a study can offer its user a choice of average
|
|
5
|
+
* without the script branching six ways, and without the six branches each
|
|
6
|
+
* owning their own state. One call site, one state region, one line on the
|
|
7
|
+
* chart.
|
|
8
|
+
*
|
|
9
|
+
* The step takes a source paired with its volume because one of the types is
|
|
10
|
+
* volume weighted. A caller that will never select that type passes absence for
|
|
11
|
+
* the volume and loses nothing.
|
|
12
|
+
*
|
|
13
|
+
* **Each type keeps its own corner of the region.** The key carries the type
|
|
14
|
+
* name, so a run that switched type halfway would start the new average from
|
|
15
|
+
* its own warmup rather than from whatever the old one had left in the record.
|
|
16
|
+
*/
|
|
17
|
+
import type { Series, StateRecord, Tail, Value } from '../values/index.js';
|
|
18
|
+
import { NONE, fold, tailOf } from '../values/index.js';
|
|
19
|
+
|
|
20
|
+
import type { Weighted } from './simple.js';
|
|
21
|
+
import { smaStep, vwmaStep, wmaStep } from './simple.js';
|
|
22
|
+
import { emaStep, rmaStep } from './exponential.js';
|
|
23
|
+
import { hmaStep } from './shaped.js';
|
|
24
|
+
|
|
25
|
+
/** The averages `ma` can be switched to, as `stdlib.md` section 4 lists them. */
|
|
26
|
+
export type MaType = 'sma' | 'ema' | 'wma' | 'rma' | 'hma' | 'vwma';
|
|
27
|
+
|
|
28
|
+
const TYPES: readonly string[] = ['sma', 'ema', 'wma', 'rma', 'hma', 'vwma'];
|
|
29
|
+
|
|
30
|
+
/** Whether a string names one of the six averages `ma` accepts. */
|
|
31
|
+
export function isMaType(name: string | null): name is MaType {
|
|
32
|
+
return name !== null && TYPES.includes(name);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* `ma(src, len, type)`, with the warmup of whichever type was named.
|
|
37
|
+
*
|
|
38
|
+
* An unrecognised type is absence throughout, not a silent fall back to the
|
|
39
|
+
* simple mean. A study that quietly drew a different average from the one its
|
|
40
|
+
* settings say would be wrong in a way nobody could see.
|
|
41
|
+
*/
|
|
42
|
+
export function maStep(
|
|
43
|
+
state: StateRecord,
|
|
44
|
+
key: string,
|
|
45
|
+
input: Weighted,
|
|
46
|
+
len: number | null,
|
|
47
|
+
type: MaType | null,
|
|
48
|
+
): Value {
|
|
49
|
+
if (type === null) return NONE;
|
|
50
|
+
const mine = `${key}${type}`;
|
|
51
|
+
if (type === 'vwma') return vwmaStep(state, mine, input, len);
|
|
52
|
+
if (type === 'sma') return smaStep(state, mine, input.src, len);
|
|
53
|
+
if (type === 'ema') return emaStep(state, mine, input.src, len);
|
|
54
|
+
if (type === 'wma') return wmaStep(state, mine, input.src, len);
|
|
55
|
+
if (type === 'rma') return rmaStep(state, mine, input.src, len);
|
|
56
|
+
if (type === 'hma') return hmaStep(state, mine, input.src, len);
|
|
57
|
+
return NONE;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** `ma(src, len, type)` as a tail. */
|
|
61
|
+
export function maTail(len: number, type: MaType): Tail<Weighted, Value> {
|
|
62
|
+
return tailOf((state, input: Weighted) => maStep(state, 'q', input, len, type));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** `ma(src, len, type)` over a whole series. */
|
|
66
|
+
export function ma(src: Series, volume: Series, len: number, type: MaType): Value[] {
|
|
67
|
+
return fold(
|
|
68
|
+
maTail(len, type),
|
|
69
|
+
src.map((value, index) => ({ src: value, volume: volume[index] ?? NONE })),
|
|
70
|
+
);
|
|
71
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The averages with a shape to them: `hma`, `alma` and `linreg`.
|
|
3
|
+
*
|
|
4
|
+
* Each one is a weighted lookback like `wma`, and each accumulates oldest bar
|
|
5
|
+
* first, in index order, for the reason `lookback.ts` gives.
|
|
6
|
+
*/
|
|
7
|
+
import type { Series, StateRecord, Tail, Value } from '../values/index.js';
|
|
8
|
+
import {
|
|
9
|
+
NONE,
|
|
10
|
+
fold,
|
|
11
|
+
isLength,
|
|
12
|
+
isPresent,
|
|
13
|
+
result,
|
|
14
|
+
ring,
|
|
15
|
+
tailOf,
|
|
16
|
+
} from '../values/index.js';
|
|
17
|
+
import { roundHalfAway } from '../maths/index.js';
|
|
18
|
+
|
|
19
|
+
import { wmaStep } from './simple.js';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* `hma(src, len)`: from bar `len + round(sqrt(len)) - 2`.
|
|
23
|
+
*
|
|
24
|
+
* `wma` of twice the half length average less the full length one, smoothed
|
|
25
|
+
* again over the square root of the length.
|
|
26
|
+
*
|
|
27
|
+
* **The half length is not stated.** `stdlib.md` section 4 fixes the outer
|
|
28
|
+
* length as `round(sqrt(len))`, which the declared warmup confirms, and says
|
|
29
|
+
* nothing about the inner one. `floor(len / 2)` is used here, held at a minimum
|
|
30
|
+
* of 1 so a length of 1 or 2 still has a lookback, and the declared warmup holds
|
|
31
|
+
* for any inner length at or below `len`, so nothing in the warmup column
|
|
32
|
+
* settles it. This is recorded as a gap rather than presented as a reading.
|
|
33
|
+
*/
|
|
34
|
+
export function hmaStep(
|
|
35
|
+
state: StateRecord,
|
|
36
|
+
key: string,
|
|
37
|
+
value: Value,
|
|
38
|
+
len: number | null,
|
|
39
|
+
): Value {
|
|
40
|
+
if (len === null) return NONE;
|
|
41
|
+
const half = Math.max(1, Math.floor(len / 2));
|
|
42
|
+
const outer = Math.max(1, roundHalfAway(Math.sqrt(len)));
|
|
43
|
+
const near = wmaStep(state, `${key}f`, value, half);
|
|
44
|
+
const far = wmaStep(state, `${key}s`, value, len);
|
|
45
|
+
const raw = isPresent(near) && isPresent(far) ? result(2 * near - far) : NONE;
|
|
46
|
+
return wmaStep(state, `${key}o`, raw, outer);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** `hma(src, len)` as a tail. */
|
|
50
|
+
export function hmaTail(len: number): Tail<Value, Value> {
|
|
51
|
+
return tailOf((state, value: Value) => hmaStep(state, '', value, len));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** `hma(src, len)` over a whole series. */
|
|
55
|
+
export function hma(src: Series, len: number): Value[] {
|
|
56
|
+
return fold(hmaTail(len), src);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* `alma(src, len, offset, sigma)`: the Gaussian weighted mean, from bar `len - 1`.
|
|
61
|
+
*
|
|
62
|
+
* `offset` slides the kernel's peak between lag and smoothness and `sigma` sets
|
|
63
|
+
* how sharply it falls away.
|
|
64
|
+
*
|
|
65
|
+
* The kernel depends only on the position in the lookback, so it could be built
|
|
66
|
+
* once; it is rebuilt each bar instead, because the region 2.11 requires holds
|
|
67
|
+
* numbers and queues and not a cached array of weights, and a step that reads
|
|
68
|
+
* its own arguments every bar is the only form an engine can drive. The
|
|
69
|
+
* accumulation is over the lookback in index order either way, so the number is
|
|
70
|
+
* the same one.
|
|
71
|
+
*/
|
|
72
|
+
export function almaStep(
|
|
73
|
+
state: StateRecord,
|
|
74
|
+
key: string,
|
|
75
|
+
value: Value,
|
|
76
|
+
len: number | null,
|
|
77
|
+
offset: number | null,
|
|
78
|
+
sigma: number | null,
|
|
79
|
+
): Value {
|
|
80
|
+
const lookback = ring(state, key, len);
|
|
81
|
+
lookback.push(value);
|
|
82
|
+
if (len === null || offset === null || sigma === null) return NONE;
|
|
83
|
+
if (!lookback.complete()) return NONE;
|
|
84
|
+
if (!(sigma > 0) || !isLength(len)) return NONE;
|
|
85
|
+
const peak = offset * (len - 1);
|
|
86
|
+
const spread = len / sigma;
|
|
87
|
+
const weights: number[] = [];
|
|
88
|
+
let norm = 0;
|
|
89
|
+
// Index order: position 0 is the oldest bar in the lookback.
|
|
90
|
+
for (let position = 0; position < len; position += 1) {
|
|
91
|
+
const gap = position - peak;
|
|
92
|
+
const weight = Math.exp(-(gap * gap) / (2 * spread * spread));
|
|
93
|
+
weights.push(weight);
|
|
94
|
+
norm += weight;
|
|
95
|
+
}
|
|
96
|
+
if (norm === 0) return NONE;
|
|
97
|
+
let total = 0;
|
|
98
|
+
for (let position = 0; position < len; position += 1) {
|
|
99
|
+
total += (lookback.at(len - 1 - position) as number) * (weights[position] as number);
|
|
100
|
+
}
|
|
101
|
+
return result(total / norm);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** `alma(src, len, offset, sigma)` as a tail. */
|
|
105
|
+
export function almaTail(len: number, offset = 0.85, sigma = 6): Tail<Value, Value> {
|
|
106
|
+
return tailOf((state, value: Value) => almaStep(state, 'q', value, len, offset, sigma));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** `alma(src, len, offset, sigma)` over a whole series. */
|
|
110
|
+
export function alma(src: Series, len: number, offset = 0.85, sigma = 6): Value[] {
|
|
111
|
+
return fold(almaTail(len, offset, sigma), src);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* `linreg(src, len, offset)`: the least squares line through the last `len`
|
|
116
|
+
* points, read `offset` bars back along it, from bar `len - 1`.
|
|
117
|
+
*
|
|
118
|
+
* `x` runs 0 at the oldest bar of the lookback to `len - 1` at the current one,
|
|
119
|
+
* so the value at the current bar is `intercept + slope * (len - 1)` and a
|
|
120
|
+
* positive `offset` steps back down the line without refitting it.
|
|
121
|
+
*
|
|
122
|
+
* A length of 1 has no line through it: the normal equations are singular, and
|
|
123
|
+
* the answer is absence rather than the single point, because a line fitted to
|
|
124
|
+
* one point is not a fit.
|
|
125
|
+
*/
|
|
126
|
+
export function linregStep(
|
|
127
|
+
state: StateRecord,
|
|
128
|
+
key: string,
|
|
129
|
+
value: Value,
|
|
130
|
+
len: number | null,
|
|
131
|
+
offset: number | null,
|
|
132
|
+
): Value {
|
|
133
|
+
const lookback = ring(state, key, len);
|
|
134
|
+
lookback.push(value);
|
|
135
|
+
if (len === null || offset === null || !lookback.complete()) return NONE;
|
|
136
|
+
// The x values are the same lookback every bar, so their sums are constants.
|
|
137
|
+
const sumX = ((len - 1) * len) / 2;
|
|
138
|
+
const sumXSquared = ((len - 1) * len * (2 * len - 1)) / 6;
|
|
139
|
+
const divisor = len * sumXSquared - sumX * sumX;
|
|
140
|
+
if (divisor === 0) return NONE;
|
|
141
|
+
let sumY = 0;
|
|
142
|
+
let sumXY = 0;
|
|
143
|
+
for (let position = 0; position < len; position += 1) {
|
|
144
|
+
const y = lookback.at(len - 1 - position) as number;
|
|
145
|
+
sumY += y;
|
|
146
|
+
sumXY += y * position;
|
|
147
|
+
}
|
|
148
|
+
const slope = (len * sumXY - sumX * sumY) / divisor;
|
|
149
|
+
const intercept = (sumY - slope * sumX) / len;
|
|
150
|
+
return result(intercept + slope * (len - 1 - offset));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** `linreg(src, len, offset)` as a tail. */
|
|
154
|
+
export function linregTail(len: number, offset = 0): Tail<Value, Value> {
|
|
155
|
+
return tailOf((state, value: Value) => linregStep(state, 'q', value, len, offset));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** `linreg(src, len, offset)` over a whole series. */
|
|
159
|
+
export function linreg(src: Series, len: number, offset = 0): Value[] {
|
|
160
|
+
return fold(linregTail(len, offset), src);
|
|
161
|
+
}
|