Skip to content

newproplus/talib-web

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

talib-web

TA-Lib, the technical analysis library written in C, ported to WebAssembly. Plus a nice API wrapper layer, typescript support and docs.

talib-web is based on talib.js,and make some changes to using it easier.

Installation

npm install --save talib-web

Usage

Normal

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:

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:

{ output: [
    2,  4,  6,  8, 10,
  12, 14, 16, 18, 20
] }

Use TAFuncs object

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

     npm install typescript -g
     npm install

build:

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/[email protected]/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.

About

TA-Lib C code ported to WebAssembly

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 82.6%
  • JavaScript 13.7%
  • TypeScript 3.6%
  • Makefile 0.1%