With this method, the TAAPI.IO Client does the heavy lifting of fetching candle data from the exchanges, and passing it on to the API. This means that it’s the client talking directly to the exchanges, and therefore, you need to watch your usage and stay under the exchange’s rate-limits. For more information on an exchange’s rate-limits, you need to find their technical documentation on their home page.
Pros
- Calculate TA for any crypto asset, for any market / symbol / time frame on 124 different crypto exchanges.
- Candles are pulled instantly from the exchanges, making TA indicator calculations real time.
- Use this client as a wrapper, if you use NodeJS.
Cons
- You need to watch the rate-limits for the exchange yourself.
- One extra step if you’re not using NodeJS (More info below).
Why do it like this?
It’s a tall order to fetch all symbols on all time frames for all the exchanges, and guarantee that this is reliable, and always up-to-date. However, we are working on exactly this, and this service is available for the crypto exchange “Binance”, via the Direct Integration Method.
Getting Started
Our client is NodeJS based (check the NPM Package on npmjs.com), and that can be used either as a wrapper or as a server. Below are some guides based on programming language and operation systems:
NodeJS
If you’re working with NodeJS, then things are very simple, as you already have NodeJS installed on your platform. Simply install our NPM Package (taapi), and you’re good to go:
Make sure you have your project setup, otherwise, create a new one:
- Create a new folder: mkdir myCryptoProject
- Enter that folder: cd myCryptoProject
- Init a new project: npm init
- Install TAAPI.IO npm package: npm i taapi
- Create your entry file: touch index.js
- Start up your favorite IDE, and paste the below into index.js
// Require taapi: npm i taapi --save
const taapi = require("taapi");
// Setup client with authentication
const client = taapi.client("MY_SECRET");
// Get the BTC/USDT RSI value on the 1 minute time frame from binance
client.getIndicator("rsi", "binance", "BTC/USDT", "1m").then(function(result) {
console.log("Result: ", result);
})
.catch(function(error){
console.log(error.message);
});
Be sure to check out the below required and optional parameters!
Other programming languages
To get started with anything but NodeJS, you need to install the taapi npm package and run it as a server. Don’t be scared if this is already getting too geeky. It really is fairly simple. Follow these steps (unix commands used):
- Visit NodeJS’s download page, download and install.
- Once installed, create a folder for the taapi local server: mkdir taapiServer and cd to this directory: cd taapiServer .
- Init a new NPM project: npm init (and follow the init steps)
- Install taapi: npm install taapi
- Create an empty index.js file: touch index.js
- Boot up your favorite editor and paste the below into the index.js file:
// Require taapi
const taapi = require("taapi");
// Setup client with authentication
const server = taapi.server("MY_SECRET");
// Define port - Optional and defaults to 4101
// server.setServerPort(3000);
// Start the server
server.start();
- Run the server: node index.js
- If you’re interested in a more in-depth NodeJS guide, then check out: https://www.pluralsight.com/guides/getting-started-with-nodejs
Your terminal should now display something like:
TAAPI.IO Local API Running on localhost:4101!
You’re now up and running and can use this server with your favorite programming language.
Hint: Use PM2 (Process Manager for NodeJS). It makes it easy to run the server as a background process.
- npm install pm2 -g // Install pm2 globally
- pm2 start index.js –name ‘taapi-server’ // Start the taapi server in the background
- pm2 status // Check the status
- pm2 log taapi-server // Check the log
- pm2 –help
PHP
// Define query
$query = http_build_query(array(
'indicator' => 'rsi',
'exchange' => 'binance',
'symbol' => 'BTC/USDT',
'interval' => '1h'
));
// Define endpoint. Change the port if you changed it when setting up the server
$url = "http://localhost:4101/indicator?{$query}";
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
// View result
print_r(json_decode($output));
Mandatory Parameters
Using this “Client” method requires at least the below parameters:
Parameter | Type | Description |
---|---|---|
indicator | String | The desired Indicator to calculate TA of. |
exchange | String | The exchange you want to calculate TA from: [binance, kucoin, …] |
symbol | String | Symbol names are always upper-case, with the coin separated by a forward slash and the market: COIN/MARKET. Example: ‘BTC/USDT’ Bitcoin to Tether, or LTC/BTC Litecoin to Bitcoin. |
interval | String | Interval or time frame: Binance have the following time frames or intervals: [“1m”, “3m”, “5m”, “15m”, “30m”, “1h”, “2h”, “4h”, “6h”, “8h”, “12h”, “1d”, “3d”, “1w”, “1M”]. |
Depending on the indicator you call, there may or may not be more mandatory parameters. Additionally, there may be several other optional paramters, also depending on the indicator. Please refer to the Indicators page for more information.
Optional Parameters
Below is a list of optional parameters that all the indicators will take:
Parameter | Type | |
---|---|---|
backtrack | Integer | This ‘backtrack’ parameter, removes candles from the data set, and thus calculates the indicator value, x amount of candles back. So, if you’re fetching the RSI on the hourly, and you want to know what the RSI was 5 hours ago, set backtrack=5. Default here is 0, and a max of 50. |
Supported Exchanges
[md_github token=123 url=https://github.com/ccxt/ccxt/blob/master/wiki/Exchange-Markets.md] [md_github token=a9e615f7bc6fa273ebf510be447291dfccd4e129 url=https://github.com/ccxt/ccxt/blob/master/wiki/Exchange-Markets.md]The good folks over at CCXT has done a fantastic job implementing all of these exchanges, for people to query and fetch data in a unified format. Please be sure to shoot them a donation!