# TAAPI.IO

[TAAPI.IO](https://taapi.io) is an API that calculates Technical Analysis Indicator values.

This NPM package is a wrapper and a client for communicating with the TAAPI.IO API

Using this service requires registration. Please check [TAAPI.IO](https://taapi.io). We offer free and paid plans.

Please refer to our main [TAAPI.IO Documentation](https://taapi.io/documentation/utilities/npm-nodejs-typescript). Here we will provide in-depts explainations and examples.

### Getting started

* Sign up for a free/paid API key at [TAAPI.IO](https://taapi.io)
* Create a new node project: npm init
* Install this package: npm i taapi --save

### Usage

Get started quickly with NodeJS and calculate indicator values with very few lines of code.

* Create your entry js file (index.js / index.ts for instance) containing:

```javascript
// Import taapi
import Taapi from 'taapi'; // See out main docs for Common JS usage

// Setup client with authentication
const taapi = new Taapi("<MY_SECRET>");

// RSI for Bitcoin to the US Dollar on the hourly from Binance
taapi.getIndicator("rsi", "BTC/USDT", "1h").then( rsi => {
    console.log(rsi.value);
});

```

Fetch the last closed 200 period Exponential Moving Average for Bitcoin to the Dollar on the 1 hour timeframe from the Bybit exchange.

```javascript
// Import taapi
import Taapi from 'taapi'; // See out main docs for Common JS usage

// Setup client with authentication
const taapi = new Taapi("<MY_SECRET>");

taapi.getIndicator("ema", "BTC/USDT", "1h", { period: 200, backtrack: 1 }, "bybit").then( ema => {
    console.log(ema);
});

```

### Stocks & Forex

Using our integration partner [Polygon.io](https://polygon.io/), you can easily fetch indicators from the US Stocks & Forex markets. Visit our guide on how to use [Polygon.io with TAAPI.IO](https://taapi.io/documentation/utilities/stocks-and-forex/) for detailed explanations.

```javascript
// Import taapi
import Taapi from 'taapi'; // See out main docs for Common JS usage

// Setup client with authentication
const taapi = new Taapi("<MY_SECRET>");

// Set provider
taapi.setProvider("polygon", "<POLYGON_SECRET>");

// Get stocks indicator
taapi.getIndicator("macd", "AAPL", "1d", { 
    type: "stocks"
}).then( macd => {
    console.log(macd);
});

```

For Forex examples, please visit out main documentation.

### Calling multiple indicators in Bulk

```javascript
// Import taapi
import Taapi from 'taapi'; // See out main docs for Common JS usage

// Setup client with authentication
const taapi = new Taapi("<MY_SECRET>");

// Reset
taapi.resetBulkConstructs();

// Add calculations
taapi.addCalculation("rsi", "BTC/USDT", "1h", "rsi_1h");
taapi.addCalculation("macd", "BTC/USDT", "1h", "macd_1h");
taapi.addCalculation("ema", "BTC/USDT", "1h", "ema_fast_1h", { period: 9, backtrack: 1 });
taapi.addCalculation("ema", "BTC/USDT", "1h", "ema_slow_1h", { period: 20, backtrack: 1 });

// Execute Crypto request
taapi.executeBulk().then( results => {
    console.log(results);
}).catch( error => {
    console.error(error)
});

```

For Stocks & Forex examples, please visit out main documentation.

### Discover Symbols

```javascript
// Import taapi
import Taapi from 'taapi'; // See out main docs for Common JS usage

// Setup client with authentication
const taapi = new Taapi("<MY_SECRET>");

// Get all USDT pairs traded on Binance
taapi.getExchangeSymbols("crypto", "binance", "USDT").then( symbols => {
    console.log(symbols);
});

```

For more examples including Stocks & Forex, please visit our main documentation.

#### v1.4.0 Breaking Updates

As of version 1.4.0 of this NPM package is completely rewritten in TypeScript. It does not use CCXT anymore as the data-source, but TAAPI.IO's inhouse data source. To keep using the legacy CCXT client, please see the: taapi-ccxt package. Alternatively install this package version 1.3.1
