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,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order statistics and the two joint statistics.
|
|
3
|
+
*
|
|
4
|
+
* `percentile` interpolates linearly between the two ranks either side, which
|
|
5
|
+
* `stdlib.md` section 9 states. The nearest rank method, which returns an
|
|
6
|
+
* actual member of the lookback, is the other common choice and gives a visibly
|
|
7
|
+
* different answer for an even length lookback; it is not what is specified here.
|
|
8
|
+
*
|
|
9
|
+
* `covariance` and `correlation` are the population forms, and both are taken
|
|
10
|
+
* in two passes: the mean first, then the deviations from it. The single pass
|
|
11
|
+
* arrangement, summing squares and cross products and subtracting at the end,
|
|
12
|
+
* needs one fewer pass and loses most of its significant digits when the values
|
|
13
|
+
* are large and their spread is small, which is exactly what a price series is.
|
|
14
|
+
* `stdlib.md` fixes neither arrangement, so this one is chosen and stated.
|
|
15
|
+
*/
|
|
16
|
+
import type { Series, StateRecord, Tail, Value } from '../values/index.js';
|
|
17
|
+
import type { Pair } from './changes.js';
|
|
18
|
+
/**
|
|
19
|
+
* `percentile(src, len, p)`: the value at percentile `p` of the lookback,
|
|
20
|
+
* linearly interpolated, from bar `len - 1`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function percentileStep(state: StateRecord, key: string, value: Value, len: number | null, p: number | null): Value;
|
|
23
|
+
/** `percentile(src, len, p)` as a tail. */
|
|
24
|
+
export declare function percentileTail(len: number, p: number): Tail<Value, Value>;
|
|
25
|
+
/** `percentile(src, len, p)` over a whole series. */
|
|
26
|
+
export declare function percentile(src: Series, len: number, p: number): Value[];
|
|
27
|
+
/**
|
|
28
|
+
* `median(src, len)`: the middle value of the lookback, from bar `len - 1`.
|
|
29
|
+
*
|
|
30
|
+
* The 50th percentile by the same interpolation, so an even length lookback is
|
|
31
|
+
* the mean of its two middles rather than one of them chosen by a rule nobody
|
|
32
|
+
* remembers.
|
|
33
|
+
*/
|
|
34
|
+
export declare function medianTail(len: number): Tail<Value, Value>;
|
|
35
|
+
/** `median(src, len)` over a whole series. */
|
|
36
|
+
export declare function median(src: Series, len: number): Value[];
|
|
37
|
+
/**
|
|
38
|
+
* `percentRank(src, len)`: what percentage of the lookback this bar's value
|
|
39
|
+
* exceeds, from bar `len - 1`.
|
|
40
|
+
*
|
|
41
|
+
* The lookback is the last `len` bars including this one, which is what the
|
|
42
|
+
* declared warmup of bar `len - 1` says: a lookback of the `len` bars before this
|
|
43
|
+
* one would not have its first answer until bar `len`. This bar is therefore
|
|
44
|
+
* one of the values counted, so the reading runs from `100 / len` to 100 rather
|
|
45
|
+
* than from 0.
|
|
46
|
+
*/
|
|
47
|
+
export declare function percentRankStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
|
|
48
|
+
/** `percentRank(src, len)` as a tail. */
|
|
49
|
+
export declare function percentRankTail(len: number): Tail<Value, Value>;
|
|
50
|
+
/** `percentRank(src, len)` over a whole series. */
|
|
51
|
+
export declare function percentRank(src: Series, len: number): Value[];
|
|
52
|
+
/** `covariance(a, b, len)`: the population covariance, from bar `len - 1`. */
|
|
53
|
+
export declare function covarianceStep(state: StateRecord, key: string, pair: Pair, len: number | null): Value;
|
|
54
|
+
/** `correlation(a, b, len)`: linear correlation, -1 to 1, from bar `len - 1`. */
|
|
55
|
+
export declare function correlationStep(state: StateRecord, key: string, pair: Pair, len: number | null): Value;
|
|
56
|
+
/** `covariance(a, b, len)` as a tail. */
|
|
57
|
+
export declare function covarianceTail(len: number): Tail<Pair, Value>;
|
|
58
|
+
/** `correlation(a, b, len)` as a tail. */
|
|
59
|
+
export declare function correlationTail(len: number): Tail<Pair, Value>;
|
|
60
|
+
/** `covariance(a, b, len)` over whole series. */
|
|
61
|
+
export declare function covariance(a: Series, b: Series, len: number): Value[];
|
|
62
|
+
/** `correlation(a, b, len)` over whole series. */
|
|
63
|
+
export declare function correlation(a: Series, b: Series, len: number): Value[];
|
|
64
|
+
//# sourceMappingURL=statistics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AASzC;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,CAAC,EAAE,MAAM,GAAG,IAAI,GACf,KAAK,CAaP;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE1D;AAED,8CAA8C;AAC9C,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAUP;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE/D;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE7D;AAmDD,8EAA8E;AAC9E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAEP;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAEP;AAED,yCAAyC;AACzC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAE7D;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAE9D;AAMD,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAErE;AAED,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEtE"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { NONE, fold, result, ring, tailOf } from '../values/index.js';
|
|
2
|
+
/** The lookback's values, oldest first, as plain numbers. */
|
|
3
|
+
function ordered(read, len) {
|
|
4
|
+
const values = [];
|
|
5
|
+
for (let back = len - 1; back >= 0; back -= 1)
|
|
6
|
+
values.push(read(back));
|
|
7
|
+
return values;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* `percentile(src, len, p)`: the value at percentile `p` of the lookback,
|
|
11
|
+
* linearly interpolated, from bar `len - 1`.
|
|
12
|
+
*/
|
|
13
|
+
export function percentileStep(state, key, value, len, p) {
|
|
14
|
+
const lookback = ring(state, key, len);
|
|
15
|
+
lookback.push(value);
|
|
16
|
+
if (len === null || p === null || !lookback.complete())
|
|
17
|
+
return NONE;
|
|
18
|
+
if (!(p >= 0 && p <= 100))
|
|
19
|
+
return NONE;
|
|
20
|
+
const sorted = ordered((back) => lookback.at(back), len).sort((a, b) => a - b);
|
|
21
|
+
const rank = (p / 100) * (len - 1);
|
|
22
|
+
const below = Math.floor(rank);
|
|
23
|
+
const above = below + 1;
|
|
24
|
+
const low = sorted[below];
|
|
25
|
+
if (above >= len)
|
|
26
|
+
return result(low);
|
|
27
|
+
const high = sorted[above];
|
|
28
|
+
return result(low + (rank - below) * (high - low));
|
|
29
|
+
}
|
|
30
|
+
/** `percentile(src, len, p)` as a tail. */
|
|
31
|
+
export function percentileTail(len, p) {
|
|
32
|
+
return tailOf((state, value) => percentileStep(state, 'q', value, len, p));
|
|
33
|
+
}
|
|
34
|
+
/** `percentile(src, len, p)` over a whole series. */
|
|
35
|
+
export function percentile(src, len, p) {
|
|
36
|
+
return fold(percentileTail(len, p), src);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* `median(src, len)`: the middle value of the lookback, from bar `len - 1`.
|
|
40
|
+
*
|
|
41
|
+
* The 50th percentile by the same interpolation, so an even length lookback is
|
|
42
|
+
* the mean of its two middles rather than one of them chosen by a rule nobody
|
|
43
|
+
* remembers.
|
|
44
|
+
*/
|
|
45
|
+
export function medianTail(len) {
|
|
46
|
+
return percentileTail(len, 50);
|
|
47
|
+
}
|
|
48
|
+
/** `median(src, len)` over a whole series. */
|
|
49
|
+
export function median(src, len) {
|
|
50
|
+
return fold(medianTail(len), src);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* `percentRank(src, len)`: what percentage of the lookback this bar's value
|
|
54
|
+
* exceeds, from bar `len - 1`.
|
|
55
|
+
*
|
|
56
|
+
* The lookback is the last `len` bars including this one, which is what the
|
|
57
|
+
* declared warmup of bar `len - 1` says: a lookback of the `len` bars before this
|
|
58
|
+
* one would not have its first answer until bar `len`. This bar is therefore
|
|
59
|
+
* one of the values counted, so the reading runs from `100 / len` to 100 rather
|
|
60
|
+
* than from 0.
|
|
61
|
+
*/
|
|
62
|
+
export function percentRankStep(state, key, value, len) {
|
|
63
|
+
const lookback = ring(state, key, len);
|
|
64
|
+
lookback.push(value);
|
|
65
|
+
if (len === null || !lookback.complete())
|
|
66
|
+
return NONE;
|
|
67
|
+
const current = lookback.at(0);
|
|
68
|
+
let counted = 0;
|
|
69
|
+
for (let back = len - 1; back >= 0; back -= 1) {
|
|
70
|
+
if (lookback.at(back) <= current)
|
|
71
|
+
counted += 1;
|
|
72
|
+
}
|
|
73
|
+
return result((counted * 100) / len);
|
|
74
|
+
}
|
|
75
|
+
/** `percentRank(src, len)` as a tail. */
|
|
76
|
+
export function percentRankTail(len) {
|
|
77
|
+
return tailOf((state, value) => percentRankStep(state, 'q', value, len));
|
|
78
|
+
}
|
|
79
|
+
/** `percentRank(src, len)` over a whole series. */
|
|
80
|
+
export function percentRank(src, len) {
|
|
81
|
+
return fold(percentRankTail(len), src);
|
|
82
|
+
}
|
|
83
|
+
function moments(a, b, len) {
|
|
84
|
+
let sumA = 0;
|
|
85
|
+
let sumB = 0;
|
|
86
|
+
for (let index = 0; index < len; index += 1) {
|
|
87
|
+
sumA += a[index];
|
|
88
|
+
sumB += b[index];
|
|
89
|
+
}
|
|
90
|
+
const meanA = sumA / len;
|
|
91
|
+
const meanB = sumB / len;
|
|
92
|
+
let cross = 0;
|
|
93
|
+
let squaresA = 0;
|
|
94
|
+
let squaresB = 0;
|
|
95
|
+
for (let index = 0; index < len; index += 1) {
|
|
96
|
+
const deviationA = a[index] - meanA;
|
|
97
|
+
const deviationB = b[index] - meanB;
|
|
98
|
+
cross += deviationA * deviationB;
|
|
99
|
+
squaresA += deviationA * deviationA;
|
|
100
|
+
squaresB += deviationB * deviationB;
|
|
101
|
+
}
|
|
102
|
+
return { covariance: cross / len, varianceA: squaresA / len, varianceB: squaresB / len };
|
|
103
|
+
}
|
|
104
|
+
function jointStep(state, key, pair, len, want) {
|
|
105
|
+
const left = ring(state, `${key}a`, len);
|
|
106
|
+
const right = ring(state, `${key}b`, len);
|
|
107
|
+
left.push(pair.a);
|
|
108
|
+
right.push(pair.b);
|
|
109
|
+
if (len === null || !left.complete() || !right.complete())
|
|
110
|
+
return NONE;
|
|
111
|
+
const a = ordered((back) => left.at(back), len);
|
|
112
|
+
const b = ordered((back) => right.at(back), len);
|
|
113
|
+
const m = moments(a, b, len);
|
|
114
|
+
if (want === 'covariance')
|
|
115
|
+
return result(m.covariance);
|
|
116
|
+
const scale = Math.sqrt(m.varianceA) * Math.sqrt(m.varianceB);
|
|
117
|
+
if (scale === 0)
|
|
118
|
+
return NONE;
|
|
119
|
+
return result(m.covariance / scale);
|
|
120
|
+
}
|
|
121
|
+
/** `covariance(a, b, len)`: the population covariance, from bar `len - 1`. */
|
|
122
|
+
export function covarianceStep(state, key, pair, len) {
|
|
123
|
+
return jointStep(state, key, pair, len, 'covariance');
|
|
124
|
+
}
|
|
125
|
+
/** `correlation(a, b, len)`: linear correlation, -1 to 1, from bar `len - 1`. */
|
|
126
|
+
export function correlationStep(state, key, pair, len) {
|
|
127
|
+
return jointStep(state, key, pair, len, 'correlation');
|
|
128
|
+
}
|
|
129
|
+
/** `covariance(a, b, len)` as a tail. */
|
|
130
|
+
export function covarianceTail(len) {
|
|
131
|
+
return tailOf((state, pair) => covarianceStep(state, 'q', pair, len));
|
|
132
|
+
}
|
|
133
|
+
/** `correlation(a, b, len)` as a tail. */
|
|
134
|
+
export function correlationTail(len) {
|
|
135
|
+
return tailOf((state, pair) => correlationStep(state, 'q', pair, len));
|
|
136
|
+
}
|
|
137
|
+
function pairs(a, b) {
|
|
138
|
+
return a.map((value, index) => ({ a: value, b: b[index] ?? NONE }));
|
|
139
|
+
}
|
|
140
|
+
/** `covariance(a, b, len)` over whole series. */
|
|
141
|
+
export function covariance(a, b, len) {
|
|
142
|
+
return fold(covarianceTail(len), pairs(a, b));
|
|
143
|
+
}
|
|
144
|
+
/** `correlation(a, b, len)` over whole series. */
|
|
145
|
+
export function correlation(a, b, len) {
|
|
146
|
+
return fold(correlationTail(len), pairs(a, b));
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=statistics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/statistics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Totals and counts over a lookback, and the three functions that deliberately
|
|
3
|
+
* ignore absent bars.
|
|
4
|
+
*
|
|
5
|
+
* `sum` propagates absence, as every lookback function does. `sumSkip`,
|
|
6
|
+
* `avgSkip` and `countPresent` do not, and they say so in their names because
|
|
7
|
+
* a function that quietly ignored a gap would report a total over a lookback it
|
|
8
|
+
* never had.
|
|
9
|
+
*/
|
|
10
|
+
import type { Flag, Flags, Series, StateRecord, Tail, Value } from '../values/index.js';
|
|
11
|
+
/** `sum(src, len)`: the total over the lookback, from bar `len - 1`. */
|
|
12
|
+
export declare function sumStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
|
|
13
|
+
/** `sum(src, len)` as a tail. */
|
|
14
|
+
export declare function sumTail(len: number): Tail<Value, Value>;
|
|
15
|
+
/** `sum(src, len)` over a whole series. */
|
|
16
|
+
export declare function sum(src: Series, len: number): Value[];
|
|
17
|
+
/**
|
|
18
|
+
* `cum(src)`: the running total from the first bar, from bar 0.
|
|
19
|
+
*
|
|
20
|
+
* An absent bar produces an absent bar out and leaves the total where it was.
|
|
21
|
+
* The alternatives are both wrong: treating absence as zero would report a
|
|
22
|
+
* total over bars that had no value, and propagating it into the total would
|
|
23
|
+
* end the series permanently at the first gap.
|
|
24
|
+
*/
|
|
25
|
+
export declare function cumStep(state: StateRecord, key: string, value: Value): Value;
|
|
26
|
+
/** `cum(src)` as a tail. */
|
|
27
|
+
export declare function cumTail(): Tail<Value, Value>;
|
|
28
|
+
/** `cum(src)` over a whole series. */
|
|
29
|
+
export declare function cum(src: Series): Value[];
|
|
30
|
+
/**
|
|
31
|
+
* `count(cond, len)`: how many of the last `len` bars the condition held on,
|
|
32
|
+
* from bar `len - 1`.
|
|
33
|
+
*
|
|
34
|
+
* An absent condition is a condition that did not hold, matching the rule that
|
|
35
|
+
* absence is false at a branch (`language.md` section 6). Propagating it
|
|
36
|
+
* instead would make a count over a condition built from an average absent for
|
|
37
|
+
* a second warmup on top of the average's own.
|
|
38
|
+
*/
|
|
39
|
+
export declare function countStep(state: StateRecord, key: string, cond: Flag, len: number | null): Value;
|
|
40
|
+
/** `count(cond, len)` as a tail. */
|
|
41
|
+
export declare function countTail(len: number): Tail<Flag, Value>;
|
|
42
|
+
/** `count(cond, len)` over a whole series. */
|
|
43
|
+
export declare function count(cond: Flags, len: number): Value[];
|
|
44
|
+
/** `sumSkip(src, len)`: the total over the lookback, ignoring absent bars. */
|
|
45
|
+
export declare function sumSkipStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
|
|
46
|
+
/** `sumSkip(src, len)` as a tail. */
|
|
47
|
+
export declare function sumSkipTail(len: number): Tail<Value, Value>;
|
|
48
|
+
/** `sumSkip(src, len)` over a whole series. */
|
|
49
|
+
export declare function sumSkip(src: Series, len: number): Value[];
|
|
50
|
+
/** `countPresent(src, len)`: how many bars of the lookback had a value. */
|
|
51
|
+
export declare function countPresentStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
|
|
52
|
+
/** `countPresent(src, len)` as a tail. */
|
|
53
|
+
export declare function countPresentTail(len: number): Tail<Value, Value>;
|
|
54
|
+
/** `countPresent(src, len)` over a whole series. */
|
|
55
|
+
export declare function countPresent(src: Series, len: number): Value[];
|
|
56
|
+
/**
|
|
57
|
+
* `avgSkip(src, len)`: the mean over the lookback, ignoring absent bars.
|
|
58
|
+
*
|
|
59
|
+
* A lookback with nothing present in it is absent, not zero: there is no mean of
|
|
60
|
+
* no values, and a division by zero is absence by the rule of `stdlib.md`
|
|
61
|
+
* section 2.4.
|
|
62
|
+
*/
|
|
63
|
+
export declare function avgSkipStep(state: StateRecord, key: string, value: Value, len: number | null): Value;
|
|
64
|
+
/** `avgSkip(src, len)` as a tail. */
|
|
65
|
+
export declare function avgSkipTail(len: number): Tail<Value, Value>;
|
|
66
|
+
/** `avgSkip(src, len)` over a whole series. */
|
|
67
|
+
export declare function avgSkip(src: Series, len: number): Value[];
|
|
68
|
+
//# sourceMappingURL=totals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"totals.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/series/totals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGxF,wEAAwE;AACxE,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,iCAAiC;AACjC,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEvD;AAED,2CAA2C;AAC3C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAK5E;AAED,4BAA4B;AAC5B,wBAAgB,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE5C;AAED,sCAAsC;AACtC,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,oCAAoC;AACpC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAExD;AAED,8CAA8C;AAC9C,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEvD;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE3D;AAED,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAIP;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAEhE;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,CAQP;AAED,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAE3D;AAED,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { NONE, fold, isPresent, result, ring, slot, tailOf } from '../values/index.js';
|
|
2
|
+
/** `sum(src, len)`: the total over the lookback, from bar `len - 1`. */
|
|
3
|
+
export function sumStep(state, key, value, len) {
|
|
4
|
+
const lookback = ring(state, key, len);
|
|
5
|
+
lookback.push(value);
|
|
6
|
+
return lookback.sum();
|
|
7
|
+
}
|
|
8
|
+
/** `sum(src, len)` as a tail. */
|
|
9
|
+
export function sumTail(len) {
|
|
10
|
+
return tailOf((state, value) => sumStep(state, 'q', value, len));
|
|
11
|
+
}
|
|
12
|
+
/** `sum(src, len)` over a whole series. */
|
|
13
|
+
export function sum(src, len) {
|
|
14
|
+
return fold(sumTail(len), src);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* `cum(src)`: the running total from the first bar, from bar 0.
|
|
18
|
+
*
|
|
19
|
+
* An absent bar produces an absent bar out and leaves the total where it was.
|
|
20
|
+
* The alternatives are both wrong: treating absence as zero would report a
|
|
21
|
+
* total over bars that had no value, and propagating it into the total would
|
|
22
|
+
* end the series permanently at the first gap.
|
|
23
|
+
*/
|
|
24
|
+
export function cumStep(state, key, value) {
|
|
25
|
+
if (!isPresent(value))
|
|
26
|
+
return NONE;
|
|
27
|
+
const total = slot(state, key, 0) + value;
|
|
28
|
+
state[key] = total;
|
|
29
|
+
return result(total);
|
|
30
|
+
}
|
|
31
|
+
/** `cum(src)` as a tail. */
|
|
32
|
+
export function cumTail() {
|
|
33
|
+
return tailOf((state, value) => cumStep(state, 't', value));
|
|
34
|
+
}
|
|
35
|
+
/** `cum(src)` over a whole series. */
|
|
36
|
+
export function cum(src) {
|
|
37
|
+
return fold(cumTail(), src);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* `count(cond, len)`: how many of the last `len` bars the condition held on,
|
|
41
|
+
* from bar `len - 1`.
|
|
42
|
+
*
|
|
43
|
+
* An absent condition is a condition that did not hold, matching the rule that
|
|
44
|
+
* absence is false at a branch (`language.md` section 6). Propagating it
|
|
45
|
+
* instead would make a count over a condition built from an average absent for
|
|
46
|
+
* a second warmup on top of the average's own.
|
|
47
|
+
*/
|
|
48
|
+
export function countStep(state, key, cond, len) {
|
|
49
|
+
const lookback = ring(state, key, len);
|
|
50
|
+
lookback.push(cond === true ? 1 : 0);
|
|
51
|
+
return lookback.sum();
|
|
52
|
+
}
|
|
53
|
+
/** `count(cond, len)` as a tail. */
|
|
54
|
+
export function countTail(len) {
|
|
55
|
+
return tailOf((state, cond) => countStep(state, 'q', cond, len));
|
|
56
|
+
}
|
|
57
|
+
/** `count(cond, len)` over a whole series. */
|
|
58
|
+
export function count(cond, len) {
|
|
59
|
+
return fold(countTail(len), cond);
|
|
60
|
+
}
|
|
61
|
+
/** `sumSkip(src, len)`: the total over the lookback, ignoring absent bars. */
|
|
62
|
+
export function sumSkipStep(state, key, value, len) {
|
|
63
|
+
const lookback = ring(state, key, len);
|
|
64
|
+
lookback.push(value);
|
|
65
|
+
return lookback.sumPresent();
|
|
66
|
+
}
|
|
67
|
+
/** `sumSkip(src, len)` as a tail. */
|
|
68
|
+
export function sumSkipTail(len) {
|
|
69
|
+
return tailOf((state, value) => sumSkipStep(state, 'q', value, len));
|
|
70
|
+
}
|
|
71
|
+
/** `sumSkip(src, len)` over a whole series. */
|
|
72
|
+
export function sumSkip(src, len) {
|
|
73
|
+
return fold(sumSkipTail(len), src);
|
|
74
|
+
}
|
|
75
|
+
/** `countPresent(src, len)`: how many bars of the lookback had a value. */
|
|
76
|
+
export function countPresentStep(state, key, value, len) {
|
|
77
|
+
const lookback = ring(state, key, len);
|
|
78
|
+
lookback.push(value);
|
|
79
|
+
return lookback.filled() ? lookback.presentCount() : NONE;
|
|
80
|
+
}
|
|
81
|
+
/** `countPresent(src, len)` as a tail. */
|
|
82
|
+
export function countPresentTail(len) {
|
|
83
|
+
return tailOf((state, value) => countPresentStep(state, 'q', value, len));
|
|
84
|
+
}
|
|
85
|
+
/** `countPresent(src, len)` over a whole series. */
|
|
86
|
+
export function countPresent(src, len) {
|
|
87
|
+
return fold(countPresentTail(len), src);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* `avgSkip(src, len)`: the mean over the lookback, ignoring absent bars.
|
|
91
|
+
*
|
|
92
|
+
* A lookback with nothing present in it is absent, not zero: there is no mean of
|
|
93
|
+
* no values, and a division by zero is absence by the rule of `stdlib.md`
|
|
94
|
+
* section 2.4.
|
|
95
|
+
*/
|
|
96
|
+
export function avgSkipStep(state, key, value, len) {
|
|
97
|
+
const lookback = ring(state, key, len);
|
|
98
|
+
lookback.push(value);
|
|
99
|
+
if (!lookback.filled())
|
|
100
|
+
return NONE;
|
|
101
|
+
const counted = lookback.presentCount();
|
|
102
|
+
const total = lookback.sumPresent();
|
|
103
|
+
if (counted === 0 || !isPresent(total))
|
|
104
|
+
return NONE;
|
|
105
|
+
return result(total / counted);
|
|
106
|
+
}
|
|
107
|
+
/** `avgSkip(src, len)` as a tail. */
|
|
108
|
+
export function avgSkipTail(len) {
|
|
109
|
+
return tailOf((state, value) => avgSkipStep(state, 'q', value, len));
|
|
110
|
+
}
|
|
111
|
+
/** `avgSkip(src, len)` over a whole series. */
|
|
112
|
+
export function avgSkip(src, len) {
|
|
113
|
+
return fold(avgSkipTail(len), src);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=totals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"totals.js","sourceRoot":"","sources":["../../../../src/core/stdlib/series/totals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adx(diLen, adxLen)`, `aroon(len)` and `ichimoku(convLen, baseLen, spanLen)`:
|
|
3
|
+
* how strong the trend is, which side owns it, and the five line frame.
|
|
4
|
+
*
|
|
5
|
+
* Each is written once, as a step over a state region, and its tail is that
|
|
6
|
+
* step over a region of its own. An engine calls the same step against the
|
|
7
|
+
* region it holds for the call site, so there is no second arrangement of the
|
|
8
|
+
* arithmetic anywhere for the two to drift apart in.
|
|
9
|
+
*/
|
|
10
|
+
import type { Bar, StateRecord, Tail, Value } from '../values/index.js';
|
|
11
|
+
import type { Gap } from '../volatility/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* `adx(diLen, adxLen)`: `[adx, plusDI, minusDI]`, elements 1 and 2 from bar
|
|
14
|
+
* `diLen` and element 0 from bar `diLen + adxLen - 1`.
|
|
15
|
+
*
|
|
16
|
+
* Directional movement is the part of this bar's range that lies outside the
|
|
17
|
+
* previous bar's, on whichever side is larger. It needs the bar before it, so
|
|
18
|
+
* the smoothing's lookback is bars 1 to `diLen` and the first reading is at bar
|
|
19
|
+
* `diLen`. The true range in the denominator uses the gap-aware form for the
|
|
20
|
+
* same reason, so all three smoothed quantities cover the same bars: seeding
|
|
21
|
+
* one of them a bar earlier than the other two would bias every reading after
|
|
22
|
+
* it while still looking entirely plausible.
|
|
23
|
+
*
|
|
24
|
+
* The previous bar's two extremes are held in the region, because they are the
|
|
25
|
+
* arithmetic's own history. The previous close is not: it arrives with the gap,
|
|
26
|
+
* for the reason `range.ts` sets out.
|
|
27
|
+
*/
|
|
28
|
+
export declare function adxStep(state: StateRecord, key: string, gap: Gap, diLen: number | null, adxLen: number | null): Value[];
|
|
29
|
+
/** `adx(diLen, adxLen)` as a tail. */
|
|
30
|
+
export declare function adxTail(diLen?: number, adxLen?: number): Tail<Bar, Value[]>;
|
|
31
|
+
/** `adx(diLen, adxLen)` over a run of bars. */
|
|
32
|
+
export declare function adx(bars: readonly Bar[], diLen?: number, adxLen?: number): Value[][];
|
|
33
|
+
/**
|
|
34
|
+
* `aroon(len)`: `[up, down]`, both from bar `len`.
|
|
35
|
+
*
|
|
36
|
+
* How recently the lookback's high and low were set, as a percentage: 100 when it
|
|
37
|
+
* was this bar, 0 when it was `len` bars ago. The lookback is `len + 1` bars
|
|
38
|
+
* wide, because a reading of 0 has to be reachable and an extreme `len` bars
|
|
39
|
+
* back has to still be inside the lookback for that. That extra bar is where the
|
|
40
|
+
* declared warmup of bar `len` rather than bar `len - 1` comes from.
|
|
41
|
+
*/
|
|
42
|
+
export declare function aroonStep(state: StateRecord, key: string, high: Value, low: Value, len: number | null): Value[];
|
|
43
|
+
/** `aroon(len)` as a tail. */
|
|
44
|
+
export declare function aroonTail(len?: number): Tail<Bar, Value[]>;
|
|
45
|
+
/** `aroon(len)` over a run of bars. */
|
|
46
|
+
export declare function aroon(bars: readonly Bar[], len?: number): Value[][];
|
|
47
|
+
/**
|
|
48
|
+
* `ichimoku(convLen, baseLen, spanLen)`: `[conversion, base, spanA, spanB,
|
|
49
|
+
* lagging]`, at bars `convLen - 1`, `baseLen - 1`, `baseLen - 1`,
|
|
50
|
+
* `spanLen - 1` and `baseLen - 1`.
|
|
51
|
+
*
|
|
52
|
+
* Each of the first four lines is the midpoint of a lookback's outright high and
|
|
53
|
+
* low, over a different length. **The spans are returned undisplaced, at the
|
|
54
|
+
* bar they are computed on**, per `stdlib.md` section 4: a study draws them
|
|
55
|
+
* forward with the plot's `offset` argument, because a series that has already
|
|
56
|
+
* been shifted cannot be compared with anything else in the script without
|
|
57
|
+
* shifting it back.
|
|
58
|
+
*
|
|
59
|
+
* The lagging line is this bar's close, and it is drawn backward by the same
|
|
60
|
+
* plot argument. It is absent until bar `baseLen - 1`, which is the warmup the
|
|
61
|
+
* specification declares for it, and which is the first bar there is enough
|
|
62
|
+
* history for the displacement to land on.
|
|
63
|
+
*/
|
|
64
|
+
export declare function ichimokuStep(state: StateRecord, key: string, bar: Bar, convLen: number | null, baseLen: number | null, spanLen: number | null): Value[];
|
|
65
|
+
/** `ichimoku(convLen, baseLen, spanLen)` as a tail. */
|
|
66
|
+
export declare function ichimokuTail(convLen?: number, baseLen?: number, spanLen?: number): Tail<Bar, Value[]>;
|
|
67
|
+
/** `ichimoku(convLen, baseLen, spanLen)` over a run of bars. */
|
|
68
|
+
export declare function ichimoku(bars: readonly Bar[], convLen?: number, baseLen?: number, spanLen?: number): Value[][];
|
|
69
|
+
//# sourceMappingURL=directional.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directional.d.ts","sourceRoot":"","sources":["../../../../src/core/stdlib/trend/directional.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIxE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAGlD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,KAAK,EAAE,CA4CT;AAED,sCAAsC;AACtC,wBAAgB,OAAO,CAAC,KAAK,SAAK,EAAE,MAAM,SAAK,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAEnE;AAED,+CAA+C;AAC/C,wBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,SAAK,EAAE,MAAM,SAAK,GAAG,KAAK,EAAE,EAAE,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,KAAK,EAAE,CAQT;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,GAAG,SAAK,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAEtD;AAED,uCAAuC;AACvC,wBAAgB,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,SAAK,GAAG,KAAK,EAAE,EAAE,CAE/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,KAAK,EAAE,CAST;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,OAAO,SAAI,EAAE,OAAO,SAAK,EAAE,OAAO,SAAK,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAExF;AAED,gEAAgE;AAChE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,OAAO,SAAI,EACX,OAAO,SAAK,EACZ,OAAO,SAAK,GACX,KAAK,EAAE,EAAE,CAEX"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { NONE, fold, held, isPresent, result, ring, tailOf } from '../values/index.js';
|
|
2
|
+
import { rmaStep } from '../averages/index.js';
|
|
3
|
+
import { extremeStep } from '../series/index.js';
|
|
4
|
+
import { gapOf, trueRangeOf } from '../volatility/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* `adx(diLen, adxLen)`: `[adx, plusDI, minusDI]`, elements 1 and 2 from bar
|
|
7
|
+
* `diLen` and element 0 from bar `diLen + adxLen - 1`.
|
|
8
|
+
*
|
|
9
|
+
* Directional movement is the part of this bar's range that lies outside the
|
|
10
|
+
* previous bar's, on whichever side is larger. It needs the bar before it, so
|
|
11
|
+
* the smoothing's lookback is bars 1 to `diLen` and the first reading is at bar
|
|
12
|
+
* `diLen`. The true range in the denominator uses the gap-aware form for the
|
|
13
|
+
* same reason, so all three smoothed quantities cover the same bars: seeding
|
|
14
|
+
* one of them a bar earlier than the other two would bias every reading after
|
|
15
|
+
* it while still looking entirely plausible.
|
|
16
|
+
*
|
|
17
|
+
* The previous bar's two extremes are held in the region, because they are the
|
|
18
|
+
* arithmetic's own history. The previous close is not: it arrives with the gap,
|
|
19
|
+
* for the reason `range.ts` sets out.
|
|
20
|
+
*/
|
|
21
|
+
export function adxStep(state, key, gap, diLen, adxLen) {
|
|
22
|
+
const highKey = `${key}h`;
|
|
23
|
+
const lowKey = `${key}l`;
|
|
24
|
+
const seenKey = `${key}k`;
|
|
25
|
+
const beforeHigh = held(state, highKey);
|
|
26
|
+
const beforeLow = held(state, lowKey);
|
|
27
|
+
const started = state[seenKey] === true;
|
|
28
|
+
state[seenKey] = true;
|
|
29
|
+
state[highKey] = gap.high;
|
|
30
|
+
state[lowKey] = gap.low;
|
|
31
|
+
let upMove = NONE;
|
|
32
|
+
let downMove = NONE;
|
|
33
|
+
if (started &&
|
|
34
|
+
isPresent(gap.high) &&
|
|
35
|
+
isPresent(gap.low) &&
|
|
36
|
+
isPresent(beforeHigh) &&
|
|
37
|
+
isPresent(beforeLow)) {
|
|
38
|
+
const up = gap.high - beforeHigh;
|
|
39
|
+
const down = beforeLow - gap.low;
|
|
40
|
+
upMove = up > down && up > 0 ? result(up) : 0;
|
|
41
|
+
downMove = down > up && down > 0 ? result(down) : 0;
|
|
42
|
+
}
|
|
43
|
+
const trueRange = rmaStep(state, `${key}r`, trueRangeOf(gap, false), diLen);
|
|
44
|
+
const rise = rmaStep(state, `${key}u`, upMove, diLen);
|
|
45
|
+
const fall = rmaStep(state, `${key}d`, downMove, diLen);
|
|
46
|
+
let plus = NONE;
|
|
47
|
+
let minus = NONE;
|
|
48
|
+
if (isPresent(trueRange) && trueRange !== 0) {
|
|
49
|
+
if (isPresent(rise))
|
|
50
|
+
plus = result((rise / trueRange) * 100);
|
|
51
|
+
if (isPresent(fall))
|
|
52
|
+
minus = result((fall / trueRange) * 100);
|
|
53
|
+
}
|
|
54
|
+
let spread = NONE;
|
|
55
|
+
if (isPresent(plus) && isPresent(minus)) {
|
|
56
|
+
const total = plus + minus;
|
|
57
|
+
spread = total > 0 ? result((Math.abs(plus - minus) / total) * 100) : 0;
|
|
58
|
+
}
|
|
59
|
+
return [rmaStep(state, `${key}x`, spread, adxLen), plus, minus];
|
|
60
|
+
}
|
|
61
|
+
/** `adx(diLen, adxLen)` as a tail. */
|
|
62
|
+
export function adxTail(diLen = 14, adxLen = 14) {
|
|
63
|
+
return tailOf((state, bar) => adxStep(state, '', gapOf(state, 'g', bar), diLen, adxLen));
|
|
64
|
+
}
|
|
65
|
+
/** `adx(diLen, adxLen)` over a run of bars. */
|
|
66
|
+
export function adx(bars, diLen = 14, adxLen = 14) {
|
|
67
|
+
return fold(adxTail(diLen, adxLen), bars);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* `aroon(len)`: `[up, down]`, both from bar `len`.
|
|
71
|
+
*
|
|
72
|
+
* How recently the lookback's high and low were set, as a percentage: 100 when it
|
|
73
|
+
* was this bar, 0 when it was `len` bars ago. The lookback is `len + 1` bars
|
|
74
|
+
* wide, because a reading of 0 has to be reachable and an extreme `len` bars
|
|
75
|
+
* back has to still be inside the lookback for that. That extra bar is where the
|
|
76
|
+
* declared warmup of bar `len` rather than bar `len - 1` comes from.
|
|
77
|
+
*/
|
|
78
|
+
export function aroonStep(state, key, high, low, len) {
|
|
79
|
+
const wide = len === null ? null : len + 1;
|
|
80
|
+
const highAge = extremeStep(state, `${key}h`, high, wide, true, true);
|
|
81
|
+
const lowAge = extremeStep(state, `${key}l`, low, wide, false, true);
|
|
82
|
+
if (len === null)
|
|
83
|
+
return [NONE, NONE];
|
|
84
|
+
const up = isPresent(highAge) ? result((100 * (len - highAge)) / len) : NONE;
|
|
85
|
+
const down = isPresent(lowAge) ? result((100 * (len - lowAge)) / len) : NONE;
|
|
86
|
+
return [up, down];
|
|
87
|
+
}
|
|
88
|
+
/** `aroon(len)` as a tail. */
|
|
89
|
+
export function aroonTail(len = 14) {
|
|
90
|
+
return tailOf((state, bar) => aroonStep(state, '', bar.high, bar.low, len));
|
|
91
|
+
}
|
|
92
|
+
/** `aroon(len)` over a run of bars. */
|
|
93
|
+
export function aroon(bars, len = 14) {
|
|
94
|
+
return fold(aroonTail(len), bars);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* `ichimoku(convLen, baseLen, spanLen)`: `[conversion, base, spanA, spanB,
|
|
98
|
+
* lagging]`, at bars `convLen - 1`, `baseLen - 1`, `baseLen - 1`,
|
|
99
|
+
* `spanLen - 1` and `baseLen - 1`.
|
|
100
|
+
*
|
|
101
|
+
* Each of the first four lines is the midpoint of a lookback's outright high and
|
|
102
|
+
* low, over a different length. **The spans are returned undisplaced, at the
|
|
103
|
+
* bar they are computed on**, per `stdlib.md` section 4: a study draws them
|
|
104
|
+
* forward with the plot's `offset` argument, because a series that has already
|
|
105
|
+
* been shifted cannot be compared with anything else in the script without
|
|
106
|
+
* shifting it back.
|
|
107
|
+
*
|
|
108
|
+
* The lagging line is this bar's close, and it is drawn backward by the same
|
|
109
|
+
* plot argument. It is absent until bar `baseLen - 1`, which is the warmup the
|
|
110
|
+
* specification declares for it, and which is the first bar there is enough
|
|
111
|
+
* history for the displacement to land on.
|
|
112
|
+
*/
|
|
113
|
+
export function ichimokuStep(state, key, bar, convLen, baseLen, spanLen) {
|
|
114
|
+
const near = midpointStep(state, `${key}c`, bar, convLen);
|
|
115
|
+
const middle = midpointStep(state, `${key}b`, bar, baseLen);
|
|
116
|
+
const leading = isPresent(near) && isPresent(middle) ? result((near + middle) / 2) : NONE;
|
|
117
|
+
const behind = midpointStep(state, `${key}s`, bar, spanLen);
|
|
118
|
+
const closes = ring(state, `${key}g`, baseLen);
|
|
119
|
+
closes.push(bar.close);
|
|
120
|
+
const lagging = closes.filled() ? closes.at(0) : NONE;
|
|
121
|
+
return [near, middle, leading, behind, lagging];
|
|
122
|
+
}
|
|
123
|
+
/** `ichimoku(convLen, baseLen, spanLen)` as a tail. */
|
|
124
|
+
export function ichimokuTail(convLen = 9, baseLen = 26, spanLen = 52) {
|
|
125
|
+
return tailOf((state, bar) => ichimokuStep(state, '', bar, convLen, baseLen, spanLen));
|
|
126
|
+
}
|
|
127
|
+
/** `ichimoku(convLen, baseLen, spanLen)` over a run of bars. */
|
|
128
|
+
export function ichimoku(bars, convLen = 9, baseLen = 26, spanLen = 52) {
|
|
129
|
+
return fold(ichimokuTail(convLen, baseLen, spanLen), bars);
|
|
130
|
+
}
|
|
131
|
+
/** The midpoint of a lookback's outright high and low. */
|
|
132
|
+
function midpointStep(state, key, bar, len) {
|
|
133
|
+
const highs = ring(state, `${key}h`, len);
|
|
134
|
+
const lows = ring(state, `${key}l`, len);
|
|
135
|
+
highs.push(bar.high);
|
|
136
|
+
lows.push(bar.low);
|
|
137
|
+
if (len === null || !highs.complete() || !lows.complete())
|
|
138
|
+
return NONE;
|
|
139
|
+
let top = highs.at(len - 1);
|
|
140
|
+
let bottom = lows.at(len - 1);
|
|
141
|
+
for (let back = len - 2; back >= 0; back -= 1) {
|
|
142
|
+
const high = highs.at(back);
|
|
143
|
+
const low = lows.at(back);
|
|
144
|
+
if (high > top)
|
|
145
|
+
top = high;
|
|
146
|
+
if (low < bottom)
|
|
147
|
+
bottom = low;
|
|
148
|
+
}
|
|
149
|
+
return result((top + bottom) / 2);
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=directional.js.map
|