TA-Lib C code ported to WebAssembly
npm install talib-web
npm install --save talib-web
`
Usage
$3
`js
const talib = require("talib-web");
const inReal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
async function main() {
await init(/ optionally pass in .wasm file path here /);
console.log(talib.ADD({ inReal0: inReal, inReal1: inReal }));
}
main();
`
Or:
`js
import { init, ADD } from "talib-web";
async function main() {
await init(/ optionally pass in .wasm file path here /);
const inReal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log("talib.ADD result:", ADD({ inReal0: inReal, inReal1: inReal }));
}
main();
`
output:
`js
{ output: [
2, 4, 6, 8, 10,
12, 14, 16, 18, 20
] }
`
$3
`js
import { init, TAFuncs } from "talib-web";
async function main() {
await init(/ optionally pass in .wasm file path here /);
const inReal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log("TAFuncs.ADD result:", TAFuncs.ADD({ inReal0: inReal, inReal1: inReal }));
//you can call other talib function easily without import,just like TAFuncs.MA()
}
`
Documentation
Visit https://ancheGT.github.io/talib-web/
Docs are generated using typedoc and hosted on GitHub Pages.
Develop
develop environment:
- OS: CentOS 7
- node: v14.15.5
- NPM: 6.14.11
- emscripten: 2.0.34
- tsc: 4.5.2
dependencies installation
- emscripten
- npm
`sh
npm install typescript -g
npm install
`
build:
`sh
make clean # clean temp
make
`
branchs
- master-hackape: original repo of talib.js
- master-new: current repo
- gh-pages: github pages, after make branch master-new, copy the docs dir to this branch.It's relies on the setting of GitHub Pages -> Source
Troubleshooting:
- in terminal, run make got: error while loading shared libraries: libatomic.so.1: cannot open shared obj
- run command: yum -y install libatomic
- in browser console,got:
`
index.esm.js?80e5:561
Uncaught (in promise) RuntimeError: abort(CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 44 4f @+0). Build with -s ASSERTIONS=1 for more info.
at abort (webpack-internal:///./node_modules/talib-web/lib/index.esm.js:886)
at eval (webpack-internal:///./node_modules/talib-web/lib/index.esm.js:962)
index.esm.js?80e5:2146
Uncaught (in promise) Error: TA-Lib WASM runtime init fail.
Error:
abort(CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 44 4f @+0). Build with -s ASSERTIONS=1 for more info.
at eval (webpack-internal:///./node_modules/talib-web/lib/index.esm.js:2471)
`
- Pass a URL param to init,like this: await init("https://unpkg.com/talib-web@0.1.2/lib/talib.wasm");
- You can host this file yourself if you like. It’s just a static asset, like a picture, nothing magical.
- If you decide to host it, 2 things to check:
- Make sure the URL is accessible from your origin, e.g. double check CORS config if involved.
- Make sure the MIME type is correctly set to application/wasm`.