npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@tsu-org/technical-indicators

v1.0.2

Published

A synchronous [TA-Lib](http://ta-lib.org/) bindings for Node.js & TypeScript.

Downloads

2

Readme

talib-binding

A synchronous TA-Lib bindings for Node.js & TypeScript.

Install

var yarn:

yarn add talib-binding

var npm:

npm install talib-binding --save

Install on Windows system

Before install this module, you may need to install windows-build-tools by run:

npm install --global --production windows-build-tools

Usage

  1. All the functions are exported, you can call it in the same form to c api, but there are some difference:
    • the startIdx and endIdx is placed at the end of the function signature, and is optional.
    • the return value is the computed result, if result is one array, will be it, else will be a nested array to contains all output arrays.
    • if the ta-lib function returns a error code, will throw a error.
  2. Additionally, you can pass a Record[] to extract its fields rather than input double array such as inHigh, inLow, etc. And if the input field is a implicit field of the records, you need to input a string to specifying which one field will be extract as it.
  3. The types for TypeScript is generated, you can use this it in TypeScript projects.

Example

  • call in the same form of TA-Lib:
    import * as talib from 'talib-binding'
      
    talib.SAR(
        [2, 3, 4, 5], /* inHigh */
        [1, 2, 3, 4], /* inLow */
        0.02, /* optAcceleration_Factor, optional */
        0.2, /* optAF_Maximum, optional */
        0, /* startIdx, optional */
        3 /* endIdx, optional */
    )
  • pass a Record array as the first parameter, the library will extract the field value automatically, if the function contains some implicit parameter name, you need to pass the name string to extract it. The implicit parameter means that the param is not one of High, Low, Open, Close, and Volume, just like inReal, more detailed information could be found in the TypeScript function signatures.
    import * as talib from 'talib-binding'
    
    const records = [
      {Time: 0, Open: 1, High: 2, Low: 1, Close: 2, Volume: 1},
      {Time: 0, Open: 2, High: 3, Low: 2, Close: 3, Volume: 1},
      {Time: 0, Open: 3, High: 4, Low: 3, Close: 4, Volume: 1},
      {Time: 0, Open: 4, High: 5, Low: 4, Close: 5, Volume: 1},
    ]
    
    talib.SAR(records)
    
    // The COS function contains implicit parameter name, you need to call it as follow:
    talib.COS(records, 'Volume')
  • if function return a single array, the return value will be it, else will be a nested array.
    import * as talib from 'talib-binding'
    
    const outReal = talib.SAR([2, 3, 4, 5], [1, 2, 3, 4])
    console.log(outReal)
    // [ 1, 1.04, 1.1584 ]
      
    const [outUp, outMid, outLow] = talib.ACCBANDS([2, 3, 4, 5], [1, 2, 3, 4], [2, 3, 4, 5], 3)
    console.log(outUp, outMid, outLow)
    // [ 5.45079365079365, 6.302645502645503 ]
    // [ 3, 4 ]
    // [ 0.4507936507936508, 1.3026455026455028 ]
  • if TA function returns a error, OR startIdx/endIdx out of range, will throw it:
    import * as talib from 'talib-binding'
    
    talib.ACCBANDS([2, 3, 4, 5], [1, 2, 3, 4], [2, 3, 4, 5], 10)
    // throw RangeError: `startIdx` or `endIdx` out of range

Notes

  • Some API need to use TA_MAType, which is exported as MATypes in the binding. For example:
    import * as talib from 'talib-binding'
    
    talib.MA([1, 2, 3], void 0, talib.MATypes.SMA)

Contributing

Clone the repo at first:

git clone https://github.com/acrazing/talib-binding-node && cd talib-binding-node

All the files end with generated.* is generated by src/generate.ts. Maybe you need to view it to get detailed information.

License

  • This project published under MIT License.
  • The TA-Lib is published under LICENSE.