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